From 3d4717c10603e29dfd4aced1567b86616243965c Mon Sep 17 00:00:00 2001 From: Piotr Laszczkowski Date: Fri, 9 Feb 2018 11:54:08 +0100 Subject: [PATCH 1/3] Feature/packaging angular (#49) * Change structure to angular component library, based on ng-packagr. * New schema based on generator-angular2-library. #48 * Huge changes in build process. yo-generator -> ng-packagr. #48 * Improvements for the test launcher. Changes in package.json files. #48 * Change: rename files. Settings are now inheritable. #48 * Adds tests for the main element. Removes unnecessary files. Removes unnecesary imports. #48 * Moves tests to separated files. Adds test component only for lib components. Default app component/module can be usefull to test lib on serve. #48 * Removed problematic base elements (components, service, module). Now everything is separated as a clear copy. After all, we should try again to use reusable elements. #48 * Now wrapper should works properly (locally too), with 'prod' and 'aot' flags. #48 * Fixes and changes for lint errors. #48 * Fix travis problem with 'browserNoActivityTimeout'. #48 * Expose wrappers under the scope. #48 --- .angular-cli.json | 83 + .gitignore | 120 +- .npmignore | 38 +- README.md | 4 +- bundles/index.umd.js | 72450 ---------------- config/helpers.js | 10 - config/karma-test-shim.js | 23 - config/karma.conf.js | 52 - config/webpack.production.js | 61 - config/webpack.test.js | 48 - dist/index.d.ts | 2 - dist/index.js | 2 - dist/index.metadata.json | 1 - dist/module.d.ts | 4 - dist/module.js | 42 - dist/module.metadata.json | 1 - dist/src/hot-column.component.d.ts | 129 - dist/src/hot-column.component.js | 425 - dist/src/hot-column.component.metadata.json | 1 - dist/src/hot-registerer.service.d.ts | 6 - dist/src/hot-registerer.service.js | 46 - dist/src/hot-registerer.service.metadata.json | 1 - dist/src/hot-settings.utils.d.ts | 5 - dist/src/hot-settings.utils.js | 129 - dist/src/hot-settings.utils.metadata.json | 1 - dist/src/hot-table.component.d.ts | 273 - dist/src/hot-table.component.js | 1052 - dist/src/hot-table.component.metadata.json | 1 - e2e/app.e2e-spec.ts | 14 + e2e/app.po.ts | 11 + e2e/tsconfig.e2e.json | 12 + index.ts | 2 - karma.conf.js | 59 +- lib/ce/.browserslistrc | 3 + lib/ce/package.json | 53 + lib/ce/src/hot-column.component.ts | 149 + lib/ce/src/hot-settings-resolver.service.ts | 105 + .../ce/src/hot-table-registerer.service.ts | 5 +- lib/ce/src/hot-table.component.ts | 378 + lib/ce/src/hot-table.module.ts | 27 + lib/ce/src/public_api.ts | 5 + lib/pro/.browserslistrc | 3 + lib/pro/package.json | 53 + {src => lib/pro/src}/hot-column.component.ts | 47 +- lib/pro/src/hot-settings-resolver.service.ts | 135 + lib/pro/src/hot-table-registerer.service.ts | 20 + {src => lib/pro/src}/hot-table.component.ts | 129 +- lib/pro/src/hot-table.module.ts | 27 + lib/pro/src/public_api.ts | 5 + module.ts | 24 - package-lock.json | 11768 ++- package.json | 127 +- protractor.conf.js | 28 + src/app/app.component.spec.ts | 22 + src/app/app.component.ts | 9 + src/app/app.module.ts | 18 + .../app/hot-column.component.spec.ts | 1089 +- .../app/hot-table.component.spec.ts | 2136 +- src/app/test.component.ts | 21 + src/assets/.gitkeep | 0 src/environments/environment.prod.ts | 3 + src/environments/environment.ts | 8 + src/favicon.ico | Bin 0 -> 5430 bytes src/hot-settings.utils.ts | 113 - src/index.html | 14 + src/main.ts | 11 + src/polyfills.ts | 72 + src/styles.css | 2 + src/test.ts | 32 + src/tsconfig.app.json | 24 + src/tsconfig.packages.json | 24 + src/tsconfig.spec.json | 24 + src/typings.d.ts | 5 + tests/01.test.component.spec.ts | 32 - tests/test.component.ts | 18 - tests/test.module.ts | 11 - tsconfig.bundles.json | 22 - tsconfig.json | 37 +- tslint.json | 15 +- webpack.config.js | 8 - 80 files changed, 13268 insertions(+), 78701 deletions(-) create mode 100644 .angular-cli.json delete mode 100644 bundles/index.umd.js delete mode 100644 config/helpers.js delete mode 100644 config/karma-test-shim.js delete mode 100644 config/karma.conf.js delete mode 100644 config/webpack.production.js delete mode 100644 config/webpack.test.js delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.metadata.json delete mode 100644 dist/module.d.ts delete mode 100644 dist/module.js delete mode 100644 dist/module.metadata.json delete mode 100644 dist/src/hot-column.component.d.ts delete mode 100644 dist/src/hot-column.component.js delete mode 100644 dist/src/hot-column.component.metadata.json delete mode 100644 dist/src/hot-registerer.service.d.ts delete mode 100644 dist/src/hot-registerer.service.js delete mode 100644 dist/src/hot-registerer.service.metadata.json delete mode 100644 dist/src/hot-settings.utils.d.ts delete mode 100644 dist/src/hot-settings.utils.js delete mode 100644 dist/src/hot-settings.utils.metadata.json delete mode 100644 dist/src/hot-table.component.d.ts delete mode 100644 dist/src/hot-table.component.js delete mode 100644 dist/src/hot-table.component.metadata.json create mode 100644 e2e/app.e2e-spec.ts create mode 100644 e2e/app.po.ts create mode 100644 e2e/tsconfig.e2e.json delete mode 100644 index.ts create mode 100644 lib/ce/.browserslistrc create mode 100644 lib/ce/package.json create mode 100644 lib/ce/src/hot-column.component.ts create mode 100644 lib/ce/src/hot-settings-resolver.service.ts rename src/hot-registerer.service.ts => lib/ce/src/hot-table-registerer.service.ts (82%) create mode 100644 lib/ce/src/hot-table.component.ts create mode 100644 lib/ce/src/hot-table.module.ts create mode 100644 lib/ce/src/public_api.ts create mode 100644 lib/pro/.browserslistrc create mode 100644 lib/pro/package.json rename {src => lib/pro/src}/hot-column.component.ts (95%) create mode 100644 lib/pro/src/hot-settings-resolver.service.ts create mode 100644 lib/pro/src/hot-table-registerer.service.ts rename {src => lib/pro/src}/hot-table.component.ts (90%) create mode 100644 lib/pro/src/hot-table.module.ts create mode 100644 lib/pro/src/public_api.ts delete mode 100644 module.ts create mode 100644 protractor.conf.js create mode 100644 src/app/app.component.spec.ts create mode 100644 src/app/app.component.ts create mode 100644 src/app/app.module.ts rename tests/03.hot-column.component.spec.ts => src/app/hot-column.component.spec.ts (72%) rename tests/02.hot-table.component.spec.ts => src/app/hot-table.component.spec.ts (62%) create mode 100644 src/app/test.component.ts create mode 100644 src/assets/.gitkeep create mode 100644 src/environments/environment.prod.ts create mode 100644 src/environments/environment.ts create mode 100644 src/favicon.ico delete mode 100644 src/hot-settings.utils.ts create mode 100644 src/index.html create mode 100644 src/main.ts create mode 100644 src/polyfills.ts create mode 100644 src/styles.css create mode 100644 src/test.ts create mode 100644 src/tsconfig.app.json create mode 100644 src/tsconfig.packages.json create mode 100644 src/tsconfig.spec.json create mode 100644 src/typings.d.ts delete mode 100644 tests/01.test.component.spec.ts delete mode 100644 tests/test.component.ts delete mode 100644 tests/test.module.ts delete mode 100644 tsconfig.bundles.json delete mode 100644 webpack.config.js diff --git a/.angular-cli.json b/.angular-cli.json new file mode 100644 index 0000000..8288610 --- /dev/null +++ b/.angular-cli.json @@ -0,0 +1,83 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "project": { + "name": "angular-handsontable" + }, + "apps": [ + { + "root": "src", + "name": "dev", + "outDir": "dist/app", + "assets": [ + "assets", + "favicon.ico" + ], + "index": "index.html", + "main": "main.ts", + "polyfills": "polyfills.ts", + "test": "test.ts", + "tsconfig": "tsconfig.app.json", + "testTsconfig": "tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.css" + ], + "scripts": [], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + } + }, + { + "root": "src", + "name": "packages", + "outDir": "dist/app", + "assets": [ + "assets", + "favicon.ico" + ], + "index": "index.html", + "main": "main.ts", + "polyfills": "polyfills.ts", + "test": "test.ts", + "tsconfig": "tsconfig.packages.json", + "testTsconfig": "tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.css" + ], + "scripts": [], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + } + } + ], + "e2e": { + "protractor": { + "config": "./protractor.conf.js" + } + }, + "lint": [ + { + "project": "src/tsconfig.app.json" + }, + { + "project": "src/tsconfig.spec.json" + }, + { + "project": "e2e/tsconfig.e2e.json" + } + ], + "test": { + "karma": { + "config": "./karma.conf.js" + } + }, + "defaults": { + "styleExt": "css", + "component": {} + } +} diff --git a/.gitignore b/.gitignore index 59054c4..d1f09a6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,58 +1,62 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. - -# compiled output -/tmp -/out-tsc - -# dependencies -/node_modules -/src/handsontable.css - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -.vscode/ -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json - -# misc -*.js -!dist/**/*.js -!config/* -!bundles/* -!karma.conf.js -!webpack.config.js -*.map -!make.js -/.sass-cache -/connect.lock -/coverage -/libpeerconnection.log -npm-debug.log -testem.log -/typings -*.metadata.json -!dist/**/*.metadata.json - -# e2e -/e2e/*.js -/e2e/*.map - -src/**/*.js -src/**/*.js.map - -tests/**/*.js -tests/**/*.js.map - -# System Files -.DS_Store -Thumbs.db +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +dist/ +.ng_build/ +/src/@my diff --git a/.npmignore b/.npmignore index 12b8e92..fdb7f4f 100644 --- a/.npmignore +++ b/.npmignore @@ -1,8 +1,34 @@ -./config -./tests -./tmp -.vscode -.github +# Node +node_modules/* +npm-debug.log +docs/* +# DO NOT IGNORE TYPESCRIPT FILES FOR NPM +# TypeScript +# *.js +# *.map +# *.d.ts + +# JetBrains +.idea +.project +.settings +.idea/* +*.iml + +# VS Code +.vscode/* + +# Windows +Thumbs.db +Desktop.ini + +# Mac .DS_Store +**/.DS_Store + +# Ngc generated files +**/*.ngfactory.ts -node_modules/ +# Library files +src/* +build/* diff --git a/README.md b/README.md index 744335e..500e021 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # angular-handsontable [![Build Status](https://travis-ci.org/handsontable/angular-handsontable.png?branch=master)](https://travis-ci.org/handsontable/angular-handsontable) -Official Angular 2+ module for Handsontable [Handsontable](https://github.com/handsontable/handsontable). +Official Angular 2-4 module for Handsontable [Handsontable](https://github.com/handsontable/handsontable). + +-> `Handsontable Pro` might not work with `angular-cli` newer than `1.1.0` ## Table of contents 1. [Documentation](https://handsontable.github.io/angular-handsontable/) diff --git a/bundles/index.umd.js b/bundles/index.umd.js deleted file mode 100644 index d263440..0000000 --- a/bundles/index.umd.js +++ /dev/null @@ -1,72450 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("@angular/core")); - else if(typeof define === 'function' && define.amd) - define(["@angular/core"], factory); - else if(typeof exports === 'object') - exports["angular-handsontable"] = factory(require("@angular/core")); - else - root["angular-handsontable"] = factory(root["@angular/core"]); -})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "/"; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 120); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(module) {//! moment.js -//! version : 2.18.1 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com - -;(function (global, factory) { - true ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - global.moment = factory() -}(this, (function () { 'use strict'; - -var hookCallback; - -function hooks () { - return hookCallback.apply(null, arguments); -} - -// This is done to register the method called with moment() -// without creating circular dependencies. -function setHookCallback (callback) { - hookCallback = callback; -} - -function isArray(input) { - return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; -} - -function isObject(input) { - // IE8 will treat undefined and null as object if it wasn't for - // input != null - return input != null && Object.prototype.toString.call(input) === '[object Object]'; -} - -function isObjectEmpty(obj) { - var k; - for (k in obj) { - // even if its not own property I'd still call it non-empty - return false; - } - return true; -} - -function isUndefined(input) { - return input === void 0; -} - -function isNumber(input) { - return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; -} - -function isDate(input) { - return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; -} - -function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; -} - -function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); -} - -function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } - - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } - - return a; -} - -function createUTC (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, true).utc(); -} - -function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso : false, - parsedDateParts : [], - meridiem : null, - rfc2822 : false, - weekdayMismatch : false - }; -} - -function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); - } - return m._pf; -} - -var some; -if (Array.prototype.some) { - some = Array.prototype.some; -} else { - some = function (fun) { - var t = Object(this); - var len = t.length >>> 0; - - for (var i = 0; i < len; i++) { - if (i in t && fun.call(this, t[i], i, t)) { - return true; - } - } - - return false; - }; -} - -var some$1 = some; - -function isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m); - var parsedParts = some$1.call(flags.parsedDateParts, function (i) { - return i != null; - }); - var isNowValid = !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated && - (!flags.meridiem || (flags.meridiem && parsedParts)); - - if (m._strict) { - isNowValid = isNowValid && - flags.charsLeftOver === 0 && - flags.unusedTokens.length === 0 && - flags.bigHour === undefined; - } - - if (Object.isFrozen == null || !Object.isFrozen(m)) { - m._isValid = isNowValid; - } - else { - return isNowValid; - } - } - return m._isValid; -} - -function createInvalid (flags) { - var m = createUTC(NaN); - if (flags != null) { - extend(getParsingFlags(m), flags); - } - else { - getParsingFlags(m).userInvalidated = true; - } - - return m; -} - -// Plugins that add properties should also add the key here (null value), -// so we can properly clone ourselves. -var momentProperties = hooks.momentProperties = []; - -function copyConfig(to, from) { - var i, prop, val; - - if (!isUndefined(from._isAMomentObject)) { - to._isAMomentObject = from._isAMomentObject; - } - if (!isUndefined(from._i)) { - to._i = from._i; - } - if (!isUndefined(from._f)) { - to._f = from._f; - } - if (!isUndefined(from._l)) { - to._l = from._l; - } - if (!isUndefined(from._strict)) { - to._strict = from._strict; - } - if (!isUndefined(from._tzm)) { - to._tzm = from._tzm; - } - if (!isUndefined(from._isUTC)) { - to._isUTC = from._isUTC; - } - if (!isUndefined(from._offset)) { - to._offset = from._offset; - } - if (!isUndefined(from._pf)) { - to._pf = getParsingFlags(from); - } - if (!isUndefined(from._locale)) { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i = 0; i < momentProperties.length; i++) { - prop = momentProperties[i]; - val = from[prop]; - if (!isUndefined(val)) { - to[prop] = val; - } - } - } - - return to; -} - -var updateInProgress = false; - -// Moment prototype object -function Moment(config) { - copyConfig(this, config); - this._d = new Date(config._d != null ? config._d.getTime() : NaN); - if (!this.isValid()) { - this._d = new Date(NaN); - } - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - hooks.updateOffset(this); - updateInProgress = false; - } -} - -function isMoment (obj) { - return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); -} - -function absFloor (number) { - if (number < 0) { - // -0 -> 0 - return Math.ceil(number) || 0; - } else { - return Math.floor(number); - } -} - -function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } - - return value; -} - -// compare two arrays, return the number of differences -function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; -} - -function warn(msg) { - if (hooks.suppressDeprecationWarnings === false && - (typeof console !== 'undefined') && console.warn) { - console.warn('Deprecation warning: ' + msg); - } -} - -function deprecate(msg, fn) { - var firstTime = true; - - return extend(function () { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(null, msg); - } - if (firstTime) { - var args = []; - var arg; - for (var i = 0; i < arguments.length; i++) { - arg = ''; - if (typeof arguments[i] === 'object') { - arg += '\n[' + i + '] '; - for (var key in arguments[0]) { - arg += key + ': ' + arguments[0][key] + ', '; - } - arg = arg.slice(0, -2); // Remove trailing comma and space - } else { - arg = arguments[i]; - } - args.push(arg); - } - warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); -} - -var deprecations = {}; - -function deprecateSimple(name, msg) { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(name, msg); - } - if (!deprecations[name]) { - warn(msg); - deprecations[name] = true; - } -} - -hooks.suppressDeprecationWarnings = false; -hooks.deprecationHandler = null; - -function isFunction(input) { - return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; -} - -function set (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (isFunction(prop)) { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - this._config = config; - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. - // TODO: Remove "ordinalParse" fallback in next major release. - this._dayOfMonthOrdinalParseLenient = new RegExp( - (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + - '|' + (/\d{1,2}/).source); -} - -function mergeConfigs(parentConfig, childConfig) { - var res = extend({}, parentConfig), prop; - for (prop in childConfig) { - if (hasOwnProp(childConfig, prop)) { - if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { - res[prop] = {}; - extend(res[prop], parentConfig[prop]); - extend(res[prop], childConfig[prop]); - } else if (childConfig[prop] != null) { - res[prop] = childConfig[prop]; - } else { - delete res[prop]; - } - } - } - for (prop in parentConfig) { - if (hasOwnProp(parentConfig, prop) && - !hasOwnProp(childConfig, prop) && - isObject(parentConfig[prop])) { - // make sure changes to properties don't modify parent config - res[prop] = extend({}, res[prop]); - } - } - return res; -} - -function Locale(config) { - if (config != null) { - this.set(config); - } -} - -var keys; - -if (Object.keys) { - keys = Object.keys; -} else { - keys = function (obj) { - var i, res = []; - for (i in obj) { - if (hasOwnProp(obj, i)) { - res.push(i); - } - } - return res; - }; -} - -var keys$1 = keys; - -var defaultCalendar = { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' -}; - -function calendar (key, mom, now) { - var output = this._calendar[key] || this._calendar['sameElse']; - return isFunction(output) ? output.call(mom, now) : output; -} - -var defaultLongDateFormat = { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY h:mm A', - LLLL : 'dddd, MMMM D, YYYY h:mm A' -}; - -function longDateFormat (key) { - var format = this._longDateFormat[key], - formatUpper = this._longDateFormat[key.toUpperCase()]; - - if (format || !formatUpper) { - return format; - } - - this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - - return this._longDateFormat[key]; -} - -var defaultInvalidDate = 'Invalid date'; - -function invalidDate () { - return this._invalidDate; -} - -var defaultOrdinal = '%d'; -var defaultDayOfMonthOrdinalParse = /\d{1,2}/; - -function ordinal (number) { - return this._ordinal.replace('%d', number); -} - -var defaultRelativeTime = { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - ss : '%d seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' -}; - -function relativeTime (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (isFunction(output)) ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); -} - -function pastFuture (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return isFunction(format) ? format(output) : format.replace(/%s/i, output); -} - -var aliases = {}; - -function addUnitAlias (unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; -} - -function normalizeUnits(units) { - return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; -} - -function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - - return normalizedInput; -} - -var priorities = {}; - -function addUnitPriority(unit, priority) { - priorities[unit] = priority; -} - -function getPrioritizedUnits(unitsObj) { - var units = []; - for (var u in unitsObj) { - units.push({unit: u, priority: priorities[u]}); - } - units.sort(function (a, b) { - return a.priority - b.priority; - }); - return units; -} - -function makeGetSet (unit, keepTime) { - return function (value) { - if (value != null) { - set$1(this, unit, value); - hooks.updateOffset(this, keepTime); - return this; - } else { - return get(this, unit); - } - }; -} - -function get (mom, unit) { - return mom.isValid() ? - mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; -} - -function set$1 (mom, unit, value) { - if (mom.isValid()) { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } -} - -// MOMENTS - -function stringGet (units) { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](); - } - return this; -} - - -function stringSet (units, value) { - if (typeof units === 'object') { - units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units); - for (var i = 0; i < prioritized.length; i++) { - this[prioritized[i].unit](units[prioritized[i].unit]); - } - } else { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](value); - } - } - return this; -} - -function zeroFill(number, targetLength, forceSign) { - var absNumber = '' + Math.abs(number), - zerosToFill = targetLength - absNumber.length, - sign = number >= 0; - return (sign ? (forceSign ? '+' : '') : '-') + - Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; -} - -var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; - -var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; - -var formatFunctions = {}; - -var formatTokenFunctions = {}; - -// token: 'M' -// padded: ['MM', 2] -// ordinal: 'Mo' -// callback: function () { this.month() + 1 } -function addFormatToken (token, padded, ordinal, callback) { - var func = callback; - if (typeof callback === 'string') { - func = function () { - return this[callback](); - }; - } - if (token) { - formatTokenFunctions[token] = func; - } - if (padded) { - formatTokenFunctions[padded[0]] = function () { - return zeroFill(func.apply(this, arguments), padded[1], padded[2]); - }; - } - if (ordinal) { - formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal(func.apply(this, arguments), token); - }; - } -} - -function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); -} - -function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; - - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } - - return function (mom) { - var output = '', i; - for (i = 0; i < length; i++) { - output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; - } - return output; - }; -} - -// format date using native date object -function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } - - format = expandFormat(format, m.localeData()); - formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); - - return formatFunctions[format](m); -} - -function expandFormat(format, locale) { - var i = 5; - - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } - - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } - - return format; -} - -var match1 = /\d/; // 0 - 9 -var match2 = /\d\d/; // 00 - 99 -var match3 = /\d{3}/; // 000 - 999 -var match4 = /\d{4}/; // 0000 - 9999 -var match6 = /[+-]?\d{6}/; // -999999 - 999999 -var match1to2 = /\d\d?/; // 0 - 99 -var match3to4 = /\d\d\d\d?/; // 999 - 9999 -var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 -var match1to3 = /\d{1,3}/; // 0 - 999 -var match1to4 = /\d{1,4}/; // 0 - 9999 -var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 - -var matchUnsigned = /\d+/; // 0 - inf -var matchSigned = /[+-]?\d+/; // -inf - inf - -var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z -var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z - -var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 - -// any word (or two) characters or numbers including two/three word month in arabic. -// includes scottish gaelic two word and hyphenated months -var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; - - -var regexes = {}; - -function addRegexToken (token, regex, strictRegex) { - regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { - return (isStrict && strictRegex) ? strictRegex : regex; - }; -} - -function getParseRegexForToken (token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); - } - - return regexes[token](config._strict, config._locale); -} - -// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript -function unescapeFormat(s) { - return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - })); -} - -function regexEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); -} - -var tokens = {}; - -function addParseToken (token, callback) { - var i, func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (isNumber(callback)) { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } -} - -function addWeekParseToken (token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); -} - -function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); - } -} - -var YEAR = 0; -var MONTH = 1; -var DATE = 2; -var HOUR = 3; -var MINUTE = 4; -var SECOND = 5; -var MILLISECOND = 6; -var WEEK = 7; -var WEEKDAY = 8; - -var indexOf; - -if (Array.prototype.indexOf) { - indexOf = Array.prototype.indexOf; -} else { - indexOf = function (o) { - // I know - var i; - for (i = 0; i < this.length; ++i) { - if (this[i] === o) { - return i; - } - } - return -1; - }; -} - -var indexOf$1 = indexOf; - -function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); -} - -// FORMATTING - -addFormatToken('M', ['MM', 2], 'Mo', function () { - return this.month() + 1; -}); - -addFormatToken('MMM', 0, 0, function (format) { - return this.localeData().monthsShort(this, format); -}); - -addFormatToken('MMMM', 0, 0, function (format) { - return this.localeData().months(this, format); -}); - -// ALIASES - -addUnitAlias('month', 'M'); - -// PRIORITY - -addUnitPriority('month', 8); - -// PARSING - -addRegexToken('M', match1to2); -addRegexToken('MM', match1to2, match2); -addRegexToken('MMM', function (isStrict, locale) { - return locale.monthsShortRegex(isStrict); -}); -addRegexToken('MMMM', function (isStrict, locale) { - return locale.monthsRegex(isStrict); -}); - -addParseToken(['M', 'MM'], function (input, array) { - array[MONTH] = toInt(input) - 1; -}); - -addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { - var month = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (month != null) { - array[MONTH] = month; - } else { - getParsingFlags(config).invalidMonth = input; - } -}); - -// LOCALES - -var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; -var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); -function localeMonths (m, format) { - if (!m) { - return isArray(this._months) ? this._months : - this._months['standalone']; - } - return isArray(this._months) ? this._months[m.month()] : - this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; -} - -var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); -function localeMonthsShort (m, format) { - if (!m) { - return isArray(this._monthsShort) ? this._monthsShort : - this._monthsShort['standalone']; - } - return isArray(this._monthsShort) ? this._monthsShort[m.month()] : - this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; -} - -function handleStrictParse(monthName, format, strict) { - var i, ii, mom, llc = monthName.toLocaleLowerCase(); - if (!this._monthsParse) { - // this is not used - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - for (i = 0; i < 12; ++i) { - mom = createUTC([2000, i]); - this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); - this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); - } - } - - if (strict) { - if (format === 'MMM') { - ii = indexOf$1.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf$1.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'MMM') { - ii = indexOf$1.call(this._shortMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf$1.call(this._longMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } -} - -function localeMonthsParse (monthName, format, strict) { - var i, mom, regex; - - if (this._monthsParseExact) { - return handleStrictParse.call(this, monthName, format, strict); - } - - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } - - // TODO: add sorting - // Sorting makes sure if one month (or abbr) is a prefix of another - // see sorting in computeMonthsParse - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } -} - -// MOMENTS - -function setMonth (mom, value) { - var dayOfMonth; - - if (!mom.isValid()) { - // No op - return mom; - } - - if (typeof value === 'string') { - if (/^\d+$/.test(value)) { - value = toInt(value); - } else { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (!isNumber(value)) { - return mom; - } - } - } - - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; -} - -function getSetMonth (value) { - if (value != null) { - setMonth(this, value); - hooks.updateOffset(this, true); - return this; - } else { - return get(this, 'Month'); - } -} - -function getDaysInMonth () { - return daysInMonth(this.year(), this.month()); -} - -var defaultMonthsShortRegex = matchWord; -function monthsShortRegex (isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsShortStrictRegex; - } else { - return this._monthsShortRegex; - } - } else { - if (!hasOwnProp(this, '_monthsShortRegex')) { - this._monthsShortRegex = defaultMonthsShortRegex; - } - return this._monthsShortStrictRegex && isStrict ? - this._monthsShortStrictRegex : this._monthsShortRegex; - } -} - -var defaultMonthsRegex = matchWord; -function monthsRegex (isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsStrictRegex; - } else { - return this._monthsRegex; - } - } else { - if (!hasOwnProp(this, '_monthsRegex')) { - this._monthsRegex = defaultMonthsRegex; - } - return this._monthsStrictRegex && isStrict ? - this._monthsStrictRegex : this._monthsRegex; - } -} - -function computeMonthsParse () { - function cmpLenRev(a, b) { - return b.length - a.length; - } - - var shortPieces = [], longPieces = [], mixedPieces = [], - i, mom; - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - shortPieces.push(this.monthsShort(mom, '')); - longPieces.push(this.months(mom, '')); - mixedPieces.push(this.months(mom, '')); - mixedPieces.push(this.monthsShort(mom, '')); - } - // Sorting makes sure if one month (or abbr) is a prefix of another it - // will match the longer piece. - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - for (i = 0; i < 12; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - } - for (i = 0; i < 24; i++) { - mixedPieces[i] = regexEscape(mixedPieces[i]); - } - - this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._monthsShortRegex = this._monthsRegex; - this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); -} - -// FORMATTING - -addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? '' + y : '+' + y; -}); - -addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; -}); - -addFormatToken(0, ['YYYY', 4], 0, 'year'); -addFormatToken(0, ['YYYYY', 5], 0, 'year'); -addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - -// ALIASES - -addUnitAlias('year', 'y'); - -// PRIORITIES - -addUnitPriority('year', 1); - -// PARSING - -addRegexToken('Y', matchSigned); -addRegexToken('YY', match1to2, match2); -addRegexToken('YYYY', match1to4, match4); -addRegexToken('YYYYY', match1to6, match6); -addRegexToken('YYYYYY', match1to6, match6); - -addParseToken(['YYYYY', 'YYYYYY'], YEAR); -addParseToken('YYYY', function (input, array) { - array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); -}); -addParseToken('YY', function (input, array) { - array[YEAR] = hooks.parseTwoDigitYear(input); -}); -addParseToken('Y', function (input, array) { - array[YEAR] = parseInt(input, 10); -}); - -// HELPERS - -function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; -} - -function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; -} - -// HOOKS - -hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); -}; - -// MOMENTS - -var getSetYear = makeGetSet('FullYear', true); - -function getIsLeapYear () { - return isLeapYear(this.year()); -} - -function createDate (y, m, d, h, M, s, ms) { - // can't just apply() to create a date: - // https://stackoverflow.com/q/181348 - var date = new Date(y, m, d, h, M, s, ms); - - // the date constructor remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { - date.setFullYear(y); - } - return date; -} - -function createUTCDate (y) { - var date = new Date(Date.UTC.apply(null, arguments)); - - // the Date.UTC function remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { - date.setUTCFullYear(y); - } - return date; -} - -// start-of-first-week - start-of-year -function firstWeekOffset(year, dow, doy) { - var // first-week day -- which january is always in the first week (4 for iso, 1 for other) - fwd = 7 + dow - doy, - // first-week day local weekday -- which local weekday is fwd - fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; - - return -fwdlw + fwd - 1; -} - -// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday -function dayOfYearFromWeeks(year, week, weekday, dow, doy) { - var localWeekday = (7 + weekday - dow) % 7, - weekOffset = firstWeekOffset(year, dow, doy), - dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, - resYear, resDayOfYear; - - if (dayOfYear <= 0) { - resYear = year - 1; - resDayOfYear = daysInYear(resYear) + dayOfYear; - } else if (dayOfYear > daysInYear(year)) { - resYear = year + 1; - resDayOfYear = dayOfYear - daysInYear(year); - } else { - resYear = year; - resDayOfYear = dayOfYear; - } - - return { - year: resYear, - dayOfYear: resDayOfYear - }; -} - -function weekOfYear(mom, dow, doy) { - var weekOffset = firstWeekOffset(mom.year(), dow, doy), - week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, - resWeek, resYear; - - if (week < 1) { - resYear = mom.year() - 1; - resWeek = week + weeksInYear(resYear, dow, doy); - } else if (week > weeksInYear(mom.year(), dow, doy)) { - resWeek = week - weeksInYear(mom.year(), dow, doy); - resYear = mom.year() + 1; - } else { - resYear = mom.year(); - resWeek = week; - } - - return { - week: resWeek, - year: resYear - }; -} - -function weeksInYear(year, dow, doy) { - var weekOffset = firstWeekOffset(year, dow, doy), - weekOffsetNext = firstWeekOffset(year + 1, dow, doy); - return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; -} - -// FORMATTING - -addFormatToken('w', ['ww', 2], 'wo', 'week'); -addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - -// ALIASES - -addUnitAlias('week', 'w'); -addUnitAlias('isoWeek', 'W'); - -// PRIORITIES - -addUnitPriority('week', 5); -addUnitPriority('isoWeek', 5); - -// PARSING - -addRegexToken('w', match1to2); -addRegexToken('ww', match1to2, match2); -addRegexToken('W', match1to2); -addRegexToken('WW', match1to2, match2); - -addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { - week[token.substr(0, 1)] = toInt(input); -}); - -// HELPERS - -// LOCALES - -function localeWeek (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; -} - -var defaultLocaleWeek = { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. -}; - -function localeFirstDayOfWeek () { - return this._week.dow; -} - -function localeFirstDayOfYear () { - return this._week.doy; -} - -// MOMENTS - -function getSetWeek (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); -} - -function getSetISOWeek (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); -} - -// FORMATTING - -addFormatToken('d', 0, 'do', 'day'); - -addFormatToken('dd', 0, 0, function (format) { - return this.localeData().weekdaysMin(this, format); -}); - -addFormatToken('ddd', 0, 0, function (format) { - return this.localeData().weekdaysShort(this, format); -}); - -addFormatToken('dddd', 0, 0, function (format) { - return this.localeData().weekdays(this, format); -}); - -addFormatToken('e', 0, 0, 'weekday'); -addFormatToken('E', 0, 0, 'isoWeekday'); - -// ALIASES - -addUnitAlias('day', 'd'); -addUnitAlias('weekday', 'e'); -addUnitAlias('isoWeekday', 'E'); - -// PRIORITY -addUnitPriority('day', 11); -addUnitPriority('weekday', 11); -addUnitPriority('isoWeekday', 11); - -// PARSING - -addRegexToken('d', match1to2); -addRegexToken('e', match1to2); -addRegexToken('E', match1to2); -addRegexToken('dd', function (isStrict, locale) { - return locale.weekdaysMinRegex(isStrict); -}); -addRegexToken('ddd', function (isStrict, locale) { - return locale.weekdaysShortRegex(isStrict); -}); -addRegexToken('dddd', function (isStrict, locale) { - return locale.weekdaysRegex(isStrict); -}); - -addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { - var weekday = config._locale.weekdaysParse(input, token, config._strict); - // if we didn't get a weekday name, mark the date as invalid - if (weekday != null) { - week.d = weekday; - } else { - getParsingFlags(config).invalidWeekday = input; - } -}); - -addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { - week[token] = toInt(input); -}); - -// HELPERS - -function parseWeekday(input, locale) { - if (typeof input !== 'string') { - return input; - } - - if (!isNaN(input)) { - return parseInt(input, 10); - } - - input = locale.weekdaysParse(input); - if (typeof input === 'number') { - return input; - } - - return null; -} - -function parseIsoWeekday(input, locale) { - if (typeof input === 'string') { - return locale.weekdaysParse(input) % 7 || 7; - } - return isNaN(input) ? null : input; -} - -// LOCALES - -var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); -function localeWeekdays (m, format) { - if (!m) { - return isArray(this._weekdays) ? this._weekdays : - this._weekdays['standalone']; - } - return isArray(this._weekdays) ? this._weekdays[m.day()] : - this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; -} - -var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); -function localeWeekdaysShort (m) { - return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; -} - -var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); -function localeWeekdaysMin (m) { - return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; -} - -function handleStrictParse$1(weekdayName, format, strict) { - var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._shortWeekdaysParse = []; - this._minWeekdaysParse = []; - - for (i = 0; i < 7; ++i) { - mom = createUTC([2000, 1]).day(i); - this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); - this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); - this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); - } - } - - if (strict) { - if (format === 'dddd') { - ii = indexOf$1.call(this._weekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf$1.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf$1.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'dddd') { - ii = indexOf$1.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf$1.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf$1.call(this._minWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } -} - -function localeWeekdaysParse (weekdayName, format, strict) { - var i, mom, regex; - - if (this._weekdaysParseExact) { - return handleStrictParse$1.call(this, weekdayName, format, strict); - } - - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._minWeekdaysParse = []; - this._shortWeekdaysParse = []; - this._fullWeekdaysParse = []; - } - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - - mom = createUTC([2000, 1]).day(i); - if (strict && !this._fullWeekdaysParse[i]) { - this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); - this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); - this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); - } - if (!this._weekdaysParse[i]) { - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } -} - -// MOMENTS - -function getSetDayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } -} - -function getSetLocaleDayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); -} - -function getSetISODayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - - if (input != null) { - var weekday = parseIsoWeekday(input, this.localeData()); - return this.day(this.day() % 7 ? weekday : weekday - 7); - } else { - return this.day() || 7; - } -} - -var defaultWeekdaysRegex = matchWord; -function weekdaysRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysStrictRegex; - } else { - return this._weekdaysRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysRegex')) { - this._weekdaysRegex = defaultWeekdaysRegex; - } - return this._weekdaysStrictRegex && isStrict ? - this._weekdaysStrictRegex : this._weekdaysRegex; - } -} - -var defaultWeekdaysShortRegex = matchWord; -function weekdaysShortRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysShortStrictRegex; - } else { - return this._weekdaysShortRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysShortRegex')) { - this._weekdaysShortRegex = defaultWeekdaysShortRegex; - } - return this._weekdaysShortStrictRegex && isStrict ? - this._weekdaysShortStrictRegex : this._weekdaysShortRegex; - } -} - -var defaultWeekdaysMinRegex = matchWord; -function weekdaysMinRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysMinStrictRegex; - } else { - return this._weekdaysMinRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysMinRegex')) { - this._weekdaysMinRegex = defaultWeekdaysMinRegex; - } - return this._weekdaysMinStrictRegex && isStrict ? - this._weekdaysMinStrictRegex : this._weekdaysMinRegex; - } -} - - -function computeWeekdaysParse () { - function cmpLenRev(a, b) { - return b.length - a.length; - } - - var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], - i, mom, minp, shortp, longp; - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, 1]).day(i); - minp = this.weekdaysMin(mom, ''); - shortp = this.weekdaysShort(mom, ''); - longp = this.weekdays(mom, ''); - minPieces.push(minp); - shortPieces.push(shortp); - longPieces.push(longp); - mixedPieces.push(minp); - mixedPieces.push(shortp); - mixedPieces.push(longp); - } - // Sorting makes sure if one weekday (or abbr) is a prefix of another it - // will match the longer piece. - minPieces.sort(cmpLenRev); - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - for (i = 0; i < 7; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - mixedPieces[i] = regexEscape(mixedPieces[i]); - } - - this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._weekdaysShortRegex = this._weekdaysRegex; - this._weekdaysMinRegex = this._weekdaysRegex; - - this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); - this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); -} - -// FORMATTING - -function hFormat() { - return this.hours() % 12 || 12; -} - -function kFormat() { - return this.hours() || 24; -} - -addFormatToken('H', ['HH', 2], 0, 'hour'); -addFormatToken('h', ['hh', 2], 0, hFormat); -addFormatToken('k', ['kk', 2], 0, kFormat); - -addFormatToken('hmm', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); -}); - -addFormatToken('hmmss', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); -}); - -addFormatToken('Hmm', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2); -}); - -addFormatToken('Hmmss', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); -}); - -function meridiem (token, lowercase) { - addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); - }); -} - -meridiem('a', true); -meridiem('A', false); - -// ALIASES - -addUnitAlias('hour', 'h'); - -// PRIORITY -addUnitPriority('hour', 13); - -// PARSING - -function matchMeridiem (isStrict, locale) { - return locale._meridiemParse; -} - -addRegexToken('a', matchMeridiem); -addRegexToken('A', matchMeridiem); -addRegexToken('H', match1to2); -addRegexToken('h', match1to2); -addRegexToken('k', match1to2); -addRegexToken('HH', match1to2, match2); -addRegexToken('hh', match1to2, match2); -addRegexToken('kk', match1to2, match2); - -addRegexToken('hmm', match3to4); -addRegexToken('hmmss', match5to6); -addRegexToken('Hmm', match3to4); -addRegexToken('Hmmss', match5to6); - -addParseToken(['H', 'HH'], HOUR); -addParseToken(['k', 'kk'], function (input, array, config) { - var kInput = toInt(input); - array[HOUR] = kInput === 24 ? 0 : kInput; -}); -addParseToken(['a', 'A'], function (input, array, config) { - config._isPm = config._locale.isPM(input); - config._meridiem = input; -}); -addParseToken(['h', 'hh'], function (input, array, config) { - array[HOUR] = toInt(input); - getParsingFlags(config).bigHour = true; -}); -addParseToken('hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - getParsingFlags(config).bigHour = true; -}); -addParseToken('hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - getParsingFlags(config).bigHour = true; -}); -addParseToken('Hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); -}); -addParseToken('Hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); -}); - -// LOCALES - -function localeIsPM (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); -} - -var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; -function localeMeridiem (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } -} - - -// MOMENTS - -// Setting the hour should keep the time, because the user explicitly -// specified which hour he wants. So trying to maintain the same hour (in -// a new timezone) makes sense. Adding/subtracting hours does not follow -// this rule. -var getSetHour = makeGetSet('Hours', true); - -// months -// week -// weekdays -// meridiem -var baseConfig = { - calendar: defaultCalendar, - longDateFormat: defaultLongDateFormat, - invalidDate: defaultInvalidDate, - ordinal: defaultOrdinal, - dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, - relativeTime: defaultRelativeTime, - - months: defaultLocaleMonths, - monthsShort: defaultLocaleMonthsShort, - - week: defaultLocaleWeek, - - weekdays: defaultLocaleWeekdays, - weekdaysMin: defaultLocaleWeekdaysMin, - weekdaysShort: defaultLocaleWeekdaysShort, - - meridiemParse: defaultLocaleMeridiemParse -}; - -// internal storage for locale config files -var locales = {}; -var localeFamilies = {}; -var globalLocale; - -function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; -} - -// pick the locale from the array -// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each -// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root -function chooseLocale(names) { - var i = 0, j, next, locale, split; - - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; -} - -function loadLocale(name) { - var oldLocale = null; - // TODO: Find a better way to register and load all the locales in Node - if (!locales[name] && (typeof module !== 'undefined') && - module && module.exports) { - try { - oldLocale = globalLocale._abbr; - __webpack_require__(124)("./" + name); - // because defineLocale currently also sets the global locale, we - // want to undo that for lazy loaded locales - getSetGlobalLocale(oldLocale); - } catch (e) { } - } - return locales[name]; -} - -// This function will load locale and then set the global locale. If -// no arguments are passed in, it will simply return the current global -// locale key. -function getSetGlobalLocale (key, values) { - var data; - if (key) { - if (isUndefined(values)) { - data = getLocale(key); - } - else { - data = defineLocale(key, values); - } - - if (data) { - // moment.duration._locale = moment._locale = data; - globalLocale = data; - } - } - - return globalLocale._abbr; -} - -function defineLocale (name, config) { - if (config !== null) { - var parentConfig = baseConfig; - config.abbr = name; - if (locales[name] != null) { - deprecateSimple('defineLocaleOverride', - 'use moment.updateLocale(localeName, config) to change ' + - 'an existing locale. moment.defineLocale(localeName, ' + - 'config) should only be used for creating a new locale ' + - 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); - parentConfig = locales[name]._config; - } else if (config.parentLocale != null) { - if (locales[config.parentLocale] != null) { - parentConfig = locales[config.parentLocale]._config; - } else { - if (!localeFamilies[config.parentLocale]) { - localeFamilies[config.parentLocale] = []; - } - localeFamilies[config.parentLocale].push({ - name: name, - config: config - }); - return null; - } - } - locales[name] = new Locale(mergeConfigs(parentConfig, config)); - - if (localeFamilies[name]) { - localeFamilies[name].forEach(function (x) { - defineLocale(x.name, x.config); - }); - } - - // backwards compat for now: also set the locale - // make sure we set the locale AFTER all child locales have been - // created, so we won't end up with the child locale set. - getSetGlobalLocale(name); - - - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } -} - -function updateLocale(name, config) { - if (config != null) { - var locale, parentConfig = baseConfig; - // MERGE - if (locales[name] != null) { - parentConfig = locales[name]._config; - } - config = mergeConfigs(parentConfig, config); - locale = new Locale(config); - locale.parentLocale = locales[name]; - locales[name] = locale; - - // backwards compat for now: also set the locale - getSetGlobalLocale(name); - } else { - // pass null for config to unupdate, useful for tests - if (locales[name] != null) { - if (locales[name].parentLocale != null) { - locales[name] = locales[name].parentLocale; - } else if (locales[name] != null) { - delete locales[name]; - } - } - } - return locales[name]; -} - -// returns locale data -function getLocale (key) { - var locale; - - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } - - if (!key) { - return globalLocale; - } - - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } - - return chooseLocale(key); -} - -function listLocales() { - return keys$1(locales); -} - -function checkOverflow (m) { - var overflow; - var a = m._a; - - if (a && getParsingFlags(m).overflow === -2) { - overflow = - a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : - a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : - a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : - a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : - a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : - a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : - -1; - - if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } - if (getParsingFlags(m)._overflowWeeks && overflow === -1) { - overflow = WEEK; - } - if (getParsingFlags(m)._overflowWeekday && overflow === -1) { - overflow = WEEKDAY; - } - - getParsingFlags(m).overflow = overflow; - } - - return m; -} - -// iso 8601 regex -// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) -var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; -var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - -var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; - -var isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], - ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], - ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], - ['GGGG-[W]WW', /\d{4}-W\d\d/, false], - ['YYYY-DDD', /\d{4}-\d{3}/], - ['YYYY-MM', /\d{4}-\d\d/, false], - ['YYYYYYMMDD', /[+-]\d{10}/], - ['YYYYMMDD', /\d{8}/], - // YYYYMM is NOT allowed by the standard - ['GGGG[W]WWE', /\d{4}W\d{3}/], - ['GGGG[W]WW', /\d{4}W\d{2}/, false], - ['YYYYDDD', /\d{7}/] -]; - -// iso time formats and regexes -var isoTimes = [ - ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], - ['HH:mm:ss', /\d\d:\d\d:\d\d/], - ['HH:mm', /\d\d:\d\d/], - ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], - ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], - ['HHmmss', /\d\d\d\d\d\d/], - ['HHmm', /\d\d\d\d/], - ['HH', /\d\d/] -]; - -var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; - -// date from iso format -function configFromISO(config) { - var i, l, - string = config._i, - match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), - allowTime, dateFormat, timeFormat, tzFormat; - - if (match) { - getParsingFlags(config).iso = true; - - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(match[1])) { - dateFormat = isoDates[i][0]; - allowTime = isoDates[i][2] !== false; - break; - } - } - if (dateFormat == null) { - config._isValid = false; - return; - } - if (match[3]) { - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(match[3])) { - // match[2] should be 'T' or space - timeFormat = (match[2] || ' ') + isoTimes[i][0]; - break; - } - } - if (timeFormat == null) { - config._isValid = false; - return; - } - } - if (!allowTime && timeFormat != null) { - config._isValid = false; - return; - } - if (match[4]) { - if (tzRegex.exec(match[4])) { - tzFormat = 'Z'; - } else { - config._isValid = false; - return; - } - } - config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); - configFromStringAndFormat(config); - } else { - config._isValid = false; - } -} - -// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 -var basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/; - -// date and time from ref 2822 format -function configFromRFC2822(config) { - var string, match, dayFormat, - dateFormat, timeFormat, tzFormat; - var timezones = { - ' GMT': ' +0000', - ' EDT': ' -0400', - ' EST': ' -0500', - ' CDT': ' -0500', - ' CST': ' -0600', - ' MDT': ' -0600', - ' MST': ' -0700', - ' PDT': ' -0700', - ' PST': ' -0800' - }; - var military = 'YXWVUTSRQPONZABCDEFGHIKLM'; - var timezone, timezoneIndex; - - string = config._i - .replace(/\([^\)]*\)|[\n\t]/g, ' ') // Remove comments and folding whitespace - .replace(/(\s\s+)/g, ' ') // Replace multiple-spaces with a single space - .replace(/^\s|\s$/g, ''); // Remove leading and trailing spaces - match = basicRfcRegex.exec(string); - - if (match) { - dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : ''; - dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY '); - timeFormat = 'HH:mm' + (match[4] ? ':ss' : ''); - - // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. - if (match[1]) { // day of week given - var momentDate = new Date(match[2]); - var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()]; - - if (match[1].substr(0,3) !== momentDay) { - getParsingFlags(config).weekdayMismatch = true; - config._isValid = false; - return; - } - } - - switch (match[5].length) { - case 2: // military - if (timezoneIndex === 0) { - timezone = ' +0000'; - } else { - timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12; - timezone = ((timezoneIndex < 0) ? ' -' : ' +') + - (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00'; - } - break; - case 4: // Zone - timezone = timezones[match[5]]; - break; - default: // UT or +/-9999 - timezone = timezones[' GMT']; - } - match[5] = timezone; - config._i = match.splice(1).join(''); - tzFormat = ' ZZ'; - config._f = dayFormat + dateFormat + timeFormat + tzFormat; - configFromStringAndFormat(config); - getParsingFlags(config).rfc2822 = true; - } else { - config._isValid = false; - } -} - -// date from iso format or fallback -function configFromString(config) { - var matched = aspNetJsonRegex.exec(config._i); - - if (matched !== null) { - config._d = new Date(+matched[1]); - return; - } - - configFromISO(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } - - configFromRFC2822(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } - - // Final attempt, use Input Fallback - hooks.createFromInputFallback(config); -} - -hooks.createFromInputFallback = deprecate( - 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + - 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + - 'discouraged and will be removed in an upcoming major release. Please refer to ' + - 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } -); - -// Pick the first defined of two or three arguments. -function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; -} - -function currentDateArray(config) { - // hooks is actually the exported moment object - var nowValue = new Date(hooks.now()); - if (config._useUTC) { - return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; - } - return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; -} - -// convert an array to a date. -// the array should mirror the parameters below -// note: all values past the year are optional and will default to the lowest possible value. -// [year, month, day , hour, minute, second, millisecond] -function configFromArray (config) { - var i, date, input = [], currentDate, yearToUse; - - if (config._d) { - return; - } - - currentDate = currentDateArray(config); - - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } - - //if the day of the year is set, figure out what it is - if (config._dayOfYear != null) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); - - if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { - getParsingFlags(config)._overflowDayOfYear = true; - } - - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } - - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } - - config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } - - if (config._nextDay) { - config._a[HOUR] = 24; - } -} - -function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; - - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - if (weekday < 1 || weekday > 7) { - weekdayOverflow = true; - } - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - - var curWeek = weekOfYear(createLocal(), dow, doy); - - weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); - - // Default to current week. - week = defaults(w.w, curWeek.week); - - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < 0 || weekday > 6) { - weekdayOverflow = true; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - if (w.e < 0 || w.e > 6) { - weekdayOverflow = true; - } - } else { - // default to begining of week - weekday = dow; - } - } - if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { - getParsingFlags(config)._overflowWeeks = true; - } else if (weekdayOverflow != null) { - getParsingFlags(config)._overflowWeekday = true; - } else { - temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } -} - -// constant that refers to the ISO standard -hooks.ISO_8601 = function () {}; - -// constant that refers to the RFC 2822 form -hooks.RFC_2822 = function () {}; - -// date from string and format string -function configFromStringAndFormat(config) { - // TODO: Move this to another part of the creation flow to prevent circular deps - if (config._f === hooks.ISO_8601) { - configFromISO(config); - return; - } - if (config._f === hooks.RFC_2822) { - configFromRFC2822(config); - return; - } - config._a = []; - getParsingFlags(config).empty = true; - - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - // console.log('token', token, 'parsedInput', parsedInput, - // 'regex', getParseRegexForToken(token, config)); - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - getParsingFlags(config).unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - getParsingFlags(config).empty = false; - } - else { - getParsingFlags(config).unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - getParsingFlags(config).unusedTokens.push(token); - } - } - - // add remaining unparsed input length to the string - getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - getParsingFlags(config).unusedInput.push(string); - } - - // clear _12h flag if hour is <= 12 - if (config._a[HOUR] <= 12 && - getParsingFlags(config).bigHour === true && - config._a[HOUR] > 0) { - getParsingFlags(config).bigHour = undefined; - } - - getParsingFlags(config).parsedDateParts = config._a.slice(0); - getParsingFlags(config).meridiem = config._meridiem; - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); - - configFromArray(config); - checkOverflow(config); -} - - -function meridiemFixWrap (locale, hour, meridiem) { - var isPm; - - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // this is not supposed to happen - return hour; - } -} - -// date from string and array of format strings -function configFromStringAndArray(config) { - var tempConfig, - bestMoment, - - scoreToBeat, - i, - currentScore; - - if (config._f.length === 0) { - getParsingFlags(config).invalidFormat = true; - config._d = new Date(NaN); - return; - } - - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._f = config._f[i]; - configFromStringAndFormat(tempConfig); - - if (!isValid(tempConfig)) { - continue; - } - - // if there is any input that was not parsed add a penalty for that format - currentScore += getParsingFlags(tempConfig).charsLeftOver; - - //or tokens - currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; - - getParsingFlags(tempConfig).score = currentScore; - - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } - - extend(config, bestMoment || tempConfig); -} - -function configFromObject(config) { - if (config._d) { - return; - } - - var i = normalizeObjectUnits(config._i); - config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { - return obj && parseInt(obj, 10); - }); - - configFromArray(config); -} - -function createFromConfig (config) { - var res = new Moment(checkOverflow(prepareConfig(config))); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } - - return res; -} - -function prepareConfig (config) { - var input = config._i, - format = config._f; - - config._locale = config._locale || getLocale(config._l); - - if (input === null || (format === undefined && input === '')) { - return createInvalid({nullInput: true}); - } - - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } - - if (isMoment(input)) { - return new Moment(checkOverflow(input)); - } else if (isDate(input)) { - config._d = input; - } else if (isArray(format)) { - configFromStringAndArray(config); - } else if (format) { - configFromStringAndFormat(config); - } else { - configFromInput(config); - } - - if (!isValid(config)) { - config._d = null; - } - - return config; -} - -function configFromInput(config) { - var input = config._i; - if (isUndefined(input)) { - config._d = new Date(hooks.now()); - } else if (isDate(input)) { - config._d = new Date(input.valueOf()); - } else if (typeof input === 'string') { - configFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - configFromArray(config); - } else if (isObject(input)) { - configFromObject(config); - } else if (isNumber(input)) { - // from milliseconds - config._d = new Date(input); - } else { - hooks.createFromInputFallback(config); - } -} - -function createLocalOrUTC (input, format, locale, strict, isUTC) { - var c = {}; - - if (locale === true || locale === false) { - strict = locale; - locale = undefined; - } - - if ((isObject(input) && isObjectEmpty(input)) || - (isArray(input) && input.length === 0)) { - input = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c._isAMomentObject = true; - c._useUTC = c._isUTC = isUTC; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - - return createFromConfig(c); -} - -function createLocal (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, false); -} - -var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other < this ? this : other; - } else { - return createInvalid(); - } - } -); - -var prototypeMax = deprecate( - 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other > this ? this : other; - } else { - return createInvalid(); - } - } -); - -// Pick a moment m from moments so that m[fn](other) is true for all -// other. This relies on the function fn to be transitive. -// -// moments should either be an array of moment objects or an array, whose -// first element is an array of moment objects. -function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return createLocal(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (!moments[i].isValid() || moments[i][fn](res)) { - res = moments[i]; - } - } - return res; -} - -// TODO: Use [].sort instead? -function min () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); -} - -function max () { - var args = [].slice.call(arguments, 0); - - return pickBy('isAfter', args); -} - -var now = function () { - return Date.now ? Date.now() : +(new Date()); -}; - -var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; - -function isDurationValid(m) { - for (var key in m) { - if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) { - return false; - } - } - - var unitHasDecimal = false; - for (var i = 0; i < ordering.length; ++i) { - if (m[ordering[i]]) { - if (unitHasDecimal) { - return false; // only allow non-integers for smallest unit - } - if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { - unitHasDecimal = true; - } - } - } - - return true; -} - -function isValid$1() { - return this._isValid; -} - -function createInvalid$1() { - return createDuration(NaN); -} - -function Duration (duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - this._isValid = isDurationValid(normalizedInput); - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = getLocale(); - - this._bubble(); -} - -function isDuration (obj) { - return obj instanceof Duration; -} - -function absRound (number) { - if (number < 0) { - return Math.round(-1 * number) * -1; - } else { - return Math.round(number); - } -} - -// FORMATTING - -function offset (token, separator) { - addFormatToken(token, 0, 0, function () { - var offset = this.utcOffset(); - var sign = '+'; - if (offset < 0) { - offset = -offset; - sign = '-'; - } - return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); - }); -} - -offset('Z', ':'); -offset('ZZ', ''); - -// PARSING - -addRegexToken('Z', matchShortOffset); -addRegexToken('ZZ', matchShortOffset); -addParseToken(['Z', 'ZZ'], function (input, array, config) { - config._useUTC = true; - config._tzm = offsetFromString(matchShortOffset, input); -}); - -// HELPERS - -// timezone chunker -// '+10:00' > ['10', '00'] -// '-1530' > ['-15', '30'] -var chunkOffset = /([\+\-]|\d\d)/gi; - -function offsetFromString(matcher, string) { - var matches = (string || '').match(matcher); - - if (matches === null) { - return null; - } - - var chunk = matches[matches.length - 1] || []; - var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; - var minutes = +(parts[1] * 60) + toInt(parts[2]); - - return minutes === 0 ? - 0 : - parts[0] === '+' ? minutes : -minutes; -} - -// Return a moment from input, that is local/utc/zone equivalent to model. -function cloneWithOffset(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); - // Use low-level api, because this fn is low-level api. - res._d.setTime(res._d.valueOf() + diff); - hooks.updateOffset(res, false); - return res; - } else { - return createLocal(input).local(); - } -} - -function getDateOffset (m) { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(m._d.getTimezoneOffset() / 15) * 15; -} - -// HOOKS - -// This function will be called whenever a moment is mutated. -// It is intended to keep the offset in sync with the timezone. -hooks.updateOffset = function () {}; - -// MOMENTS - -// keepLocalTime = true means only change the timezone, without -// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> -// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset -// +0200, so we adjust the time as needed, to be valid. -// -// Keeping the time actually adds/subtracts (one hour) -// from the actual represented time. That is why we call updateOffset -// a second time. In case it wants us to change the offset again -// _changeInProgress == true case, then we have to adjust, because -// there is no such time in the given timezone. -function getSetOffset (input, keepLocalTime, keepMinutes) { - var offset = this._offset || 0, - localAdjust; - if (!this.isValid()) { - return input != null ? this : NaN; - } - if (input != null) { - if (typeof input === 'string') { - input = offsetFromString(matchShortOffset, input); - if (input === null) { - return this; - } - } else if (Math.abs(input) < 16 && !keepMinutes) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = getDateOffset(this); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addSubtract(this, createDuration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - hooks.updateOffset(this, true); - this._changeInProgress = null; - } - } - return this; - } else { - return this._isUTC ? offset : getDateOffset(this); - } -} - -function getSetZone (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } - - this.utcOffset(input, keepLocalTime); - - return this; - } else { - return -this.utcOffset(); - } -} - -function setOffsetToUTC (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); -} - -function setOffsetToLocal (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; - - if (keepLocalTime) { - this.subtract(getDateOffset(this), 'm'); - } - } - return this; -} - -function setOffsetToParsedOffset () { - if (this._tzm != null) { - this.utcOffset(this._tzm, false, true); - } else if (typeof this._i === 'string') { - var tZone = offsetFromString(matchOffset, this._i); - if (tZone != null) { - this.utcOffset(tZone); - } - else { - this.utcOffset(0, true); - } - } - return this; -} - -function hasAlignedHourOffset (input) { - if (!this.isValid()) { - return false; - } - input = input ? createLocal(input).utcOffset() : 0; - - return (this.utcOffset() - input) % 60 === 0; -} - -function isDaylightSavingTime () { - return ( - this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset() - ); -} - -function isDaylightSavingTimeShifted () { - if (!isUndefined(this._isDSTShifted)) { - return this._isDSTShifted; - } - - var c = {}; - - copyConfig(c, this); - c = prepareConfig(c); - - if (c._a) { - var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); - this._isDSTShifted = this.isValid() && - compareArrays(c._a, other.toArray()) > 0; - } else { - this._isDSTShifted = false; - } - - return this._isDSTShifted; -} - -function isLocal () { - return this.isValid() ? !this._isUTC : false; -} - -function isUtcOffset () { - return this.isValid() ? this._isUTC : false; -} - -function isUtc () { - return this.isValid() ? this._isUTC && this._offset === 0 : false; -} - -// ASP.NET json date format regex -var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; - -// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html -// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere -// and further modified to allow for strings containing both week and day -var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; - -function createDuration (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - diffRes; - - if (isDuration(input)) { - duration = { - ms : input._milliseconds, - d : input._days, - M : input._months - }; - } else if (isNumber(input)) { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : 0, - d : toInt(match[DATE]) * sign, - h : toInt(match[HOUR]) * sign, - m : toInt(match[MINUTE]) * sign, - s : toInt(match[SECOND]) * sign, - ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match - }; - } else if (!!(match = isoRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : parseIso(match[2], sign), - M : parseIso(match[3], sign), - w : parseIso(match[4], sign), - d : parseIso(match[5], sign), - h : parseIso(match[6], sign), - m : parseIso(match[7], sign), - s : parseIso(match[8], sign) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); - - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } - - ret = new Duration(duration); - - if (isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } - - return ret; -} - -createDuration.fn = Duration.prototype; -createDuration.invalid = createInvalid$1; - -function parseIso (inp, sign) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; -} - -function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; - - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } - - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - - return res; -} - -function momentsDifference(base, other) { - var res; - if (!(base.isValid() && other.isValid())) { - return {milliseconds: 0, months: 0}; - } - - other = cloneWithOffset(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } - - return res; -} - -// TODO: remove 'name' arg after deprecation is removed -function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + - 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); - tmp = val; val = period; period = tmp; - } - - val = typeof val === 'string' ? +val : val; - dur = createDuration(val, period); - addSubtract(this, dur, direction); - return this; - }; -} - -function addSubtract (mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = absRound(duration._days), - months = absRound(duration._months); - - if (!mom.isValid()) { - // No op - return; - } - - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); - } - if (days) { - set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); - } - if (months) { - setMonth(mom, get(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - hooks.updateOffset(mom, days || months); - } -} - -var add = createAdder(1, 'add'); -var subtract = createAdder(-1, 'subtract'); - -function getCalendarFormat(myMoment, now) { - var diff = myMoment.diff(now, 'days', true); - return diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; -} - -function calendar$1 (time, formats) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're local/utc/offset or not. - var now = time || createLocal(), - sod = cloneWithOffset(now, this).startOf('day'), - format = hooks.calendarFormat(this, sod) || 'sameElse'; - - var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); - - return this.format(output || this.localeData().calendar(format, this, createLocal(now))); -} - -function clone () { - return new Moment(this); -} - -function isAfter (input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); - if (units === 'millisecond') { - return this.valueOf() > localInput.valueOf(); - } else { - return localInput.valueOf() < this.clone().startOf(units).valueOf(); - } -} - -function isBefore (input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); - if (units === 'millisecond') { - return this.valueOf() < localInput.valueOf(); - } else { - return this.clone().endOf(units).valueOf() < localInput.valueOf(); - } -} - -function isBetween (from, to, units, inclusivity) { - inclusivity = inclusivity || '()'; - return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && - (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); -} - -function isSame (input, units) { - var localInput = isMoment(input) ? input : createLocal(input), - inputMs; - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - return this.valueOf() === localInput.valueOf(); - } else { - inputMs = localInput.valueOf(); - return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); - } -} - -function isSameOrAfter (input, units) { - return this.isSame(input, units) || this.isAfter(input,units); -} - -function isSameOrBefore (input, units) { - return this.isSame(input, units) || this.isBefore(input,units); -} - -function diff (input, units, asFloat) { - var that, - zoneDelta, - delta, output; - - if (!this.isValid()) { - return NaN; - } - - that = cloneWithOffset(input, this); - - if (!that.isValid()) { - return NaN; - } - - zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; - - units = normalizeUnits(units); - - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - delta = this - that; - output = units === 'second' ? delta / 1e3 : // 1000 - units === 'minute' ? delta / 6e4 : // 1000 * 60 - units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - delta; - } - return asFloat ? output : absFloor(output); -} - -function monthDiff (a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; - - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } - - //check for negative zero, return zero if negative zero - return -(wholeMonthDiff + adjust) || 0; -} - -hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; -hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; - -function toString () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); -} - -function toISOString() { - if (!this.isValid()) { - return null; - } - var m = this.clone().utc(); - if (m.year() < 0 || m.year() > 9999) { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - if (isFunction(Date.prototype.toISOString)) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); -} - -/** - * Return a human readable representation of a moment that can - * also be evaluated to get a new moment which is the same - * - * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects - */ -function inspect () { - if (!this.isValid()) { - return 'moment.invalid(/* ' + this._i + ' */)'; - } - var func = 'moment'; - var zone = ''; - if (!this.isLocal()) { - func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; - zone = 'Z'; - } - var prefix = '[' + func + '("]'; - var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; - var datetime = '-MM-DD[T]HH:mm:ss.SSS'; - var suffix = zone + '[")]'; - - return this.format(prefix + year + datetime + suffix); -} - -function format (inputString) { - if (!inputString) { - inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; - } - var output = formatMoment(this, inputString); - return this.localeData().postformat(output); -} - -function from (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); - } -} - -function fromNow (withoutSuffix) { - return this.from(createLocal(), withoutSuffix); -} - -function to (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); - } -} - -function toNow (withoutSuffix) { - return this.to(createLocal(), withoutSuffix); -} - -// If passed a locale key, it will set the locale for this -// instance. Otherwise, it will return the locale configuration -// variables for this instance. -function locale (key) { - var newLocaleData; - - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = getLocale(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } -} - -var lang = deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } -); - -function localeData () { - return this._locale; -} - -function startOf (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - case 'date': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - } - - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } - if (units === 'isoWeek') { - this.isoWeekday(1); - } - - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } - - return this; -} - -function endOf (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - - // 'date' is an alias for 'day', so it should be considered as such. - if (units === 'date') { - units = 'day'; - } - - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); -} - -function valueOf () { - return this._d.valueOf() - ((this._offset || 0) * 60000); -} - -function unix () { - return Math.floor(this.valueOf() / 1000); -} - -function toDate () { - return new Date(this.valueOf()); -} - -function toArray () { - var m = this; - return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; -} - -function toObject () { - var m = this; - return { - years: m.year(), - months: m.month(), - date: m.date(), - hours: m.hours(), - minutes: m.minutes(), - seconds: m.seconds(), - milliseconds: m.milliseconds() - }; -} - -function toJSON () { - // new Date(NaN).toJSON() === null - return this.isValid() ? this.toISOString() : null; -} - -function isValid$2 () { - return isValid(this); -} - -function parsingFlags () { - return extend({}, getParsingFlags(this)); -} - -function invalidAt () { - return getParsingFlags(this).overflow; -} - -function creationData() { - return { - input: this._i, - format: this._f, - locale: this._locale, - isUTC: this._isUTC, - strict: this._strict - }; -} - -// FORMATTING - -addFormatToken(0, ['gg', 2], 0, function () { - return this.weekYear() % 100; -}); - -addFormatToken(0, ['GG', 2], 0, function () { - return this.isoWeekYear() % 100; -}); - -function addWeekYearFormatToken (token, getter) { - addFormatToken(0, [token, token.length], 0, getter); -} - -addWeekYearFormatToken('gggg', 'weekYear'); -addWeekYearFormatToken('ggggg', 'weekYear'); -addWeekYearFormatToken('GGGG', 'isoWeekYear'); -addWeekYearFormatToken('GGGGG', 'isoWeekYear'); - -// ALIASES - -addUnitAlias('weekYear', 'gg'); -addUnitAlias('isoWeekYear', 'GG'); - -// PRIORITY - -addUnitPriority('weekYear', 1); -addUnitPriority('isoWeekYear', 1); - - -// PARSING - -addRegexToken('G', matchSigned); -addRegexToken('g', matchSigned); -addRegexToken('GG', match1to2, match2); -addRegexToken('gg', match1to2, match2); -addRegexToken('GGGG', match1to4, match4); -addRegexToken('gggg', match1to4, match4); -addRegexToken('GGGGG', match1to6, match6); -addRegexToken('ggggg', match1to6, match6); - -addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { - week[token.substr(0, 2)] = toInt(input); -}); - -addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { - week[token] = hooks.parseTwoDigitYear(input); -}); - -// MOMENTS - -function getSetWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, - this.week(), - this.weekday(), - this.localeData()._week.dow, - this.localeData()._week.doy); -} - -function getSetISOWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, this.isoWeek(), this.isoWeekday(), 1, 4); -} - -function getISOWeeksInYear () { - return weeksInYear(this.year(), 1, 4); -} - -function getWeeksInYear () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); -} - -function getSetWeekYearHelper(input, week, weekday, dow, doy) { - var weeksTarget; - if (input == null) { - return weekOfYear(this, dow, doy).year; - } else { - weeksTarget = weeksInYear(input, dow, doy); - if (week > weeksTarget) { - week = weeksTarget; - } - return setWeekAll.call(this, input, week, weekday, dow, doy); - } -} - -function setWeekAll(weekYear, week, weekday, dow, doy) { - var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), - date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); - - this.year(date.getUTCFullYear()); - this.month(date.getUTCMonth()); - this.date(date.getUTCDate()); - return this; -} - -// FORMATTING - -addFormatToken('Q', 0, 'Qo', 'quarter'); - -// ALIASES - -addUnitAlias('quarter', 'Q'); - -// PRIORITY - -addUnitPriority('quarter', 7); - -// PARSING - -addRegexToken('Q', match1); -addParseToken('Q', function (input, array) { - array[MONTH] = (toInt(input) - 1) * 3; -}); - -// MOMENTS - -function getSetQuarter (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); -} - -// FORMATTING - -addFormatToken('D', ['DD', 2], 'Do', 'date'); - -// ALIASES - -addUnitAlias('date', 'D'); - -// PRIOROITY -addUnitPriority('date', 9); - -// PARSING - -addRegexToken('D', match1to2); -addRegexToken('DD', match1to2, match2); -addRegexToken('Do', function (isStrict, locale) { - // TODO: Remove "ordinalParse" fallback in next major release. - return isStrict ? - (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : - locale._dayOfMonthOrdinalParseLenient; -}); - -addParseToken(['D', 'DD'], DATE); -addParseToken('Do', function (input, array) { - array[DATE] = toInt(input.match(match1to2)[0], 10); -}); - -// MOMENTS - -var getSetDayOfMonth = makeGetSet('Date', true); - -// FORMATTING - -addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - -// ALIASES - -addUnitAlias('dayOfYear', 'DDD'); - -// PRIORITY -addUnitPriority('dayOfYear', 4); - -// PARSING - -addRegexToken('DDD', match1to3); -addRegexToken('DDDD', match3); -addParseToken(['DDD', 'DDDD'], function (input, array, config) { - config._dayOfYear = toInt(input); -}); - -// HELPERS - -// MOMENTS - -function getSetDayOfYear (input) { - var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); -} - -// FORMATTING - -addFormatToken('m', ['mm', 2], 0, 'minute'); - -// ALIASES - -addUnitAlias('minute', 'm'); - -// PRIORITY - -addUnitPriority('minute', 14); - -// PARSING - -addRegexToken('m', match1to2); -addRegexToken('mm', match1to2, match2); -addParseToken(['m', 'mm'], MINUTE); - -// MOMENTS - -var getSetMinute = makeGetSet('Minutes', false); - -// FORMATTING - -addFormatToken('s', ['ss', 2], 0, 'second'); - -// ALIASES - -addUnitAlias('second', 's'); - -// PRIORITY - -addUnitPriority('second', 15); - -// PARSING - -addRegexToken('s', match1to2); -addRegexToken('ss', match1to2, match2); -addParseToken(['s', 'ss'], SECOND); - -// MOMENTS - -var getSetSecond = makeGetSet('Seconds', false); - -// FORMATTING - -addFormatToken('S', 0, 0, function () { - return ~~(this.millisecond() / 100); -}); - -addFormatToken(0, ['SS', 2], 0, function () { - return ~~(this.millisecond() / 10); -}); - -addFormatToken(0, ['SSS', 3], 0, 'millisecond'); -addFormatToken(0, ['SSSS', 4], 0, function () { - return this.millisecond() * 10; -}); -addFormatToken(0, ['SSSSS', 5], 0, function () { - return this.millisecond() * 100; -}); -addFormatToken(0, ['SSSSSS', 6], 0, function () { - return this.millisecond() * 1000; -}); -addFormatToken(0, ['SSSSSSS', 7], 0, function () { - return this.millisecond() * 10000; -}); -addFormatToken(0, ['SSSSSSSS', 8], 0, function () { - return this.millisecond() * 100000; -}); -addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { - return this.millisecond() * 1000000; -}); - - -// ALIASES - -addUnitAlias('millisecond', 'ms'); - -// PRIORITY - -addUnitPriority('millisecond', 16); - -// PARSING - -addRegexToken('S', match1to3, match1); -addRegexToken('SS', match1to3, match2); -addRegexToken('SSS', match1to3, match3); - -var token; -for (token = 'SSSS'; token.length <= 9; token += 'S') { - addRegexToken(token, matchUnsigned); -} - -function parseMs(input, array) { - array[MILLISECOND] = toInt(('0.' + input) * 1000); -} - -for (token = 'S'; token.length <= 9; token += 'S') { - addParseToken(token, parseMs); -} -// MOMENTS - -var getSetMillisecond = makeGetSet('Milliseconds', false); - -// FORMATTING - -addFormatToken('z', 0, 0, 'zoneAbbr'); -addFormatToken('zz', 0, 0, 'zoneName'); - -// MOMENTS - -function getZoneAbbr () { - return this._isUTC ? 'UTC' : ''; -} - -function getZoneName () { - return this._isUTC ? 'Coordinated Universal Time' : ''; -} - -var proto = Moment.prototype; - -proto.add = add; -proto.calendar = calendar$1; -proto.clone = clone; -proto.diff = diff; -proto.endOf = endOf; -proto.format = format; -proto.from = from; -proto.fromNow = fromNow; -proto.to = to; -proto.toNow = toNow; -proto.get = stringGet; -proto.invalidAt = invalidAt; -proto.isAfter = isAfter; -proto.isBefore = isBefore; -proto.isBetween = isBetween; -proto.isSame = isSame; -proto.isSameOrAfter = isSameOrAfter; -proto.isSameOrBefore = isSameOrBefore; -proto.isValid = isValid$2; -proto.lang = lang; -proto.locale = locale; -proto.localeData = localeData; -proto.max = prototypeMax; -proto.min = prototypeMin; -proto.parsingFlags = parsingFlags; -proto.set = stringSet; -proto.startOf = startOf; -proto.subtract = subtract; -proto.toArray = toArray; -proto.toObject = toObject; -proto.toDate = toDate; -proto.toISOString = toISOString; -proto.inspect = inspect; -proto.toJSON = toJSON; -proto.toString = toString; -proto.unix = unix; -proto.valueOf = valueOf; -proto.creationData = creationData; - -// Year -proto.year = getSetYear; -proto.isLeapYear = getIsLeapYear; - -// Week Year -proto.weekYear = getSetWeekYear; -proto.isoWeekYear = getSetISOWeekYear; - -// Quarter -proto.quarter = proto.quarters = getSetQuarter; - -// Month -proto.month = getSetMonth; -proto.daysInMonth = getDaysInMonth; - -// Week -proto.week = proto.weeks = getSetWeek; -proto.isoWeek = proto.isoWeeks = getSetISOWeek; -proto.weeksInYear = getWeeksInYear; -proto.isoWeeksInYear = getISOWeeksInYear; - -// Day -proto.date = getSetDayOfMonth; -proto.day = proto.days = getSetDayOfWeek; -proto.weekday = getSetLocaleDayOfWeek; -proto.isoWeekday = getSetISODayOfWeek; -proto.dayOfYear = getSetDayOfYear; - -// Hour -proto.hour = proto.hours = getSetHour; - -// Minute -proto.minute = proto.minutes = getSetMinute; - -// Second -proto.second = proto.seconds = getSetSecond; - -// Millisecond -proto.millisecond = proto.milliseconds = getSetMillisecond; - -// Offset -proto.utcOffset = getSetOffset; -proto.utc = setOffsetToUTC; -proto.local = setOffsetToLocal; -proto.parseZone = setOffsetToParsedOffset; -proto.hasAlignedHourOffset = hasAlignedHourOffset; -proto.isDST = isDaylightSavingTime; -proto.isLocal = isLocal; -proto.isUtcOffset = isUtcOffset; -proto.isUtc = isUtc; -proto.isUTC = isUtc; - -// Timezone -proto.zoneAbbr = getZoneAbbr; -proto.zoneName = getZoneName; - -// Deprecations -proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); -proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); -proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); -proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); -proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); - -function createUnix (input) { - return createLocal(input * 1000); -} - -function createInZone () { - return createLocal.apply(null, arguments).parseZone(); -} - -function preParsePostFormat (string) { - return string; -} - -var proto$1 = Locale.prototype; - -proto$1.calendar = calendar; -proto$1.longDateFormat = longDateFormat; -proto$1.invalidDate = invalidDate; -proto$1.ordinal = ordinal; -proto$1.preparse = preParsePostFormat; -proto$1.postformat = preParsePostFormat; -proto$1.relativeTime = relativeTime; -proto$1.pastFuture = pastFuture; -proto$1.set = set; - -// Month -proto$1.months = localeMonths; -proto$1.monthsShort = localeMonthsShort; -proto$1.monthsParse = localeMonthsParse; -proto$1.monthsRegex = monthsRegex; -proto$1.monthsShortRegex = monthsShortRegex; - -// Week -proto$1.week = localeWeek; -proto$1.firstDayOfYear = localeFirstDayOfYear; -proto$1.firstDayOfWeek = localeFirstDayOfWeek; - -// Day of Week -proto$1.weekdays = localeWeekdays; -proto$1.weekdaysMin = localeWeekdaysMin; -proto$1.weekdaysShort = localeWeekdaysShort; -proto$1.weekdaysParse = localeWeekdaysParse; - -proto$1.weekdaysRegex = weekdaysRegex; -proto$1.weekdaysShortRegex = weekdaysShortRegex; -proto$1.weekdaysMinRegex = weekdaysMinRegex; - -// Hours -proto$1.isPM = localeIsPM; -proto$1.meridiem = localeMeridiem; - -function get$1 (format, index, field, setter) { - var locale = getLocale(); - var utc = createUTC().set(setter, index); - return locale[field](utc, format); -} - -function listMonthsImpl (format, index, field) { - if (isNumber(format)) { - index = format; - format = undefined; - } - - format = format || ''; - - if (index != null) { - return get$1(format, index, field, 'month'); - } - - var i; - var out = []; - for (i = 0; i < 12; i++) { - out[i] = get$1(format, i, field, 'month'); - } - return out; -} - -// () -// (5) -// (fmt, 5) -// (fmt) -// (true) -// (true, 5) -// (true, fmt, 5) -// (true, fmt) -function listWeekdaysImpl (localeSorted, format, index, field) { - if (typeof localeSorted === 'boolean') { - if (isNumber(format)) { - index = format; - format = undefined; - } - - format = format || ''; - } else { - format = localeSorted; - index = format; - localeSorted = false; - - if (isNumber(format)) { - index = format; - format = undefined; - } - - format = format || ''; - } - - var locale = getLocale(), - shift = localeSorted ? locale._week.dow : 0; - - if (index != null) { - return get$1(format, (index + shift) % 7, field, 'day'); - } - - var i; - var out = []; - for (i = 0; i < 7; i++) { - out[i] = get$1(format, (i + shift) % 7, field, 'day'); - } - return out; -} - -function listMonths (format, index) { - return listMonthsImpl(format, index, 'months'); -} - -function listMonthsShort (format, index) { - return listMonthsImpl(format, index, 'monthsShort'); -} - -function listWeekdays (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); -} - -function listWeekdaysShort (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); -} - -function listWeekdaysMin (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); -} - -getSetGlobalLocale('en', { - dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } -}); - -// Side effect imports -hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); -hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); - -var mathAbs = Math.abs; - -function abs () { - var data = this._data; - - this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); - - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); - - return this; -} - -function addSubtract$1 (duration, input, value, direction) { - var other = createDuration(input, value); - - duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; - - return duration._bubble(); -} - -// supports only 2.0-style add(1, 's') or add(duration) -function add$1 (input, value) { - return addSubtract$1(this, input, value, 1); -} - -// supports only 2.0-style subtract(1, 's') or subtract(duration) -function subtract$1 (input, value) { - return addSubtract$1(this, input, value, -1); -} - -function absCeil (number) { - if (number < 0) { - return Math.floor(number); - } else { - return Math.ceil(number); - } -} - -function bubble () { - var milliseconds = this._milliseconds; - var days = this._days; - var months = this._months; - var data = this._data; - var seconds, minutes, hours, years, monthsFromDays; - - // if we have a mix of positive and negative values, bubble down first - // check: https://github.com/moment/moment/issues/2166 - if (!((milliseconds >= 0 && days >= 0 && months >= 0) || - (milliseconds <= 0 && days <= 0 && months <= 0))) { - milliseconds += absCeil(monthsToDays(months) + days) * 864e5; - days = 0; - months = 0; - } - - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; - - seconds = absFloor(milliseconds / 1000); - data.seconds = seconds % 60; - - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; - - hours = absFloor(minutes / 60); - data.hours = hours % 24; - - days += absFloor(hours / 24); - - // convert days to months - monthsFromDays = absFloor(daysToMonths(days)); - months += monthsFromDays; - days -= absCeil(monthsToDays(monthsFromDays)); - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - data.days = days; - data.months = months; - data.years = years; - - return this; -} - -function daysToMonths (days) { - // 400 years have 146097 days (taking into account leap year rules) - // 400 years have 12 months === 4800 - return days * 4800 / 146097; -} - -function monthsToDays (months) { - // the reverse of daysToMonths - return months * 146097 / 4800; -} - -function as (units) { - if (!this.isValid()) { - return NaN; - } - var days; - var months; - var milliseconds = this._milliseconds; - - units = normalizeUnits(units); - - if (units === 'month' || units === 'year') { - days = this._days + milliseconds / 864e5; - months = this._months + daysToMonths(days); - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(monthsToDays(this._months)); - switch (units) { - case 'week' : return days / 7 + milliseconds / 6048e5; - case 'day' : return days + milliseconds / 864e5; - case 'hour' : return days * 24 + milliseconds / 36e5; - case 'minute' : return days * 1440 + milliseconds / 6e4; - case 'second' : return days * 86400 + milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 864e5) + milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } -} - -// TODO: Use this.as('ms')? -function valueOf$1 () { - if (!this.isValid()) { - return NaN; - } - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); -} - -function makeAs (alias) { - return function () { - return this.as(alias); - }; -} - -var asMilliseconds = makeAs('ms'); -var asSeconds = makeAs('s'); -var asMinutes = makeAs('m'); -var asHours = makeAs('h'); -var asDays = makeAs('d'); -var asWeeks = makeAs('w'); -var asMonths = makeAs('M'); -var asYears = makeAs('y'); - -function get$2 (units) { - units = normalizeUnits(units); - return this.isValid() ? this[units + 's']() : NaN; -} - -function makeGetter(name) { - return function () { - return this.isValid() ? this._data[name] : NaN; - }; -} - -var milliseconds = makeGetter('milliseconds'); -var seconds = makeGetter('seconds'); -var minutes = makeGetter('minutes'); -var hours = makeGetter('hours'); -var days = makeGetter('days'); -var months = makeGetter('months'); -var years = makeGetter('years'); - -function weeks () { - return absFloor(this.days() / 7); -} - -var round = Math.round; -var thresholds = { - ss: 44, // a few seconds to seconds - s : 45, // seconds to minute - m : 45, // minutes to hour - h : 22, // hours to day - d : 26, // days to month - M : 11 // months to year -}; - -// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize -function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); -} - -function relativeTime$1 (posNegDuration, withoutSuffix, locale) { - var duration = createDuration(posNegDuration).abs(); - var seconds = round(duration.as('s')); - var minutes = round(duration.as('m')); - var hours = round(duration.as('h')); - var days = round(duration.as('d')); - var months = round(duration.as('M')); - var years = round(duration.as('y')); - - var a = seconds <= thresholds.ss && ['s', seconds] || - seconds < thresholds.s && ['ss', seconds] || - minutes <= 1 && ['m'] || - minutes < thresholds.m && ['mm', minutes] || - hours <= 1 && ['h'] || - hours < thresholds.h && ['hh', hours] || - days <= 1 && ['d'] || - days < thresholds.d && ['dd', days] || - months <= 1 && ['M'] || - months < thresholds.M && ['MM', months] || - years <= 1 && ['y'] || ['yy', years]; - - a[2] = withoutSuffix; - a[3] = +posNegDuration > 0; - a[4] = locale; - return substituteTimeAgo.apply(null, a); -} - -// This function allows you to set the rounding function for relative time strings -function getSetRelativeTimeRounding (roundingFunction) { - if (roundingFunction === undefined) { - return round; - } - if (typeof(roundingFunction) === 'function') { - round = roundingFunction; - return true; - } - return false; -} - -// This function allows you to set a threshold for relative time strings -function getSetRelativeTimeThreshold (threshold, limit) { - if (thresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return thresholds[threshold]; - } - thresholds[threshold] = limit; - if (threshold === 's') { - thresholds.ss = limit - 1; - } - return true; -} - -function humanize (withSuffix) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - - var locale = this.localeData(); - var output = relativeTime$1(this, !withSuffix, locale); - - if (withSuffix) { - output = locale.pastFuture(+this, output); - } - - return locale.postformat(output); -} - -var abs$1 = Math.abs; - -function toISOString$1() { - // for ISO strings we do not use the normal bubbling rules: - // * milliseconds bubble up until they become hours - // * days do not bubble at all - // * months bubble up until they become years - // This is because there is no context-free conversion between hours and days - // (think of clock changes) - // and also not between days and months (28-31 days per month) - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - - var seconds = abs$1(this._milliseconds) / 1000; - var days = abs$1(this._days); - var months = abs$1(this._months); - var minutes, hours, years; - - // 3600 seconds -> 60 minutes -> 1 hour - minutes = absFloor(seconds / 60); - hours = absFloor(minutes / 60); - seconds %= 60; - minutes %= 60; - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var Y = years; - var M = months; - var D = days; - var h = hours; - var m = minutes; - var s = seconds; - var total = this.asSeconds(); - - if (!total) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } - - return (total < 0 ? '-' : '') + - 'P' + - (Y ? Y + 'Y' : '') + - (M ? M + 'M' : '') + - (D ? D + 'D' : '') + - ((h || m || s) ? 'T' : '') + - (h ? h + 'H' : '') + - (m ? m + 'M' : '') + - (s ? s + 'S' : ''); -} - -var proto$2 = Duration.prototype; - -proto$2.isValid = isValid$1; -proto$2.abs = abs; -proto$2.add = add$1; -proto$2.subtract = subtract$1; -proto$2.as = as; -proto$2.asMilliseconds = asMilliseconds; -proto$2.asSeconds = asSeconds; -proto$2.asMinutes = asMinutes; -proto$2.asHours = asHours; -proto$2.asDays = asDays; -proto$2.asWeeks = asWeeks; -proto$2.asMonths = asMonths; -proto$2.asYears = asYears; -proto$2.valueOf = valueOf$1; -proto$2._bubble = bubble; -proto$2.get = get$2; -proto$2.milliseconds = milliseconds; -proto$2.seconds = seconds; -proto$2.minutes = minutes; -proto$2.hours = hours; -proto$2.days = days; -proto$2.weeks = weeks; -proto$2.months = months; -proto$2.years = years; -proto$2.humanize = humanize; -proto$2.toISOString = toISOString$1; -proto$2.toString = toISOString$1; -proto$2.toJSON = toISOString$1; -proto$2.locale = locale; -proto$2.localeData = localeData; - -// Deprecations -proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); -proto$2.lang = lang; - -// Side effect imports - -// FORMATTING - -addFormatToken('X', 0, 0, 'unix'); -addFormatToken('x', 0, 0, 'valueOf'); - -// PARSING - -addRegexToken('x', matchSigned); -addRegexToken('X', matchTimestamp); -addParseToken('X', function (input, array, config) { - config._d = new Date(parseFloat(input, 10) * 1000); -}); -addParseToken('x', function (input, array, config) { - config._d = new Date(toInt(input)); -}); - -// Side effect imports - - -hooks.version = '2.18.1'; - -setHookCallback(createLocal); - -hooks.fn = proto; -hooks.min = min; -hooks.max = max; -hooks.now = now; -hooks.utc = createUTC; -hooks.unix = createUnix; -hooks.months = listMonths; -hooks.isDate = isDate; -hooks.locale = getSetGlobalLocale; -hooks.invalid = createInvalid; -hooks.duration = createDuration; -hooks.isMoment = isMoment; -hooks.weekdays = listWeekdays; -hooks.parseZone = createInZone; -hooks.localeData = getLocale; -hooks.isDuration = isDuration; -hooks.monthsShort = listMonthsShort; -hooks.weekdaysMin = listWeekdaysMin; -hooks.defineLocale = defineLocale; -hooks.updateLocale = updateLocale; -hooks.locales = listLocales; -hooks.weekdaysShort = listWeekdaysShort; -hooks.normalizeUnits = normalizeUnits; -hooks.relativeTimeRounding = getSetRelativeTimeRounding; -hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; -hooks.calendarFormat = getCalendarFormat; -hooks.prototype = proto; - -return hooks; - -}))); - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(189)(module))) - -/***/ }), -/* 1 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE_1__; - -/***/ }), -/* 2 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return HotRegisterer; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; - -var instances = new Map(); -var HotRegisterer = /** @class */ (function () { - function HotRegisterer() { - } - HotRegisterer.prototype.getInstance = function (id) { - return instances.get(id); - }; - HotRegisterer.prototype.registerInstance = function (id, instance) { - instances.set(id, instance); - }; - HotRegisterer.prototype.removeInstance = function (id) { - instances.delete(id); - }; - HotRegisterer = __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Injectable"])() - ], HotRegisterer); - return HotRegisterer; -}()); - - - -/***/ }), -/* 3 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return HotTableComponent; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_handsontable__ = __webpack_require__(123); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_handsontable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_handsontable__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__hot_registerer_service__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__hot_settings_utils__ = __webpack_require__(122); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; - - - - -var HotTableComponent = /** @class */ (function () { - function HotTableComponent(el, _ngZone, _hotRegisterer, _hotHelper) { - this.el = el; - this._ngZone = _ngZone; - this._hotRegisterer = _hotRegisterer; - this._hotHelper = _hotHelper; - this.columnsComponents = []; - this.afterAddChild = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterBeginEditing = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterCellMetaReset = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterChange = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterChangesObserved = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterColumnMove = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterColumnResize = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterColumnSort = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterContextMenuDefaultOptions = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterContextMenuHide = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterContextMenuShow = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterCopy = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterCopyLimit = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterCreateCol = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterCreateRow = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterCut = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterDeselect = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterDestroy = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterDetachChild = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterDocumentKeyDown = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterDropdownMenuDefaultOptions = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterDropdownMenuHide = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterDropdownMenuShow = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterFilter = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterGetCellMeta = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterGetColHeader = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterGetColumnHeaderRenderers = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterGetRowHeader = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterGetRowHeaderRenderers = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterInit = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterLoadData = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterModifyTransformEnd = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterModifyTransformStart = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterMomentumScroll = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterOnCellCornerDblClick = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterOnCellCornerMouseDown = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterOnCellMouseDown = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterOnCellMouseOver = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterOnCellMouseOut = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterPluginsInitialized = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterRedo = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterRemoveCol = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterRemoveRow = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterRender = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterRenderer = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterRowMove = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterRowResize = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterScrollHorizontally = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterScrollVertically = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterSelection = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterSelectionByProp = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterSelectionEnd = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterSelectionEndByProp = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterSetCellMeta = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterSetDataAtCell = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterSetDataAtRowProp = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterTrimRow = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterUndo = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterUntrimRow = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterUpdateSettings = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterValidate = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterViewportColumnCalculatorOverride = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.afterViewportRowCalculatorOverride = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeAddChild = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeAutofill = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeAutofillInsidePopulate = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeCellAlignment = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeChange = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeChangeRender = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeColumnMove = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeColumnResize = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeColumnSort = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeContextMenuSetItems = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeCopy = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeCreateCol = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeCreateRow = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeCut = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeDetachChild = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeDrawBorders = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeDropdownMenuSetItems = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeFilter = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeGetCellMeta = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeInit = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeInitWalkontable = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeKeyDown = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeOnCellMouseDown = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeOnCellMouseOut = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeOnCellMouseOver = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforePaste = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeRedo = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeRemoveCol = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeRemoveRow = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeRender = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeRenderer = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeRowMove = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeRowResize = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeSetRangeEnd = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeSetRangeStart = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeStretchingColumnWidth = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeTouchScroll = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeUndo = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeValidate = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.beforeValueRender = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.construct = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.hiddenColumn = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.hiddenRow = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.init = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.manualRowHeights = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyAutofillRange = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyCol = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyColHeader = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyColumnHeaderHeight = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyColWidth = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyCopyableRange = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyData = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyRow = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyRowHeader = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyRowHeaderWidth = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyRowHeight = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyRowData = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyTransformEnd = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.modifyTransformStart = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.persistentStateLoad = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.persistentStateReset = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.persistentStateSave = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.skipLengthCache = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.unmodifyCol = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - this.unmodifyRow = new __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"](); - } - HotTableComponent.prototype.ngOnInit = function () { - this.container = document.createElement('div'); - if (this.hotId) { - this.container.id = this.hotId; - } - this.el.nativeElement.appendChild(this.container); - }; - HotTableComponent.prototype.ngAfterContentInit = function () { - var _this = this; - var options = this._hotHelper.mergeSettings(this); - if (this.columnsComponents.length > 0) { - var columns_1 = []; - this.columnsComponents.forEach(function (column) { - columns_1.push(_this._hotHelper.mergeSettings(column)); - }); - options['columns'] = columns_1; - } - this._ngZone.runOutsideAngular(function () { - _this.hotInstance = new __WEBPACK_IMPORTED_MODULE_1_handsontable___default.a(_this.container, options); - }); - if (this.hotId) { - this._hotRegisterer.registerInstance(this.hotId, this.hotInstance); - } - }; - HotTableComponent.prototype.ngOnChanges = function (changes) { - if (this.hotInstance === void 0) { - return; - } - var newOptions = this._hotHelper.prepareChanges(changes); - this.updateHotTable(newOptions); - }; - HotTableComponent.prototype.ngOnDestroy = function () { - this.hotInstance.destroy(); - if (this.hotId) { - this._hotRegisterer.removeInstance(this.hotId); - } - }; - HotTableComponent.prototype.updateHotTable = function (newSettings) { - if (!this.hotInstance) { - return; - } - this.hotInstance.updateSettings(newSettings, false); - }; - HotTableComponent.prototype.onAfterColumnsChange = function () { - var _this = this; - if (this.columnsComponents === void 0) { - return; - } - if (this.columnsComponents.length > 0) { - var columns_2 = []; - this.columnsComponents.forEach(function (column) { - columns_2.push(_this._hotHelper.mergeSettings(column)); - }); - var newOptions = { - columns: columns_2 - }; - this.updateHotTable(newOptions); - } - }; - HotTableComponent.prototype.onAfterColumnsNumberChange = function () { - var _this = this; - var columns = []; - if (this.columnsComponents.length > 0) { - this.columnsComponents.forEach(function (column) { - columns.push(_this._hotHelper.mergeSettings(column)); - }); - } - this.updateHotTable({ columns: columns }); - }; - HotTableComponent.prototype.addColumn = function (column) { - this.columnsComponents.push(column); - this.onAfterColumnsNumberChange(); - }; - HotTableComponent.prototype.removeColumn = function (column) { - var index = this.columnsComponents.indexOf(column); - this.columnsComponents.splice(index, 1); - this.onAfterColumnsNumberChange(); - }; - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "settings", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "hotId", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "allowEmpty", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "allowHtml", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "allowInsertColumn", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "allowInsertRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "allowInvalid", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "allowRemoveColumn", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "allowRemoveRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "autoColumnSize", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Array) - ], HotTableComponent.prototype, "autoComplete", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "autoRowSize", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "autoWrapCol", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "autoWrapRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "bindRowsWithHeaders", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Array) - ], HotTableComponent.prototype, "cell", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Function) - ], HotTableComponent.prototype, "cells", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "checkedTemplate", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "className", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "colHeaders", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "collapsibleColumns", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "columnHeaderHeight", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "columns", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "columnSorting", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "columnSummary", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "colWidths", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "commentedCellClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "comments", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "contextMenu", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "copyable", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "copyColsLimit", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "copyPaste", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "copyRowsLimit", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "correctFormat", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "currentColClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "currentHeaderClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "currentRowClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "customBorders", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Array) - ], HotTableComponent.prototype, "data", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "dataSchema", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "dateFormat", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "debug", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "defaultDate", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "disableVisualSelection", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "dropdownMenu", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "editor", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "enterBeginsEditing", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "enterMoves", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "fillHandle", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "filter", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "filteringCaseSensitive", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "filters", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "fixedColumnsLeft", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "fixedRowsBottom", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "fixedRowsTop", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "format", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "formulas", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "fragmentSelection", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "ganttChart", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "headerTooltips", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "height", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "hiddenColumns", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "hiddenRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "invalidCellClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "label", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "language", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "manualColumnFreeze", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "manualColumnMove", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "manualColumnResize", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "manualRowMove", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "manualRowResize", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "maxCols", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "maxRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "mergeCells", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "minCols", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "minRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "minSpareCols", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "minSpareRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "multiSelect", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Array) - ], HotTableComponent.prototype, "nestedHeaders", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "noWordWrapClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "observeChanges", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "observeDOMVisibility", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "outsideClickDeselects", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "pasteMode", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "persistentState", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "placeholder", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "placeholderCellClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "preventOverflow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "readOnly", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "readOnlyCellClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "renderAllRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "renderer", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "rowHeaders", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "rowHeaderWidth", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "rowHeights", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "search", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Array) - ], HotTableComponent.prototype, "selectOptions", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "skipColumnOnPaste", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "sortByRelevance", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Function) - ], HotTableComponent.prototype, "sortFunction", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "sortIndicator", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "source", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "startCols", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "startRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "stretchH", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "strict", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "tableClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "tabMoves", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "title", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "trimDropdown", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "trimRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "trimWhitespace", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotTableComponent.prototype, "type", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "uncheckedTemplate", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "undo", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "validator", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "viewportColumnRenderingOffset", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "viewportRowRenderingOffset", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotTableComponent.prototype, "visibleRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotTableComponent.prototype, "width", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotTableComponent.prototype, "wordWrap", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterAddChild", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterBeginEditing", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterCellMetaReset", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterChange", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterChangesObserved", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterColumnMove", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterColumnResize", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterColumnSort", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterContextMenuDefaultOptions", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterContextMenuHide", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterContextMenuShow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterCopy", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterCopyLimit", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterCreateCol", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterCreateRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterCut", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterDeselect", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterDestroy", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterDetachChild", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterDocumentKeyDown", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterDropdownMenuDefaultOptions", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterDropdownMenuHide", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterDropdownMenuShow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterFilter", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterGetCellMeta", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterGetColHeader", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterGetColumnHeaderRenderers", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterGetRowHeader", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterGetRowHeaderRenderers", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterInit", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterLoadData", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterModifyTransformEnd", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterModifyTransformStart", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterMomentumScroll", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterOnCellCornerDblClick", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterOnCellCornerMouseDown", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterOnCellMouseDown", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterOnCellMouseOver", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterOnCellMouseOut", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterPluginsInitialized", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterRedo", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterRemoveCol", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterRemoveRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterRender", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterRenderer", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterRowMove", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterRowResize", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterScrollHorizontally", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterScrollVertically", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterSelection", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterSelectionByProp", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterSelectionEnd", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterSelectionEndByProp", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterSetCellMeta", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterSetDataAtCell", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterSetDataAtRowProp", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterTrimRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterUndo", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterUntrimRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterUpdateSettings", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterValidate", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterViewportColumnCalculatorOverride", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "afterViewportRowCalculatorOverride", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeAddChild", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeAutofill", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeAutofillInsidePopulate", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeCellAlignment", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeChange", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeChangeRender", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeColumnMove", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeColumnResize", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeColumnSort", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeContextMenuSetItems", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeCopy", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeCreateCol", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeCreateRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeCut", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeDetachChild", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeDrawBorders", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeDropdownMenuSetItems", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeFilter", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeGetCellMeta", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeInit", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeInitWalkontable", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeKeyDown", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeOnCellMouseDown", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeOnCellMouseOut", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeOnCellMouseOver", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforePaste", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeRedo", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeRemoveCol", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeRemoveRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeRender", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeRenderer", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeRowMove", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeRowResize", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeSetRangeEnd", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeSetRangeStart", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeStretchingColumnWidth", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeTouchScroll", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeUndo", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeValidate", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "beforeValueRender", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "construct", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "hiddenColumn", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "hiddenRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "init", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "manualRowHeights", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyAutofillRange", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyCol", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyColHeader", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyColumnHeaderHeight", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyColWidth", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyCopyableRange", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyData", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyRowHeader", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyRowHeaderWidth", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyRowHeight", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyRowData", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyTransformEnd", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "modifyTransformStart", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "persistentStateLoad", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "persistentStateReset", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "persistentStateSave", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "skipLengthCache", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "unmodifyCol", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Output"])(), - __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["EventEmitter"]) - ], HotTableComponent.prototype, "unmodifyRow", void 0); - HotTableComponent = __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Component"])({ - selector: 'hot-table', - template: "", - encapsulation: __WEBPACK_IMPORTED_MODULE_0__angular_core__["ViewEncapsulation"].None, - providers: [__WEBPACK_IMPORTED_MODULE_2__hot_registerer_service__["a" /* HotRegisterer */], __WEBPACK_IMPORTED_MODULE_3__hot_settings_utils__["a" /* HotHelper */]], - }), - __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_0__angular_core__["ElementRef"], - __WEBPACK_IMPORTED_MODULE_0__angular_core__["NgZone"], - __WEBPACK_IMPORTED_MODULE_2__hot_registerer_service__["a" /* HotRegisterer */], - __WEBPACK_IMPORTED_MODULE_3__hot_settings_utils__["a" /* HotHelper */]]) - ], HotTableComponent); - return HotTableComponent; -}()); - - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Afrikaans [af] -//! author : Werner Mollentze : https://github.com/wernerm - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var af = moment.defineLocale('af', { - months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'), - weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), - weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), - meridiemParse: /vm|nm/i, - isPM : function (input) { - return /^nm$/i.test(input); - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'vm' : 'VM'; - } else { - return isLower ? 'nm' : 'NM'; - } - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Vandag om] LT', - nextDay : '[Môre om] LT', - nextWeek : 'dddd [om] LT', - lastDay : '[Gister om] LT', - lastWeek : '[Laas] dddd [om] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'oor %s', - past : '%s gelede', - s : '\'n paar sekondes', - m : '\'n minuut', - mm : '%d minute', - h : '\'n uur', - hh : '%d ure', - d : '\'n dag', - dd : '%d dae', - M : '\'n maand', - MM : '%d maande', - y : '\'n jaar', - yy : '%d jaar' - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter - }, - week : { - dow : 1, // Maandag is die eerste dag van die week. - doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. - } -}); - -return af; - -}))); - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Arabic (Algeria) [ar-dz] -//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var arDz = moment.defineLocale('ar-dz', { - months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 4 // The week that contains Jan 1st is the first week of the year. - } -}); - -return arDz; - -}))); - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Arabic (Kuwait) [ar-kw] -//! author : Nusret Parlak: https://github.com/nusretparlak - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var arKw = moment.defineLocale('ar-kw', { - months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - -return arKw; - -}))); - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Arabic (Lybia) [ar-ly] -//! author : Ali Hmer: https://github.com/kikoanis - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var symbolMap = { - '1': '1', - '2': '2', - '3': '3', - '4': '4', - '5': '5', - '6': '6', - '7': '7', - '8': '8', - '9': '9', - '0': '0' -}; -var pluralForm = function (n) { - return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; -}; -var plurals = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] -}; -var pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; -}; -var months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر' -]; - -var arLy = moment.defineLocale('ar-ly', { - months : months, - monthsShort : months, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'D/\u200FM/\u200FYYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize('s'), - m : pluralize('m'), - mm : pluralize('m'), - h : pluralize('h'), - hh : pluralize('h'), - d : pluralize('d'), - dd : pluralize('d'), - M : pluralize('M'), - MM : pluralize('M'), - y : pluralize('y'), - yy : pluralize('y') - }, - preparse: function (string) { - return string.replace(/\u200f/g, '').replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - -return arLy; - -}))); - - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Arabic (Morocco) [ar-ma] -//! author : ElFadili Yassine : https://github.com/ElFadiliY -//! author : Abdel Said : https://github.com/abdelsaid - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var arMa = moment.defineLocale('ar-ma', { - months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - -return arMa; - -}))); - - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Arabic (Saudi Arabia) [ar-sa] -//! author : Suhail Alkowaileet : https://github.com/xsoh - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' -}; -var numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' -}; - -var arSa = moment.defineLocale('ar-sa', { - months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - preparse: function (string) { - return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - -return arSa; - -}))); - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Arabic (Tunisia) [ar-tn] -//! author : Nader Toukabri : https://github.com/naderio - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var arTn = moment.defineLocale('ar-tn', { - months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات' - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return arTn; - -}))); - - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Arabic [ar] -//! author : Abdel Said: https://github.com/abdelsaid -//! author : Ahmed Elkhatib -//! author : forabi https://github.com/forabi - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' -}; -var numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' -}; -var pluralForm = function (n) { - return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; -}; -var plurals = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] -}; -var pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; -}; -var months = [ - 'كانون الثاني يناير', - 'شباط فبراير', - 'آذار مارس', - 'نيسان أبريل', - 'أيار مايو', - 'حزيران يونيو', - 'تموز يوليو', - 'آب أغسطس', - 'أيلول سبتمبر', - 'تشرين الأول أكتوبر', - 'تشرين الثاني نوفمبر', - 'كانون الأول ديسمبر' -]; - -var ar = moment.defineLocale('ar', { - months : months, - monthsShort : months, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'D/\u200FM/\u200FYYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize('s'), - m : pluralize('m'), - mm : pluralize('m'), - h : pluralize('h'), - hh : pluralize('h'), - d : pluralize('d'), - dd : pluralize('d'), - M : pluralize('M'), - MM : pluralize('M'), - y : pluralize('y'), - yy : pluralize('y') - }, - preparse: function (string) { - return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - -return ar; - -}))); - - -/***/ }), -/* 12 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Azerbaijani [az] -//! author : topchiyev : https://github.com/topchiyev - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var suffixes = { - 1: '-inci', - 5: '-inci', - 8: '-inci', - 70: '-inci', - 80: '-inci', - 2: '-nci', - 7: '-nci', - 20: '-nci', - 50: '-nci', - 3: '-üncü', - 4: '-üncü', - 100: '-üncü', - 6: '-ncı', - 9: '-uncu', - 10: '-uncu', - 30: '-uncu', - 60: '-ıncı', - 90: '-ıncı' -}; - -var az = moment.defineLocale('az', { - months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'), - monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), - weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), - weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), - weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[sabah saat] LT', - nextWeek : '[gələn həftə] dddd [saat] LT', - lastDay : '[dünən] LT', - lastWeek : '[keçən həftə] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s əvvəl', - s : 'birneçə saniyyə', - m : 'bir dəqiqə', - mm : '%d dəqiqə', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir il', - yy : '%d il' - }, - meridiemParse: /gecə|səhər|gündüz|axşam/, - isPM : function (input) { - return /^(gündüz|axşam)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'gecə'; - } else if (hour < 12) { - return 'səhər'; - } else if (hour < 17) { - return 'gündüz'; - } else { - return 'axşam'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + '-ıncı'; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - return number + (suffixes[a] || suffixes[b] || suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return az; - -}))); - - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Belarusian [be] -//! author : Dmitry Demidov : https://github.com/demidov91 -//! author: Praleska: http://praleska.pro/ -//! Author : Menelion Elensúle : https://github.com/Oire - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); -} -function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', - 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', - 'dd': 'дзень_дні_дзён', - 'MM': 'месяц_месяцы_месяцаў', - 'yy': 'год_гады_гадоў' - }; - if (key === 'm') { - return withoutSuffix ? 'хвіліна' : 'хвіліну'; - } - else if (key === 'h') { - return withoutSuffix ? 'гадзіна' : 'гадзіну'; - } - else { - return number + ' ' + plural(format[key], +number); - } -} - -var be = moment.defineLocale('be', { - months : { - format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'), - standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_') - }, - monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), - weekdays : { - format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'), - standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), - isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/ - }, - weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., HH:mm', - LLLL : 'dddd, D MMMM YYYY г., HH:mm' - }, - calendar : { - sameDay: '[Сёння ў] LT', - nextDay: '[Заўтра ў] LT', - lastDay: '[Учора ў] LT', - nextWeek: function () { - return '[У] dddd [ў] LT'; - }, - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return '[У мінулую] dddd [ў] LT'; - case 1: - case 2: - case 4: - return '[У мінулы] dddd [ў] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'праз %s', - past : '%s таму', - s : 'некалькі секунд', - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : relativeTimeWithPlural, - hh : relativeTimeWithPlural, - d : 'дзень', - dd : relativeTimeWithPlural, - M : 'месяц', - MM : relativeTimeWithPlural, - y : 'год', - yy : relativeTimeWithPlural - }, - meridiemParse: /ночы|раніцы|дня|вечара/, - isPM : function (input) { - return /^(дня|вечара)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночы'; - } else if (hour < 12) { - return 'раніцы'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечара'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; - case 'D': - return number + '-га'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return be; - -}))); - - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Bulgarian [bg] -//! author : Krasen Borisov : https://github.com/kraz - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var bg = moment.defineLocale('bg', { - months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), - weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'D.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Днес в] LT', - nextDay : '[Утре в] LT', - nextWeek : 'dddd [в] LT', - lastDay : '[Вчера в] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[В изминалата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[В изминалия] dddd [в] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'след %s', - past : 'преди %s', - s : 'няколко секунди', - m : 'минута', - mm : '%d минути', - h : 'час', - hh : '%d часа', - d : 'ден', - dd : '%d дни', - M : 'месец', - MM : '%d месеца', - y : 'година', - yy : '%d години' - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return bg; - -}))); - - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Bengali [bn] -//! author : Kaushik Gandhi : https://github.com/kaushikgandhi - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var symbolMap = { - '1': '১', - '2': '২', - '3': '৩', - '4': '৪', - '5': '৫', - '6': '৬', - '7': '৭', - '8': '৮', - '9': '৯', - '0': '০' -}; -var numberMap = { - '১': '1', - '২': '2', - '৩': '3', - '৪': '4', - '৫': '5', - '৬': '6', - '৭': '7', - '৮': '8', - '৯': '9', - '০': '0' -}; - -var bn = moment.defineLocale('bn', { - months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), - monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'), - weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'), - weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), - weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'), - longDateFormat : { - LT : 'A h:mm সময়', - LTS : 'A h:mm:ss সময়', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm সময়', - LLLL : 'dddd, D MMMM YYYY, A h:mm সময়' - }, - calendar : { - sameDay : '[আজ] LT', - nextDay : '[আগামীকাল] LT', - nextWeek : 'dddd, LT', - lastDay : '[গতকাল] LT', - lastWeek : '[গত] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s পরে', - past : '%s আগে', - s : 'কয়েক সেকেন্ড', - m : 'এক মিনিট', - mm : '%d মিনিট', - h : 'এক ঘন্টা', - hh : '%d ঘন্টা', - d : 'এক দিন', - dd : '%d দিন', - M : 'এক মাস', - MM : '%d মাস', - y : 'এক বছর', - yy : '%d বছর' - }, - preparse: function (string) { - return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ((meridiem === 'রাত' && hour >= 4) || - (meridiem === 'দুপুর' && hour < 5) || - meridiem === 'বিকাল') { - return hour + 12; - } else { - return hour; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'রাত'; - } else if (hour < 10) { - return 'সকাল'; - } else if (hour < 17) { - return 'দুপুর'; - } else if (hour < 20) { - return 'বিকাল'; - } else { - return 'রাত'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - -return bn; - -}))); - - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Tibetan [bo] -//! author : Thupten N. Chakrishar : https://github.com/vajradog - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var symbolMap = { - '1': '༡', - '2': '༢', - '3': '༣', - '4': '༤', - '5': '༥', - '6': '༦', - '7': '༧', - '8': '༨', - '9': '༩', - '0': '༠' -}; -var numberMap = { - '༡': '1', - '༢': '2', - '༣': '3', - '༤': '4', - '༥': '5', - '༦': '6', - '༧': '7', - '༨': '8', - '༩': '9', - '༠': '0' -}; - -var bo = moment.defineLocale('bo', { - months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), - weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm', - LLLL : 'dddd, D MMMM YYYY, A h:mm' - }, - calendar : { - sameDay : '[དི་རིང] LT', - nextDay : '[སང་ཉིན] LT', - nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT', - lastDay : '[ཁ་སང] LT', - lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ལ་', - past : '%s སྔན་ལ', - s : 'ལམ་སང', - m : 'སྐར་མ་གཅིག', - mm : '%d སྐར་མ', - h : 'ཆུ་ཚོད་གཅིག', - hh : '%d ཆུ་ཚོད', - d : 'ཉིན་གཅིག', - dd : '%d ཉིན་', - M : 'ཟླ་བ་གཅིག', - MM : '%d ཟླ་བ', - y : 'ལོ་གཅིག', - yy : '%d ལོ' - }, - preparse: function (string) { - return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ((meridiem === 'མཚན་མོ' && hour >= 4) || - (meridiem === 'ཉིན་གུང' && hour < 5) || - meridiem === 'དགོང་དག') { - return hour + 12; - } else { - return hour; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'མཚན་མོ'; - } else if (hour < 10) { - return 'ཞོགས་ཀས'; - } else if (hour < 17) { - return 'ཉིན་གུང'; - } else if (hour < 20) { - return 'དགོང་དག'; - } else { - return 'མཚན་མོ'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - -return bo; - -}))); - - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Breton [br] -//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function relativeTimeWithMutation(number, withoutSuffix, key) { - var format = { - 'mm': 'munutenn', - 'MM': 'miz', - 'dd': 'devezh' - }; - return number + ' ' + mutation(format[key], number); -} -function specialMutationForYears(number) { - switch (lastNumber(number)) { - case 1: - case 3: - case 4: - case 5: - case 9: - return number + ' bloaz'; - default: - return number + ' vloaz'; - } -} -function lastNumber(number) { - if (number > 9) { - return lastNumber(number % 10); - } - return number; -} -function mutation(text, number) { - if (number === 2) { - return softMutation(text); - } - return text; -} -function softMutation(text) { - var mutationTable = { - 'm': 'v', - 'b': 'v', - 'd': 'z' - }; - if (mutationTable[text.charAt(0)] === undefined) { - return text; - } - return mutationTable[text.charAt(0)] + text.substring(1); -} - -var br = moment.defineLocale('br', { - months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), - monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), - weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), - weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), - weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h[e]mm A', - LTS : 'h[e]mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [a viz] MMMM YYYY', - LLL : 'D [a viz] MMMM YYYY h[e]mm A', - LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' - }, - calendar : { - sameDay : '[Hiziv da] LT', - nextDay : '[Warc\'hoazh da] LT', - nextWeek : 'dddd [da] LT', - lastDay : '[Dec\'h da] LT', - lastWeek : 'dddd [paset da] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'a-benn %s', - past : '%s \'zo', - s : 'un nebeud segondennoù', - m : 'ur vunutenn', - mm : relativeTimeWithMutation, - h : 'un eur', - hh : '%d eur', - d : 'un devezh', - dd : relativeTimeWithMutation, - M : 'ur miz', - MM : relativeTimeWithMutation, - y : 'ur bloaz', - yy : specialMutationForYears - }, - dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, - ordinal : function (number) { - var output = (number === 1) ? 'añ' : 'vet'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return br; - -}))); - - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Bosnian [bs] -//! author : Nedim Cholich : https://github.com/frontyard -//! based on (hr) translation by Bojan Marković - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } -} - -var bs = moment.defineLocale('bs', { - months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), - monthsParseExact: true, - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - m : translate, - mm : translate, - h : translate, - hh : translate, - d : 'dan', - dd : translate, - M : 'mjesec', - MM : translate, - y : 'godinu', - yy : translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return bs; - -}))); - - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Catalan [ca] -//! author : Juan G. Hurtado : https://github.com/juanghurtado - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var ca = moment.defineLocale('ca', { - months : { - standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), - format: 'de gener_de febrer_de març_d\'abril_de maig_de juny_de juliol_d\'agost_de setembre_d\'octubre_de novembre_de desembre'.split('_'), - isFormat: /D[oD]?(\s)+MMMM/ - }, - monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'), - monthsParseExact : true, - weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), - weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), - weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : '[el] D MMMM [de] YYYY', - ll : 'D MMM YYYY', - LLL : '[el] D MMMM [de] YYYY [a les] H:mm', - lll : 'D MMM YYYY, H:mm', - LLLL : '[el] dddd D MMMM [de] YYYY [a les] H:mm', - llll : 'ddd D MMM YYYY, H:mm' - }, - calendar : { - sameDay : function () { - return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextDay : function () { - return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastDay : function () { - return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'd\'aquí %s', - past : 'fa %s', - s : 'uns segons', - m : 'un minut', - mm : '%d minuts', - h : 'una hora', - hh : '%d hores', - d : 'un dia', - dd : '%d dies', - M : 'un mes', - MM : '%d mesos', - y : 'un any', - yy : '%d anys' - }, - dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, - ordinal : function (number, period) { - var output = (number === 1) ? 'r' : - (number === 2) ? 'n' : - (number === 3) ? 'r' : - (number === 4) ? 't' : 'è'; - if (period === 'w' || period === 'W') { - output = 'a'; - } - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return ca; - -}))); - - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Czech [cs] -//! author : petrbela : https://github.com/petrbela - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'); -var monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); -function plural(n) { - return (n > 1) && (n < 5) && (~~(n / 10) !== 1); -} -function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minuty' : 'minut'); - } else { - return result + 'minutami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodin'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'den' : 'dnem'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dny' : 'dní'); - } else { - return result + 'dny'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'měsíce' : 'měsíců'); - } else { - return result + 'měsíci'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'let'); - } else { - return result + 'lety'; - } - break; - } -} - -var cs = moment.defineLocale('cs', { - months : months, - monthsShort : monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(months, monthsShort)), - shortMonthsParse : (function (monthsShort) { - var i, _shortMonthsParse = []; - for (i = 0; i < 12; i++) { - _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i'); - } - return _shortMonthsParse; - }(monthsShort)), - longMonthsParse : (function (months) { - var i, _longMonthsParse = []; - for (i = 0; i < 12; i++) { - _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i'); - } - return _longMonthsParse; - }(months)), - weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), - weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), - weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), - longDateFormat : { - LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm', - l : 'D. M. YYYY' - }, - calendar : { - sameDay: '[dnes v] LT', - nextDay: '[zítra v] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v neděli v] LT'; - case 1: - case 2: - return '[v] dddd [v] LT'; - case 3: - return '[ve středu v] LT'; - case 4: - return '[ve čtvrtek v] LT'; - case 5: - return '[v pátek v] LT'; - case 6: - return '[v sobotu v] LT'; - } - }, - lastDay: '[včera v] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulou neděli v] LT'; - case 1: - case 2: - return '[minulé] dddd [v] LT'; - case 3: - return '[minulou středu v] LT'; - case 4: - case 5: - return '[minulý] dddd [v] LT'; - case 6: - return '[minulou sobotu v] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'před %s', - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - dayOfMonthOrdinalParse : /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return cs; - -}))); - - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Chuvash [cv] -//! author : Anatoly Mironov : https://github.com/mirontoli - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var cv = moment.defineLocale('cv', { - months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), - monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), - weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), - weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), - weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', - LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' - }, - calendar : { - sameDay: '[Паян] LT [сехетре]', - nextDay: '[Ыран] LT [сехетре]', - lastDay: '[Ӗнер] LT [сехетре]', - nextWeek: '[Ҫитес] dddd LT [сехетре]', - lastWeek: '[Иртнӗ] dddd LT [сехетре]', - sameElse: 'L' - }, - relativeTime : { - future : function (output) { - var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; - return output + affix; - }, - past : '%s каялла', - s : 'пӗр-ик ҫеккунт', - m : 'пӗр минут', - mm : '%d минут', - h : 'пӗр сехет', - hh : '%d сехет', - d : 'пӗр кун', - dd : '%d кун', - M : 'пӗр уйӑх', - MM : '%d уйӑх', - y : 'пӗр ҫул', - yy : '%d ҫул' - }, - dayOfMonthOrdinalParse: /\d{1,2}-мӗш/, - ordinal : '%d-мӗш', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return cv; - -}))); - - -/***/ }), -/* 22 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Welsh [cy] -//! author : Robert Allen : https://github.com/robgallen -//! author : https://github.com/ryangreaves - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var cy = moment.defineLocale('cy', { - months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), - monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), - weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), - weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), - weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), - weekdaysParseExact : true, - // time formats are the same as en-gb - longDateFormat: { - LT: 'HH:mm', - LTS : 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[Heddiw am] LT', - nextDay: '[Yfory am] LT', - nextWeek: 'dddd [am] LT', - lastDay: '[Ddoe am] LT', - lastWeek: 'dddd [diwethaf am] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'mewn %s', - past: '%s yn ôl', - s: 'ychydig eiliadau', - m: 'munud', - mm: '%d munud', - h: 'awr', - hh: '%d awr', - d: 'diwrnod', - dd: '%d diwrnod', - M: 'mis', - MM: '%d mis', - y: 'blwyddyn', - yy: '%d flynedd' - }, - dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, - // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh - ordinal: function (number) { - var b = number, - output = '', - lookup = [ - '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed - 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed - ]; - if (b > 20) { - if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { - output = 'fed'; // not 30ain, 70ain or 90ain - } else { - output = 'ain'; - } - } else if (b > 0) { - output = lookup[b]; - } - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return cy; - -}))); - - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Danish [da] -//! author : Ulrik Nielsen : https://github.com/mrbase - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var da = moment.defineLocale('da', { - months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm' - }, - calendar : { - sameDay : '[i dag kl.] LT', - nextDay : '[i morgen kl.] LT', - nextWeek : 'på dddd [kl.] LT', - lastDay : '[i går kl.] LT', - lastWeek : '[i] dddd[s kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'få sekunder', - m : 'et minut', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dage', - M : 'en måned', - MM : '%d måneder', - y : 'et år', - yy : '%d år' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return da; - -}))); - - -/***/ }), -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : German (Austria) [de-at] -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire -//! author : Martin Groller : https://github.com/MadMG -//! author : Mikolaj Dadela : https://github.com/mik01aj - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; -} - -var deAt = moment.defineLocale('de-at', { - months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd, D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - m : processRelativeTime, - mm : '%d Minuten', - h : processRelativeTime, - hh : '%d Stunden', - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return deAt; - -}))); - - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : German (Switzerland) [de-ch] -//! author : sschueller : https://github.com/sschueller - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -// based on: https://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de# - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; -} - -var deCh = moment.defineLocale('de-ch', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Febr._März_April_Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT: 'HH.mm', - LTS: 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH.mm', - LLLL : 'dddd, D. MMMM YYYY HH.mm' - }, - calendar : { - sameDay: '[heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - m : processRelativeTime, - mm : '%d Minuten', - h : processRelativeTime, - hh : '%d Stunden', - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return deCh; - -}))); - - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : German [de] -//! author : lluchs : https://github.com/lluchs -//! author: Menelion Elensúle: https://github.com/Oire -//! author : Mikolaj Dadela : https://github.com/mik01aj - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; -} - -var de = moment.defineLocale('de', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd, D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - m : processRelativeTime, - mm : '%d Minuten', - h : processRelativeTime, - hh : '%d Stunden', - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return de; - -}))); - - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Maldivian [dv] -//! author : Jawish Hameed : https://github.com/jawish - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var months = [ - 'ޖެނުއަރީ', - 'ފެބްރުއަރީ', - 'މާރިޗު', - 'އޭޕްރީލު', - 'މޭ', - 'ޖޫން', - 'ޖުލައި', - 'އޯގަސްޓު', - 'ސެޕްޓެމްބަރު', - 'އޮކްޓޯބަރު', - 'ނޮވެމްބަރު', - 'ޑިސެމްބަރު' -]; -var weekdays = [ - 'އާދިއްތަ', - 'ހޯމަ', - 'އަންގާރަ', - 'ބުދަ', - 'ބުރާސްފަތި', - 'ހުކުރު', - 'ހޮނިހިރު' -]; - -var dv = moment.defineLocale('dv', { - months : months, - monthsShort : months, - weekdays : weekdays, - weekdaysShort : weekdays, - weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), - longDateFormat : { - - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'D/M/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /މކ|މފ/, - isPM : function (input) { - return 'މފ' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'މކ'; - } else { - return 'މފ'; - } - }, - calendar : { - sameDay : '[މިއަދު] LT', - nextDay : '[މާދަމާ] LT', - nextWeek : 'dddd LT', - lastDay : '[އިއްޔެ] LT', - lastWeek : '[ފާއިތުވި] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : 'ތެރޭގައި %s', - past : 'ކުރިން %s', - s : 'ސިކުންތުކޮޅެއް', - m : 'މިނިޓެއް', - mm : 'މިނިޓު %d', - h : 'ގަޑިއިރެއް', - hh : 'ގަޑިއިރު %d', - d : 'ދުވަހެއް', - dd : 'ދުވަސް %d', - M : 'މަހެއް', - MM : 'މަސް %d', - y : 'އަހަރެއް', - yy : 'އަހަރު %d' - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week : { - dow : 7, // Sunday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - -return dv; - -}))); - - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Greek [el] -//! author : Aggelos Karalias : https://github.com/mehiel - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - -function isFunction(input) { - return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; -} - - -var el = moment.defineLocale('el', { - monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), - monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), - months : function (momentToFormat, format) { - if (!momentToFormat) { - return this._monthsNominativeEl; - } else if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' - return this._monthsGenitiveEl[momentToFormat.month()]; - } else { - return this._monthsNominativeEl[momentToFormat.month()]; - } - }, - monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), - weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), - weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), - weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'μμ' : 'ΜΜ'; - } else { - return isLower ? 'πμ' : 'ΠΜ'; - } - }, - isPM : function (input) { - return ((input + '').toLowerCase()[0] === 'μ'); - }, - meridiemParse : /[ΠΜ]\.?Μ?\.?/i, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendarEl : { - sameDay : '[Σήμερα {}] LT', - nextDay : '[Αύριο {}] LT', - nextWeek : 'dddd [{}] LT', - lastDay : '[Χθες {}] LT', - lastWeek : function () { - switch (this.day()) { - case 6: - return '[το προηγούμενο] dddd [{}] LT'; - default: - return '[την προηγούμενη] dddd [{}] LT'; - } - }, - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendarEl[key], - hours = mom && mom.hours(); - if (isFunction(output)) { - output = output.apply(mom); - } - return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); - }, - relativeTime : { - future : 'σε %s', - past : '%s πριν', - s : 'λίγα δευτερόλεπτα', - m : 'ένα λεπτό', - mm : '%d λεπτά', - h : 'μία ώρα', - hh : '%d ώρες', - d : 'μία μέρα', - dd : '%d μέρες', - M : 'ένας μήνας', - MM : '%d μήνες', - y : 'ένας χρόνος', - yy : '%d χρόνια' - }, - dayOfMonthOrdinalParse: /\d{1,2}η/, - ordinal: '%dη', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4st is the first week of the year. - } -}); - -return el; - -}))); - - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : English (Australia) [en-au] -//! author : Jared Morse : https://github.com/jarcoal - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var enAu = moment.defineLocale('en-au', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return enAu; - -}))); - - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : English (Canada) [en-ca] -//! author : Jonathan Abourbih : https://github.com/jonbca - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var enCa = moment.defineLocale('en-ca', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'YYYY-MM-DD', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY h:mm A', - LLLL : 'dddd, MMMM D, YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } -}); - -return enCa; - -}))); - - -/***/ }), -/* 31 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : English (United Kingdom) [en-gb] -//! author : Chris Gedrim : https://github.com/chrisgedrim - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var enGb = moment.defineLocale('en-gb', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return enGb; - -}))); - - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : English (Ireland) [en-ie] -//! author : Chris Cartlidge : https://github.com/chriscartlidge - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var enIe = moment.defineLocale('en-ie', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return enIe; - -}))); - - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : English (New Zealand) [en-nz] -//! author : Luke McGregor : https://github.com/lukemcgregor - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var enNz = moment.defineLocale('en-nz', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return enNz; - -}))); - - -/***/ }), -/* 34 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Esperanto [eo] -//! author : Colin Dean : https://github.com/colindean -//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia -//! comment : miestasmia corrected the translation by colindean - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var eo = moment.defineLocale('eo', { - months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), - weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), - weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), - weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D[-a de] MMMM, YYYY', - LLL : 'D[-a de] MMMM, YYYY HH:mm', - LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm' - }, - meridiemParse: /[ap]\.t\.m/i, - isPM: function (input) { - return input.charAt(0).toLowerCase() === 'p'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'p.t.m.' : 'P.T.M.'; - } else { - return isLower ? 'a.t.m.' : 'A.T.M.'; - } - }, - calendar : { - sameDay : '[Hodiaŭ je] LT', - nextDay : '[Morgaŭ je] LT', - nextWeek : 'dddd [je] LT', - lastDay : '[Hieraŭ je] LT', - lastWeek : '[pasinta] dddd [je] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'post %s', - past : 'antaŭ %s', - s : 'sekundoj', - m : 'minuto', - mm : '%d minutoj', - h : 'horo', - hh : '%d horoj', - d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo - dd : '%d tagoj', - M : 'monato', - MM : '%d monatoj', - y : 'jaro', - yy : '%d jaroj' - }, - dayOfMonthOrdinalParse: /\d{1,2}a/, - ordinal : '%da', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return eo; - -}))); - - -/***/ }), -/* 35 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Spanish (Dominican Republic) [es-do] - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'); -var monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - -var esDo = moment.defineLocale('es-do', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { - if (!m) { - return monthsShortDot; - } else if (/-MMM-/.test(format)) { - return monthsShort[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - monthsParseExact : true, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY h:mm A', - LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return esDo; - -}))); - - -/***/ }), -/* 36 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Spanish [es] -//! author : Julio Napurí : https://github.com/julionc - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'); -var monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - -var es = moment.defineLocale('es', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { - if (!m) { - return monthsShortDot; - } else if (/-MMM-/.test(format)) { - return monthsShort[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - monthsParseExact : true, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return es; - -}))); - - -/***/ }), -/* 37 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Estonian [et] -//! author : Henry Kehlmann : https://github.com/madhenry -//! improvements : Illimar Tambek : https://github.com/ragulka - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], - 'm' : ['ühe minuti', 'üks minut'], - 'mm': [number + ' minuti', number + ' minutit'], - 'h' : ['ühe tunni', 'tund aega', 'üks tund'], - 'hh': [number + ' tunni', number + ' tundi'], - 'd' : ['ühe päeva', 'üks päev'], - 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], - 'MM': [number + ' kuu', number + ' kuud'], - 'y' : ['ühe aasta', 'aasta', 'üks aasta'], - 'yy': [number + ' aasta', number + ' aastat'] - }; - if (withoutSuffix) { - return format[key][2] ? format[key][2] : format[key][1]; - } - return isFuture ? format[key][0] : format[key][1]; -} - -var et = moment.defineLocale('et', { - months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), - monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), - weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), - weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), - weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Täna,] LT', - nextDay : '[Homme,] LT', - nextWeek : '[Järgmine] dddd LT', - lastDay : '[Eile,] LT', - lastWeek : '[Eelmine] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s pärast', - past : '%s tagasi', - s : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : '%d päeva', - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return et; - -}))); - - -/***/ }), -/* 38 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Basque [eu] -//! author : Eneko Illarramendi : https://github.com/eillarra - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var eu = moment.defineLocale('eu', { - months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), - monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), - monthsParseExact : true, - weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), - weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), - weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY[ko] MMMM[ren] D[a]', - LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', - LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', - l : 'YYYY-M-D', - ll : 'YYYY[ko] MMM D[a]', - lll : 'YYYY[ko] MMM D[a] HH:mm', - llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' - }, - calendar : { - sameDay : '[gaur] LT[etan]', - nextDay : '[bihar] LT[etan]', - nextWeek : 'dddd LT[etan]', - lastDay : '[atzo] LT[etan]', - lastWeek : '[aurreko] dddd LT[etan]', - sameElse : 'L' - }, - relativeTime : { - future : '%s barru', - past : 'duela %s', - s : 'segundo batzuk', - m : 'minutu bat', - mm : '%d minutu', - h : 'ordu bat', - hh : '%d ordu', - d : 'egun bat', - dd : '%d egun', - M : 'hilabete bat', - MM : '%d hilabete', - y : 'urte bat', - yy : '%d urte' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return eu; - -}))); - - -/***/ }), -/* 39 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Persian [fa] -//! author : Ebrahim Byagowi : https://github.com/ebraminio - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var symbolMap = { - '1': '۱', - '2': '۲', - '3': '۳', - '4': '۴', - '5': '۵', - '6': '۶', - '7': '۷', - '8': '۸', - '9': '۹', - '0': '۰' -}; -var numberMap = { - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - '۰': '0' -}; - -var fa = moment.defineLocale('fa', { - months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - meridiemParse: /قبل از ظهر|بعد از ظهر/, - isPM: function (input) { - return /بعد از ظهر/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'قبل از ظهر'; - } else { - return 'بعد از ظهر'; - } - }, - calendar : { - sameDay : '[امروز ساعت] LT', - nextDay : '[فردا ساعت] LT', - nextWeek : 'dddd [ساعت] LT', - lastDay : '[دیروز ساعت] LT', - lastWeek : 'dddd [پیش] [ساعت] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'در %s', - past : '%s پیش', - s : 'چند ثانیه', - m : 'یک دقیقه', - mm : '%d دقیقه', - h : 'یک ساعت', - hh : '%d ساعت', - d : 'یک روز', - dd : '%d روز', - M : 'یک ماه', - MM : '%d ماه', - y : 'یک سال', - yy : '%d سال' - }, - preparse: function (string) { - return string.replace(/[۰-۹]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - dayOfMonthOrdinalParse: /\d{1,2}م/, - ordinal : '%dم', - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - -return fa; - -}))); - - -/***/ }), -/* 40 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Finnish [fi] -//! author : Tarmo Aidantausta : https://github.com/bleadof - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '); -var numbersFuture = [ - 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', - numbersPast[7], numbersPast[8], numbersPast[9] - ]; -function translate(number, withoutSuffix, key, isFuture) { - var result = ''; - switch (key) { - case 's': - return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; - case 'm': - return isFuture ? 'minuutin' : 'minuutti'; - case 'mm': - result = isFuture ? 'minuutin' : 'minuuttia'; - break; - case 'h': - return isFuture ? 'tunnin' : 'tunti'; - case 'hh': - result = isFuture ? 'tunnin' : 'tuntia'; - break; - case 'd': - return isFuture ? 'päivän' : 'päivä'; - case 'dd': - result = isFuture ? 'päivän' : 'päivää'; - break; - case 'M': - return isFuture ? 'kuukauden' : 'kuukausi'; - case 'MM': - result = isFuture ? 'kuukauden' : 'kuukautta'; - break; - case 'y': - return isFuture ? 'vuoden' : 'vuosi'; - case 'yy': - result = isFuture ? 'vuoden' : 'vuotta'; - break; - } - result = verbalNumber(number, isFuture) + ' ' + result; - return result; -} -function verbalNumber(number, isFuture) { - return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; -} - -var fi = moment.defineLocale('fi', { - months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), - monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), - weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), - weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), - weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'Do MMMM[ta] YYYY', - LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', - LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', - l : 'D.M.YYYY', - ll : 'Do MMM YYYY', - lll : 'Do MMM YYYY, [klo] HH.mm', - llll : 'ddd, Do MMM YYYY, [klo] HH.mm' - }, - calendar : { - sameDay : '[tänään] [klo] LT', - nextDay : '[huomenna] [klo] LT', - nextWeek : 'dddd [klo] LT', - lastDay : '[eilen] [klo] LT', - lastWeek : '[viime] dddd[na] [klo] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s päästä', - past : '%s sitten', - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return fi; - -}))); - - -/***/ }), -/* 41 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Faroese [fo] -//! author : Ragnar Johannesen : https://github.com/ragnar123 - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var fo = moment.defineLocale('fo', { - months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), - weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), - weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D. MMMM, YYYY HH:mm' - }, - calendar : { - sameDay : '[Í dag kl.] LT', - nextDay : '[Í morgin kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[Í gjár kl.] LT', - lastWeek : '[síðstu] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'um %s', - past : '%s síðani', - s : 'fá sekund', - m : 'ein minutt', - mm : '%d minuttir', - h : 'ein tími', - hh : '%d tímar', - d : 'ein dagur', - dd : '%d dagar', - M : 'ein mánaði', - MM : '%d mánaðir', - y : 'eitt ár', - yy : '%d ár' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return fo; - -}))); - - -/***/ }), -/* 42 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : French (Canada) [fr-ca] -//! author : Jonathan Abourbih : https://github.com/jonbca - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var frCa = moment.defineLocale('fr-ca', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal : function (number, period) { - switch (period) { - // Words with masculine grammatical gender: mois, trimestre, jour - default: - case 'M': - case 'Q': - case 'D': - case 'DDD': - case 'd': - return number + (number === 1 ? 'er' : 'e'); - - // Words with feminine grammatical gender: semaine - case 'w': - case 'W': - return number + (number === 1 ? 're' : 'e'); - } - } -}); - -return frCa; - -}))); - - -/***/ }), -/* 43 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : French (Switzerland) [fr-ch] -//! author : Gaspard Bucher : https://github.com/gaspard - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var frCh = moment.defineLocale('fr-ch', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal : function (number, period) { - switch (period) { - // Words with masculine grammatical gender: mois, trimestre, jour - default: - case 'M': - case 'Q': - case 'D': - case 'DDD': - case 'd': - return number + (number === 1 ? 'er' : 'e'); - - // Words with feminine grammatical gender: semaine - case 'w': - case 'W': - return number + (number === 1 ? 're' : 'e'); - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return frCh; - -}))); - - -/***/ }), -/* 44 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : French [fr] -//! author : John Fischer : https://github.com/jfroffice - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var fr = moment.defineLocale('fr', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - dayOfMonthOrdinalParse: /\d{1,2}(er|)/, - ordinal : function (number, period) { - switch (period) { - // TODO: Return 'e' when day of month > 1. Move this case inside - // block for masculine words below. - // See https://github.com/moment/moment/issues/3375 - case 'D': - return number + (number === 1 ? 'er' : ''); - - // Words with masculine grammatical gender: mois, trimestre, jour - default: - case 'M': - case 'Q': - case 'DDD': - case 'd': - return number + (number === 1 ? 'er' : 'e'); - - // Words with feminine grammatical gender: semaine - case 'w': - case 'W': - return number + (number === 1 ? 're' : 'e'); - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return fr; - -}))); - - -/***/ }), -/* 45 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Frisian [fy] -//! author : Robin van der Vliet : https://github.com/robin0van0der0v - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'); -var monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); - -var fy = moment.defineLocale('fy', { - months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), - monthsShort : function (m, format) { - if (!m) { - return monthsShortWithDots; - } else if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, - monthsParseExact : true, - weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), - weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), - weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[hjoed om] LT', - nextDay: '[moarn om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[juster om] LT', - lastWeek: '[ôfrûne] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'oer %s', - past : '%s lyn', - s : 'in pear sekonden', - m : 'ien minút', - mm : '%d minuten', - h : 'ien oere', - hh : '%d oeren', - d : 'ien dei', - dd : '%d dagen', - M : 'ien moanne', - MM : '%d moannen', - y : 'ien jier', - yy : '%d jierren' - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return fy; - -}))); - - -/***/ }), -/* 46 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Scottish Gaelic [gd] -//! author : Jon Ashdown : https://github.com/jonashdown - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var months = [ - 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd' -]; - -var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh']; - -var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne']; - -var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis']; - -var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; - -var gd = moment.defineLocale('gd', { - months : months, - monthsShort : monthsShort, - monthsParseExact : true, - weekdays : weekdays, - weekdaysShort : weekdaysShort, - weekdaysMin : weekdaysMin, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[An-diugh aig] LT', - nextDay : '[A-màireach aig] LT', - nextWeek : 'dddd [aig] LT', - lastDay : '[An-dè aig] LT', - lastWeek : 'dddd [seo chaidh] [aig] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'ann an %s', - past : 'bho chionn %s', - s : 'beagan diogan', - m : 'mionaid', - mm : '%d mionaidean', - h : 'uair', - hh : '%d uairean', - d : 'latha', - dd : '%d latha', - M : 'mìos', - MM : '%d mìosan', - y : 'bliadhna', - yy : '%d bliadhna' - }, - dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/, - ordinal : function (number) { - var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return gd; - -}))); - - -/***/ }), -/* 47 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Galician [gl] -//! author : Juan G. Hurtado : https://github.com/juanghurtado - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var gl = moment.defineLocale('gl', { - months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'), - monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'), - monthsParseExact: true, - weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextDay : function () { - return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextWeek : function () { - return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - lastDay : function () { - return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; - }, - lastWeek : function () { - return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : function (str) { - if (str.indexOf('un') === 0) { - return 'n' + str; - } - return 'en ' + str; - }, - past : 'hai %s', - s : 'uns segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'unha hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un ano', - yy : '%d anos' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return gl; - -}))); - - -/***/ }), -/* 48 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Konkani Latin script [gom-latn] -//! author : The Discoverer : https://github.com/WikiDiscoverer - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 's': ['thodde secondanim', 'thodde second'], - 'm': ['eka mintan', 'ek minute'], - 'mm': [number + ' mintanim', number + ' mintam'], - 'h': ['eka horan', 'ek hor'], - 'hh': [number + ' horanim', number + ' hor'], - 'd': ['eka disan', 'ek dis'], - 'dd': [number + ' disanim', number + ' dis'], - 'M': ['eka mhoinean', 'ek mhoino'], - 'MM': [number + ' mhoineanim', number + ' mhoine'], - 'y': ['eka vorsan', 'ek voros'], - 'yy': [number + ' vorsanim', number + ' vorsam'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; -} - -var gomLatn = moment.defineLocale('gom-latn', { - months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'), - monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'), - weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), - weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'A h:mm [vazta]', - LTS : 'A h:mm:ss [vazta]', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY A h:mm [vazta]', - LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]', - llll: 'ddd, D MMM YYYY, A h:mm [vazta]' - }, - calendar : { - sameDay: '[Aiz] LT', - nextDay: '[Faleam] LT', - nextWeek: '[Ieta to] dddd[,] LT', - lastDay: '[Kal] LT', - lastWeek: '[Fatlo] dddd[,] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s', - past : '%s adim', - s : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - dayOfMonthOrdinalParse : /\d{1,2}(er)/, - ordinal : function (number, period) { - switch (period) { - // the ordinal 'er' only applies to day of the month - case 'D': - return number + 'er'; - default: - case 'M': - case 'Q': - case 'DDD': - case 'd': - case 'w': - case 'W': - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - }, - meridiemParse: /rati|sokalli|donparam|sanje/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'rati') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'sokalli') { - return hour; - } else if (meridiem === 'donparam') { - return hour > 12 ? hour : hour + 12; - } else if (meridiem === 'sanje') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'rati'; - } else if (hour < 12) { - return 'sokalli'; - } else if (hour < 16) { - return 'donparam'; - } else if (hour < 20) { - return 'sanje'; - } else { - return 'rati'; - } - } -}); - -return gomLatn; - -}))); - - -/***/ }), -/* 49 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Hebrew [he] -//! author : Tomer Cohen : https://github.com/tomer -//! author : Moshe Simantov : https://github.com/DevelopmentIL -//! author : Tal Ater : https://github.com/TalAter - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var he = moment.defineLocale('he', { - months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), - monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), - weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), - weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), - weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [ב]MMMM YYYY', - LLL : 'D [ב]MMMM YYYY HH:mm', - LLLL : 'dddd, D [ב]MMMM YYYY HH:mm', - l : 'D/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - calendar : { - sameDay : '[היום ב־]LT', - nextDay : '[מחר ב־]LT', - nextWeek : 'dddd [בשעה] LT', - lastDay : '[אתמול ב־]LT', - lastWeek : '[ביום] dddd [האחרון בשעה] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'בעוד %s', - past : 'לפני %s', - s : 'מספר שניות', - m : 'דקה', - mm : '%d דקות', - h : 'שעה', - hh : function (number) { - if (number === 2) { - return 'שעתיים'; - } - return number + ' שעות'; - }, - d : 'יום', - dd : function (number) { - if (number === 2) { - return 'יומיים'; - } - return number + ' ימים'; - }, - M : 'חודש', - MM : function (number) { - if (number === 2) { - return 'חודשיים'; - } - return number + ' חודשים'; - }, - y : 'שנה', - yy : function (number) { - if (number === 2) { - return 'שנתיים'; - } else if (number % 10 === 0 && number !== 10) { - return number + ' שנה'; - } - return number + ' שנים'; - } - }, - meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, - isPM : function (input) { - return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 5) { - return 'לפנות בוקר'; - } else if (hour < 10) { - return 'בבוקר'; - } else if (hour < 12) { - return isLower ? 'לפנה"צ' : 'לפני הצהריים'; - } else if (hour < 18) { - return isLower ? 'אחה"צ' : 'אחרי הצהריים'; - } else { - return 'בערב'; - } - } -}); - -return he; - -}))); - - -/***/ }), -/* 50 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Hindi [hi] -//! author : Mayank Singhal : https://github.com/mayanksinghal - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' -}; -var numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' -}; - -var hi = moment.defineLocale('hi', { - months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), - monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), - monthsParseExact: true, - weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat : { - LT : 'A h:mm बजे', - LTS : 'A h:mm:ss बजे', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm बजे', - LLLL : 'dddd, D MMMM YYYY, A h:mm बजे' - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[कल] LT', - nextWeek : 'dddd, LT', - lastDay : '[कल] LT', - lastWeek : '[पिछले] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s में', - past : '%s पहले', - s : 'कुछ ही क्षण', - m : 'एक मिनट', - mm : '%d मिनट', - h : 'एक घंटा', - hh : '%d घंटे', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महीने', - MM : '%d महीने', - y : 'एक वर्ष', - yy : '%d वर्ष' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // Hindi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. - meridiemParse: /रात|सुबह|दोपहर|शाम/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सुबह') { - return hour; - } else if (meridiem === 'दोपहर') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'शाम') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'रात'; - } else if (hour < 10) { - return 'सुबह'; - } else if (hour < 17) { - return 'दोपहर'; - } else if (hour < 20) { - return 'शाम'; - } else { - return 'रात'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - -return hi; - -}))); - - -/***/ }), -/* 51 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Croatian [hr] -//! author : Bojan Marković : https://github.com/bmarkovic - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } -} - -var hr = moment.defineLocale('hr', { - months : { - format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'), - standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_') - }, - monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), - monthsParseExact: true, - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - m : translate, - mm : translate, - h : translate, - hh : translate, - d : 'dan', - dd : translate, - M : 'mjesec', - MM : translate, - y : 'godinu', - yy : translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return hr; - -}))); - - -/***/ }), -/* 52 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Hungarian [hu] -//! author : Adam Brunner : https://github.com/adambrunner - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); -function translate(number, withoutSuffix, key, isFuture) { - var num = number, - suffix; - switch (key) { - case 's': - return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; - case 'm': - return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'mm': - return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'h': - return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'hh': - return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'd': - return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'dd': - return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'M': - return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'MM': - return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'y': - return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); - case 'yy': - return num + (isFuture || withoutSuffix ? ' év' : ' éve'); - } - return ''; -} -function week(isFuture) { - return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; -} - -var hu = moment.defineLocale('hu', { - months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), - monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), - weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), - weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), - weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'YYYY.MM.DD.', - LL : 'YYYY. MMMM D.', - LLL : 'YYYY. MMMM D. H:mm', - LLLL : 'YYYY. MMMM D., dddd H:mm' - }, - meridiemParse: /de|du/i, - isPM: function (input) { - return input.charAt(1).toLowerCase() === 'u'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower === true ? 'de' : 'DE'; - } else { - return isLower === true ? 'du' : 'DU'; - } - }, - calendar : { - sameDay : '[ma] LT[-kor]', - nextDay : '[holnap] LT[-kor]', - nextWeek : function () { - return week.call(this, true); - }, - lastDay : '[tegnap] LT[-kor]', - lastWeek : function () { - return week.call(this, false); - }, - sameElse : 'L' - }, - relativeTime : { - future : '%s múlva', - past : '%s', - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return hu; - -}))); - - -/***/ }), -/* 53 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Armenian [hy-am] -//! author : Armendarabyan : https://github.com/armendarabyan - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var hyAm = moment.defineLocale('hy-am', { - months : { - format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'), - standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_') - }, - monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), - weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'), - weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY թ.', - LLL : 'D MMMM YYYY թ., HH:mm', - LLLL : 'dddd, D MMMM YYYY թ., HH:mm' - }, - calendar : { - sameDay: '[այսօր] LT', - nextDay: '[վաղը] LT', - lastDay: '[երեկ] LT', - nextWeek: function () { - return 'dddd [օրը ժամը] LT'; - }, - lastWeek: function () { - return '[անցած] dddd [օրը ժամը] LT'; - }, - sameElse: 'L' - }, - relativeTime : { - future : '%s հետո', - past : '%s առաջ', - s : 'մի քանի վայրկյան', - m : 'րոպե', - mm : '%d րոպե', - h : 'ժամ', - hh : '%d ժամ', - d : 'օր', - dd : '%d օր', - M : 'ամիս', - MM : '%d ամիս', - y : 'տարի', - yy : '%d տարի' - }, - meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, - isPM: function (input) { - return /^(ցերեկվա|երեկոյան)$/.test(input); - }, - meridiem : function (hour) { - if (hour < 4) { - return 'գիշերվա'; - } else if (hour < 12) { - return 'առավոտվա'; - } else if (hour < 17) { - return 'ցերեկվա'; - } else { - return 'երեկոյան'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, - ordinal: function (number, period) { - switch (period) { - case 'DDD': - case 'w': - case 'W': - case 'DDDo': - if (number === 1) { - return number + '-ին'; - } - return number + '-րդ'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return hyAm; - -}))); - - -/***/ }), -/* 54 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Indonesian [id] -//! author : Mohammad Satrio Utomo : https://github.com/tyok -//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var id = moment.defineLocale('id', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|siang|sore|malam/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'siang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sore' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'siang'; - } else if (hours < 19) { - return 'sore'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Besok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kemarin pukul] LT', - lastWeek : 'dddd [lalu pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lalu', - s : 'beberapa detik', - m : 'semenit', - mm : '%d menit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return id; - -}))); - - -/***/ }), -/* 55 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Icelandic [is] -//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function plural(n) { - if (n % 100 === 11) { - return true; - } else if (n % 10 === 1) { - return false; - } - return true; -} -function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; - case 'm': - return withoutSuffix ? 'mínúta' : 'mínútu'; - case 'mm': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); - } else if (withoutSuffix) { - return result + 'mínúta'; - } - return result + 'mínútu'; - case 'hh': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); - } - return result + 'klukkustund'; - case 'd': - if (withoutSuffix) { - return 'dagur'; - } - return isFuture ? 'dag' : 'degi'; - case 'dd': - if (plural(number)) { - if (withoutSuffix) { - return result + 'dagar'; - } - return result + (isFuture ? 'daga' : 'dögum'); - } else if (withoutSuffix) { - return result + 'dagur'; - } - return result + (isFuture ? 'dag' : 'degi'); - case 'M': - if (withoutSuffix) { - return 'mánuður'; - } - return isFuture ? 'mánuð' : 'mánuði'; - case 'MM': - if (plural(number)) { - if (withoutSuffix) { - return result + 'mánuðir'; - } - return result + (isFuture ? 'mánuði' : 'mánuðum'); - } else if (withoutSuffix) { - return result + 'mánuður'; - } - return result + (isFuture ? 'mánuð' : 'mánuði'); - case 'y': - return withoutSuffix || isFuture ? 'ár' : 'ári'; - case 'yy': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); - } - return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); - } -} - -var is = moment.defineLocale('is', { - months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), - weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), - weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), - weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' - }, - calendar : { - sameDay : '[í dag kl.] LT', - nextDay : '[á morgun kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[í gær kl.] LT', - lastWeek : '[síðasta] dddd [kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'eftir %s', - past : 'fyrir %s síðan', - s : translate, - m : translate, - mm : translate, - h : 'klukkustund', - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return is; - -}))); - - -/***/ }), -/* 56 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Italian [it] -//! author : Lorenzo : https://github.com/aliem -//! author: Mattia Larentis: https://github.com/nostalgiaz - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var it = moment.defineLocale('it', { - months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), - monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'), - weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'), - weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[la scorsa] dddd [alle] LT'; - default: - return '[lo scorso] dddd [alle] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; - }, - past : '%s fa', - s : 'alcuni secondi', - m : 'un minuto', - mm : '%d minuti', - h : 'un\'ora', - hh : '%d ore', - d : 'un giorno', - dd : '%d giorni', - M : 'un mese', - MM : '%d mesi', - y : 'un anno', - yy : '%d anni' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal: '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return it; - -}))); - - -/***/ }), -/* 57 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Japanese [ja] -//! author : LI Long : https://github.com/baryon - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var ja = moment.defineLocale('ja', { - months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), - weekdaysShort : '日_月_火_水_木_金_土'.split('_'), - weekdaysMin : '日_月_火_水_木_金_土'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日 HH:mm', - LLLL : 'YYYY年M月D日 HH:mm dddd', - l : 'YYYY/MM/DD', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日 HH:mm dddd' - }, - meridiemParse: /午前|午後/i, - isPM : function (input) { - return input === '午後'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return '午前'; - } else { - return '午後'; - } - }, - calendar : { - sameDay : '[今日] LT', - nextDay : '[明日] LT', - nextWeek : '[来週]dddd LT', - lastDay : '[昨日] LT', - lastWeek : '[前週]dddd LT', - sameElse : 'L' - }, - dayOfMonthOrdinalParse : /\d{1,2}日/, - ordinal : function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - default: - return number; - } - }, - relativeTime : { - future : '%s後', - past : '%s前', - s : '数秒', - m : '1分', - mm : '%d分', - h : '1時間', - hh : '%d時間', - d : '1日', - dd : '%d日', - M : '1ヶ月', - MM : '%dヶ月', - y : '1年', - yy : '%d年' - } -}); - -return ja; - -}))); - - -/***/ }), -/* 58 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Javanese [jv] -//! author : Rony Lantip : https://github.com/lantip -//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var jv = moment.defineLocale('jv', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), - weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /enjing|siyang|sonten|ndalu/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'enjing') { - return hour; - } else if (meridiem === 'siyang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sonten' || meridiem === 'ndalu') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'enjing'; - } else if (hours < 15) { - return 'siyang'; - } else if (hours < 19) { - return 'sonten'; - } else { - return 'ndalu'; - } - }, - calendar : { - sameDay : '[Dinten puniko pukul] LT', - nextDay : '[Mbenjang pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kala wingi pukul] LT', - lastWeek : 'dddd [kepengker pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'wonten ing %s', - past : '%s ingkang kepengker', - s : 'sawetawis detik', - m : 'setunggal menit', - mm : '%d menit', - h : 'setunggal jam', - hh : '%d jam', - d : 'sedinten', - dd : '%d dinten', - M : 'sewulan', - MM : '%d wulan', - y : 'setaun', - yy : '%d taun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return jv; - -}))); - - -/***/ }), -/* 59 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Georgian [ka] -//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var ka = moment.defineLocale('ka', { - months : { - standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), - format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') - }, - monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), - weekdays : { - standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), - format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'), - isFormat: /(წინა|შემდეგ)/ - }, - weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), - weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[დღეს] LT[-ზე]', - nextDay : '[ხვალ] LT[-ზე]', - lastDay : '[გუშინ] LT[-ზე]', - nextWeek : '[შემდეგ] dddd LT[-ზე]', - lastWeek : '[წინა] dddd LT-ზე', - sameElse : 'L' - }, - relativeTime : { - future : function (s) { - return (/(წამი|წუთი|საათი|წელი)/).test(s) ? - s.replace(/ი$/, 'ში') : - s + 'ში'; - }, - past : function (s) { - if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { - return s.replace(/(ი|ე)$/, 'ის უკან'); - } - if ((/წელი/).test(s)) { - return s.replace(/წელი$/, 'წლის უკან'); - } - }, - s : 'რამდენიმე წამი', - m : 'წუთი', - mm : '%d წუთი', - h : 'საათი', - hh : '%d საათი', - d : 'დღე', - dd : '%d დღე', - M : 'თვე', - MM : '%d თვე', - y : 'წელი', - yy : '%d წელი' - }, - dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, - ordinal : function (number) { - if (number === 0) { - return number; - } - if (number === 1) { - return number + '-ლი'; - } - if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { - return 'მე-' + number; - } - return number + '-ე'; - }, - week : { - dow : 1, - doy : 7 - } -}); - -return ka; - -}))); - - -/***/ }), -/* 60 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Kazakh [kk] -//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var suffixes = { - 0: '-ші', - 1: '-ші', - 2: '-ші', - 3: '-ші', - 4: '-ші', - 5: '-ші', - 6: '-шы', - 7: '-ші', - 8: '-ші', - 9: '-шы', - 10: '-шы', - 20: '-шы', - 30: '-шы', - 40: '-шы', - 50: '-ші', - 60: '-шы', - 70: '-ші', - 80: '-ші', - 90: '-шы', - 100: '-ші' -}; - -var kk = moment.defineLocale('kk', { - months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'), - monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), - weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'), - weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), - weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Бүгін сағат] LT', - nextDay : '[Ертең сағат] LT', - nextWeek : 'dddd [сағат] LT', - lastDay : '[Кеше сағат] LT', - lastWeek : '[Өткен аптаның] dddd [сағат] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ішінде', - past : '%s бұрын', - s : 'бірнеше секунд', - m : 'бір минут', - mm : '%d минут', - h : 'бір сағат', - hh : '%d сағат', - d : 'бір күн', - dd : '%d күн', - M : 'бір ай', - MM : '%d ай', - y : 'бір жыл', - yy : '%d жыл' - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/, - ordinal : function (number) { - var a = number % 10, - b = number >= 100 ? 100 : null; - return number + (suffixes[number] || suffixes[a] || suffixes[b]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return kk; - -}))); - - -/***/ }), -/* 61 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Cambodian [km] -//! author : Kruy Vanna : https://github.com/kruyvanna - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var km = moment.defineLocale('km', { - months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), - monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), - weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS : 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[ថ្ងៃនេះ ម៉ោង] LT', - nextDay: '[ស្អែក ម៉ោង] LT', - nextWeek: 'dddd [ម៉ោង] LT', - lastDay: '[ម្សិលមិញ ម៉ោង] LT', - lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', - sameElse: 'L' - }, - relativeTime: { - future: '%sទៀត', - past: '%sមុន', - s: 'ប៉ុន្មានវិនាទី', - m: 'មួយនាទី', - mm: '%d នាទី', - h: 'មួយម៉ោង', - hh: '%d ម៉ោង', - d: 'មួយថ្ងៃ', - dd: '%d ថ្ងៃ', - M: 'មួយខែ', - MM: '%d ខែ', - y: 'មួយឆ្នាំ', - yy: '%d ឆ្នាំ' - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return km; - -}))); - - -/***/ }), -/* 62 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Kannada [kn] -//! author : Rajeev Naik : https://github.com/rajeevnaikte - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var symbolMap = { - '1': '೧', - '2': '೨', - '3': '೩', - '4': '೪', - '5': '೫', - '6': '೬', - '7': '೭', - '8': '೮', - '9': '೯', - '0': '೦' -}; -var numberMap = { - '೧': '1', - '೨': '2', - '೩': '3', - '೪': '4', - '೫': '5', - '೬': '6', - '೭': '7', - '೮': '8', - '೯': '9', - '೦': '0' -}; - -var kn = moment.defineLocale('kn', { - months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'), - monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬ_ನವೆಂಬ_ಡಿಸೆಂಬ'.split('_'), - monthsParseExact: true, - weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'), - weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), - weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm', - LLLL : 'dddd, D MMMM YYYY, A h:mm' - }, - calendar : { - sameDay : '[ಇಂದು] LT', - nextDay : '[ನಾಳೆ] LT', - nextWeek : 'dddd, LT', - lastDay : '[ನಿನ್ನೆ] LT', - lastWeek : '[ಕೊನೆಯ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ನಂತರ', - past : '%s ಹಿಂದೆ', - s : 'ಕೆಲವು ಕ್ಷಣಗಳು', - m : 'ಒಂದು ನಿಮಿಷ', - mm : '%d ನಿಮಿಷ', - h : 'ಒಂದು ಗಂಟೆ', - hh : '%d ಗಂಟೆ', - d : 'ಒಂದು ದಿನ', - dd : '%d ದಿನ', - M : 'ಒಂದು ತಿಂಗಳು', - MM : '%d ತಿಂಗಳು', - y : 'ಒಂದು ವರ್ಷ', - yy : '%d ವರ್ಷ' - }, - preparse: function (string) { - return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'ರಾತ್ರಿ') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') { - return hour; - } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'ಸಂಜೆ') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ರಾತ್ರಿ'; - } else if (hour < 10) { - return 'ಬೆಳಿಗ್ಗೆ'; - } else if (hour < 17) { - return 'ಮಧ್ಯಾಹ್ನ'; - } else if (hour < 20) { - return 'ಸಂಜೆ'; - } else { - return 'ರಾತ್ರಿ'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/, - ordinal : function (number) { - return number + 'ನೇ'; - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - -return kn; - -}))); - - -/***/ }), -/* 63 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Korean [ko] -//! author : Kyungwook, Park : https://github.com/kyungw00k -//! author : Jeeeyul Lee - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var ko = moment.defineLocale('ko', { - months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), - weekdaysShort : '일_월_화_수_목_금_토'.split('_'), - weekdaysMin : '일_월_화_수_목_금_토'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'YYYY.MM.DD', - LL : 'YYYY년 MMMM D일', - LLL : 'YYYY년 MMMM D일 A h:mm', - LLLL : 'YYYY년 MMMM D일 dddd A h:mm', - l : 'YYYY.MM.DD', - ll : 'YYYY년 MMMM D일', - lll : 'YYYY년 MMMM D일 A h:mm', - llll : 'YYYY년 MMMM D일 dddd A h:mm' - }, - calendar : { - sameDay : '오늘 LT', - nextDay : '내일 LT', - nextWeek : 'dddd LT', - lastDay : '어제 LT', - lastWeek : '지난주 dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s 후', - past : '%s 전', - s : '몇 초', - ss : '%d초', - m : '1분', - mm : '%d분', - h : '한 시간', - hh : '%d시간', - d : '하루', - dd : '%d일', - M : '한 달', - MM : '%d달', - y : '일 년', - yy : '%d년' - }, - dayOfMonthOrdinalParse : /\d{1,2}일/, - ordinal : '%d일', - meridiemParse : /오전|오후/, - isPM : function (token) { - return token === '오후'; - }, - meridiem : function (hour, minute, isUpper) { - return hour < 12 ? '오전' : '오후'; - } -}); - -return ko; - -}))); - - -/***/ }), -/* 64 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Kyrgyz [ky] -//! author : Chyngyz Arystan uulu : https://github.com/chyngyz - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - - -var suffixes = { - 0: '-чү', - 1: '-чи', - 2: '-чи', - 3: '-чү', - 4: '-чү', - 5: '-чи', - 6: '-чы', - 7: '-чи', - 8: '-чи', - 9: '-чу', - 10: '-чу', - 20: '-чы', - 30: '-чу', - 40: '-чы', - 50: '-чү', - 60: '-чы', - 70: '-чи', - 80: '-чи', - 90: '-чу', - 100: '-чү' -}; - -var ky = moment.defineLocale('ky', { - months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'), - weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), - weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Бүгүн саат] LT', - nextDay : '[Эртең саат] LT', - nextWeek : 'dddd [саат] LT', - lastDay : '[Кече саат] LT', - lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ичинде', - past : '%s мурун', - s : 'бирнече секунд', - m : 'бир мүнөт', - mm : '%d мүнөт', - h : 'бир саат', - hh : '%d саат', - d : 'бир күн', - dd : '%d күн', - M : 'бир ай', - MM : '%d ай', - y : 'бир жыл', - yy : '%d жыл' - }, - dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/, - ordinal : function (number) { - var a = number % 10, - b = number >= 100 ? 100 : null; - return number + (suffixes[number] || suffixes[a] || suffixes[b]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return ky; - -}))); - - -/***/ }), -/* 65 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Luxembourgish [lb] -//! author : mweimerskirch : https://github.com/mweimerskirch -//! author : David Raison : https://github.com/kwisatz - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eng Minutt', 'enger Minutt'], - 'h': ['eng Stonn', 'enger Stonn'], - 'd': ['een Dag', 'engem Dag'], - 'M': ['ee Mount', 'engem Mount'], - 'y': ['ee Joer', 'engem Joer'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; -} -function processFutureTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'a ' + string; - } - return 'an ' + string; -} -function processPastTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'viru ' + string; - } - return 'virun ' + string; -} -/** - * Returns true if the word before the given number loses the '-n' ending. - * e.g. 'an 10 Deeg' but 'a 5 Deeg' - * - * @param number {integer} - * @returns {boolean} - */ -function eifelerRegelAppliesToNumber(number) { - number = parseInt(number, 10); - if (isNaN(number)) { - return false; - } - if (number < 0) { - // Negative Number --> always true - return true; - } else if (number < 10) { - // Only 1 digit - if (4 <= number && number <= 7) { - return true; - } - return false; - } else if (number < 100) { - // 2 digits - var lastDigit = number % 10, firstDigit = number / 10; - if (lastDigit === 0) { - return eifelerRegelAppliesToNumber(firstDigit); - } - return eifelerRegelAppliesToNumber(lastDigit); - } else if (number < 10000) { - // 3 or 4 digits --> recursively check first digit - while (number >= 10) { - number = number / 10; - } - return eifelerRegelAppliesToNumber(number); - } else { - // Anything larger than 4 digits: recursively check first n-3 digits - number = number / 1000; - return eifelerRegelAppliesToNumber(number); - } -} - -var lb = moment.defineLocale('lb', { - months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), - weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), - weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat: { - LT: 'H:mm [Auer]', - LTS: 'H:mm:ss [Auer]', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm [Auer]', - LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' - }, - calendar: { - sameDay: '[Haut um] LT', - sameElse: 'L', - nextDay: '[Muer um] LT', - nextWeek: 'dddd [um] LT', - lastDay: '[Gëschter um] LT', - lastWeek: function () { - // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule - switch (this.day()) { - case 2: - case 4: - return '[Leschten] dddd [um] LT'; - default: - return '[Leschte] dddd [um] LT'; - } - } - }, - relativeTime : { - future : processFutureTime, - past : processPastTime, - s : 'e puer Sekonnen', - m : processRelativeTime, - mm : '%d Minutten', - h : processRelativeTime, - hh : '%d Stonnen', - d : processRelativeTime, - dd : '%d Deeg', - M : processRelativeTime, - MM : '%d Méint', - y : processRelativeTime, - yy : '%d Joer' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return lb; - -}))); - - -/***/ }), -/* 66 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Lao [lo] -//! author : Ryan Hart : https://github.com/ryanhart2 - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var lo = moment.defineLocale('lo', { - months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), - monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), - weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), - weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), - weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'ວັນdddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/, - isPM: function (input) { - return input === 'ຕອນແລງ'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ຕອນເຊົ້າ'; - } else { - return 'ຕອນແລງ'; - } - }, - calendar : { - sameDay : '[ມື້ນີ້ເວລາ] LT', - nextDay : '[ມື້ອື່ນເວລາ] LT', - nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT', - lastDay : '[ມື້ວານນີ້ເວລາ] LT', - lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'ອີກ %s', - past : '%sຜ່ານມາ', - s : 'ບໍ່ເທົ່າໃດວິນາທີ', - m : '1 ນາທີ', - mm : '%d ນາທີ', - h : '1 ຊົ່ວໂມງ', - hh : '%d ຊົ່ວໂມງ', - d : '1 ມື້', - dd : '%d ມື້', - M : '1 ເດືອນ', - MM : '%d ເດືອນ', - y : '1 ປີ', - yy : '%d ປີ' - }, - dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/, - ordinal : function (number) { - return 'ທີ່' + number; - } -}); - -return lo; - -}))); - - -/***/ }), -/* 67 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Lithuanian [lt] -//! author : Mindaugas Mozūras : https://github.com/mmozuras - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var units = { - 'm' : 'minutė_minutės_minutę', - 'mm': 'minutės_minučių_minutes', - 'h' : 'valanda_valandos_valandą', - 'hh': 'valandos_valandų_valandas', - 'd' : 'diena_dienos_dieną', - 'dd': 'dienos_dienų_dienas', - 'M' : 'mėnuo_mėnesio_mėnesį', - 'MM': 'mėnesiai_mėnesių_mėnesius', - 'y' : 'metai_metų_metus', - 'yy': 'metai_metų_metus' -}; -function translateSeconds(number, withoutSuffix, key, isFuture) { - if (withoutSuffix) { - return 'kelios sekundės'; - } else { - return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; - } -} -function translateSingular(number, withoutSuffix, key, isFuture) { - return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); -} -function special(number) { - return number % 10 === 0 || (number > 10 && number < 20); -} -function forms(key) { - return units[key].split('_'); -} -function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - if (number === 1) { - return result + translateSingular(number, withoutSuffix, key[0], isFuture); - } else if (withoutSuffix) { - return result + (special(number) ? forms(key)[1] : forms(key)[0]); - } else { - if (isFuture) { - return result + forms(key)[1]; - } else { - return result + (special(number) ? forms(key)[1] : forms(key)[2]); - } - } -} -var lt = moment.defineLocale('lt', { - months : { - format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'), - standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), - isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/ - }, - monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), - weekdays : { - format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'), - standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'), - isFormat: /dddd HH:mm/ - }, - weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), - weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY [m.] MMMM D [d.]', - LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', - l : 'YYYY-MM-DD', - ll : 'YYYY [m.] MMMM D [d.]', - lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' - }, - calendar : { - sameDay : '[Šiandien] LT', - nextDay : '[Rytoj] LT', - nextWeek : 'dddd LT', - lastDay : '[Vakar] LT', - lastWeek : '[Praėjusį] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : 'po %s', - past : 'prieš %s', - s : translateSeconds, - m : translateSingular, - mm : translate, - h : translateSingular, - hh : translate, - d : translateSingular, - dd : translate, - M : translateSingular, - MM : translate, - y : translateSingular, - yy : translate - }, - dayOfMonthOrdinalParse: /\d{1,2}-oji/, - ordinal : function (number) { - return number + '-oji'; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return lt; - -}))); - - -/***/ }), -/* 68 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Latvian [lv] -//! author : Kristaps Karlsons : https://github.com/skakri -//! author : Jānis Elmeris : https://github.com/JanisE - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var units = { - 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'h': 'stundas_stundām_stunda_stundas'.split('_'), - 'hh': 'stundas_stundām_stunda_stundas'.split('_'), - 'd': 'dienas_dienām_diena_dienas'.split('_'), - 'dd': 'dienas_dienām_diena_dienas'.split('_'), - 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'y': 'gada_gadiem_gads_gadi'.split('_'), - 'yy': 'gada_gadiem_gads_gadi'.split('_') -}; -/** - * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. - */ -function format(forms, number, withoutSuffix) { - if (withoutSuffix) { - // E.g. "21 minūte", "3 minūtes". - return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3]; - } else { - // E.g. "21 minūtes" as in "pēc 21 minūtes". - // E.g. "3 minūtēm" as in "pēc 3 minūtēm". - return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1]; - } -} -function relativeTimeWithPlural(number, withoutSuffix, key) { - return number + ' ' + format(units[key], number, withoutSuffix); -} -function relativeTimeWithSingular(number, withoutSuffix, key) { - return format(units[key], number, withoutSuffix); -} -function relativeSeconds(number, withoutSuffix) { - return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; -} - -var lv = moment.defineLocale('lv', { - months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), - weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY.', - LL : 'YYYY. [gada] D. MMMM', - LLL : 'YYYY. [gada] D. MMMM, HH:mm', - LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' - }, - calendar : { - sameDay : '[Šodien pulksten] LT', - nextDay : '[Rīt pulksten] LT', - nextWeek : 'dddd [pulksten] LT', - lastDay : '[Vakar pulksten] LT', - lastWeek : '[Pagājušā] dddd [pulksten] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'pēc %s', - past : 'pirms %s', - s : relativeSeconds, - m : relativeTimeWithSingular, - mm : relativeTimeWithPlural, - h : relativeTimeWithSingular, - hh : relativeTimeWithPlural, - d : relativeTimeWithSingular, - dd : relativeTimeWithPlural, - M : relativeTimeWithSingular, - MM : relativeTimeWithPlural, - y : relativeTimeWithSingular, - yy : relativeTimeWithPlural - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return lv; - -}))); - - -/***/ }), -/* 69 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Montenegrin [me] -//! author : Miodrag Nikač : https://github.com/miodragnikac - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var translator = { - words: { //Different grammatical cases - m: ['jedan minut', 'jednog minuta'], - mm: ['minut', 'minuta', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mjesec', 'mjeseca', 'mjeseci'], - yy: ['godina', 'godine', 'godina'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); - } - } -}; - -var me = moment.defineLocale('me', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), - monthsParseExact : true, - weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sjutra u] LT', - - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[juče u] LT', - lastWeek : function () { - var lastWeekDays = [ - '[prošle] [nedjelje] [u] LT', - '[prošlog] [ponedjeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srijede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'nekoliko sekundi', - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'dan', - dd : translator.translate, - M : 'mjesec', - MM : translator.translate, - y : 'godinu', - yy : translator.translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return me; - -}))); - - -/***/ }), -/* 70 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Maori [mi] -//! author : John Corrigan : https://github.com/johnideal - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var mi = moment.defineLocale('mi', { - months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'), - monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'), - monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, - monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, - monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, - monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i, - weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'), - weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), - weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [i] HH:mm', - LLLL: 'dddd, D MMMM YYYY [i] HH:mm' - }, - calendar: { - sameDay: '[i teie mahana, i] LT', - nextDay: '[apopo i] LT', - nextWeek: 'dddd [i] LT', - lastDay: '[inanahi i] LT', - lastWeek: 'dddd [whakamutunga i] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'i roto i %s', - past: '%s i mua', - s: 'te hēkona ruarua', - m: 'he meneti', - mm: '%d meneti', - h: 'te haora', - hh: '%d haora', - d: 'he ra', - dd: '%d ra', - M: 'he marama', - MM: '%d marama', - y: 'he tau', - yy: '%d tau' - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return mi; - -}))); - - -/***/ }), -/* 71 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Macedonian [mk] -//! author : Borislav Mickov : https://github.com/B0k0 - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var mk = moment.defineLocale('mk', { - months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), - weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), - weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'D.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Денес во] LT', - nextDay : '[Утре во] LT', - nextWeek : '[Во] dddd [во] LT', - lastDay : '[Вчера во] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[Изминатата] dddd [во] LT'; - case 1: - case 2: - case 4: - case 5: - return '[Изминатиот] dddd [во] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'после %s', - past : 'пред %s', - s : 'неколку секунди', - m : 'минута', - mm : '%d минути', - h : 'час', - hh : '%d часа', - d : 'ден', - dd : '%d дена', - M : 'месец', - MM : '%d месеци', - y : 'година', - yy : '%d години' - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return mk; - -}))); - - -/***/ }), -/* 72 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Malayalam [ml] -//! author : Floyd Pink : https://github.com/floydpink - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var ml = moment.defineLocale('ml', { - months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), - monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), - monthsParseExact : true, - weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), - weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), - weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), - longDateFormat : { - LT : 'A h:mm -നു', - LTS : 'A h:mm:ss -നു', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm -നു', - LLLL : 'dddd, D MMMM YYYY, A h:mm -നു' - }, - calendar : { - sameDay : '[ഇന്ന്] LT', - nextDay : '[നാളെ] LT', - nextWeek : 'dddd, LT', - lastDay : '[ഇന്നലെ] LT', - lastWeek : '[കഴിഞ്ഞ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s കഴിഞ്ഞ്', - past : '%s മുൻപ്', - s : 'അൽപ നിമിഷങ്ങൾ', - m : 'ഒരു മിനിറ്റ്', - mm : '%d മിനിറ്റ്', - h : 'ഒരു മണിക്കൂർ', - hh : '%d മണിക്കൂർ', - d : 'ഒരു ദിവസം', - dd : '%d ദിവസം', - M : 'ഒരു മാസം', - MM : '%d മാസം', - y : 'ഒരു വർഷം', - yy : '%d വർഷം' - }, - meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ((meridiem === 'രാത്രി' && hour >= 4) || - meridiem === 'ഉച്ച കഴിഞ്ഞ്' || - meridiem === 'വൈകുന്നേരം') { - return hour + 12; - } else { - return hour; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'രാത്രി'; - } else if (hour < 12) { - return 'രാവിലെ'; - } else if (hour < 17) { - return 'ഉച്ച കഴിഞ്ഞ്'; - } else if (hour < 20) { - return 'വൈകുന്നേരം'; - } else { - return 'രാത്രി'; - } - } -}); - -return ml; - -}))); - - -/***/ }), -/* 73 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Marathi [mr] -//! author : Harshad Kale : https://github.com/kalehv -//! author : Vivek Athalye : https://github.com/vnathalye - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' -}; -var numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' -}; - -function relativeTimeMr(number, withoutSuffix, string, isFuture) -{ - var output = ''; - if (withoutSuffix) { - switch (string) { - case 's': output = 'काही सेकंद'; break; - case 'm': output = 'एक मिनिट'; break; - case 'mm': output = '%d मिनिटे'; break; - case 'h': output = 'एक तास'; break; - case 'hh': output = '%d तास'; break; - case 'd': output = 'एक दिवस'; break; - case 'dd': output = '%d दिवस'; break; - case 'M': output = 'एक महिना'; break; - case 'MM': output = '%d महिने'; break; - case 'y': output = 'एक वर्ष'; break; - case 'yy': output = '%d वर्षे'; break; - } - } - else { - switch (string) { - case 's': output = 'काही सेकंदां'; break; - case 'm': output = 'एका मिनिटा'; break; - case 'mm': output = '%d मिनिटां'; break; - case 'h': output = 'एका तासा'; break; - case 'hh': output = '%d तासां'; break; - case 'd': output = 'एका दिवसा'; break; - case 'dd': output = '%d दिवसां'; break; - case 'M': output = 'एका महिन्या'; break; - case 'MM': output = '%d महिन्यां'; break; - case 'y': output = 'एका वर्षा'; break; - case 'yy': output = '%d वर्षां'; break; - } - } - return output.replace(/%d/i, number); -} - -var mr = moment.defineLocale('mr', { - months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), - monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), - monthsParseExact : true, - weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat : { - LT : 'A h:mm वाजता', - LTS : 'A h:mm:ss वाजता', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm वाजता', - LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता' - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[उद्या] LT', - nextWeek : 'dddd, LT', - lastDay : '[काल] LT', - lastWeek: '[मागील] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future: '%sमध्ये', - past: '%sपूर्वी', - s: relativeTimeMr, - m: relativeTimeMr, - mm: relativeTimeMr, - h: relativeTimeMr, - hh: relativeTimeMr, - d: relativeTimeMr, - dd: relativeTimeMr, - M: relativeTimeMr, - MM: relativeTimeMr, - y: relativeTimeMr, - yy: relativeTimeMr - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात्री') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सकाळी') { - return hour; - } else if (meridiem === 'दुपारी') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'सायंकाळी') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'रात्री'; - } else if (hour < 10) { - return 'सकाळी'; - } else if (hour < 17) { - return 'दुपारी'; - } else if (hour < 20) { - return 'सायंकाळी'; - } else { - return 'रात्री'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - -return mr; - -}))); - - -/***/ }), -/* 74 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Malay [ms-my] -//! note : DEPRECATED, the correct one is [ms] -//! author : Weldan Jamili : https://github.com/weldan - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var msMy = moment.defineLocale('ms-my', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return msMy; - -}))); - - -/***/ }), -/* 75 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Malay [ms] -//! author : Weldan Jamili : https://github.com/weldan - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var ms = moment.defineLocale('ms', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return ms; - -}))); - - -/***/ }), -/* 76 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Burmese [my] -//! author : Squar team, mysquar.com -//! author : David Rossellat : https://github.com/gholadr -//! author : Tin Aung Lin : https://github.com/thanyawzinmin - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var symbolMap = { - '1': '၁', - '2': '၂', - '3': '၃', - '4': '၄', - '5': '၅', - '6': '၆', - '7': '၇', - '8': '၈', - '9': '၉', - '0': '၀' -}; -var numberMap = { - '၁': '1', - '၂': '2', - '၃': '3', - '၄': '4', - '၅': '5', - '၆': '6', - '၇': '7', - '၈': '8', - '၉': '9', - '၀': '0' -}; - -var my = moment.defineLocale('my', { - months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), - monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), - weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), - weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[ယနေ.] LT [မှာ]', - nextDay: '[မနက်ဖြန်] LT [မှာ]', - nextWeek: 'dddd LT [မှာ]', - lastDay: '[မနေ.က] LT [မှာ]', - lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', - sameElse: 'L' - }, - relativeTime: { - future: 'လာမည့် %s မှာ', - past: 'လွန်ခဲ့သော %s က', - s: 'စက္ကန်.အနည်းငယ်', - m: 'တစ်မိနစ်', - mm: '%d မိနစ်', - h: 'တစ်နာရီ', - hh: '%d နာရီ', - d: 'တစ်ရက်', - dd: '%d ရက်', - M: 'တစ်လ', - MM: '%d လ', - y: 'တစ်နှစ်', - yy: '%d နှစ်' - }, - preparse: function (string) { - return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 1st is the first week of the year. - } -}); - -return my; - -}))); - - -/***/ }), -/* 77 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Norwegian Bokmål [nb] -//! authors : Espen Hovlandsdal : https://github.com/rexxars -//! Sigurd Gartmann : https://github.com/sigurdga - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var nb = moment.defineLocale('nb', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), - monthsParseExact : true, - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] HH:mm', - LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' - }, - calendar : { - sameDay: '[i dag kl.] LT', - nextDay: '[i morgen kl.] LT', - nextWeek: 'dddd [kl.] LT', - lastDay: '[i går kl.] LT', - lastWeek: '[forrige] dddd [kl.] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'noen sekunder', - m : 'ett minutt', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dager', - M : 'en måned', - MM : '%d måneder', - y : 'ett år', - yy : '%d år' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return nb; - -}))); - - -/***/ }), -/* 78 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Nepalese [ne] -//! author : suvash : https://github.com/suvash - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' -}; -var numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' -}; - -var ne = moment.defineLocale('ne', { - months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), - monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), - monthsParseExact : true, - weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), - weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), - weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'Aको h:mm बजे', - LTS : 'Aको h:mm:ss बजे', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, Aको h:mm बजे', - LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiemParse: /राति|बिहान|दिउँसो|साँझ/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'राति') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'बिहान') { - return hour; - } else if (meridiem === 'दिउँसो') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'साँझ') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 3) { - return 'राति'; - } else if (hour < 12) { - return 'बिहान'; - } else if (hour < 16) { - return 'दिउँसो'; - } else if (hour < 20) { - return 'साँझ'; - } else { - return 'राति'; - } - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[भोलि] LT', - nextWeek : '[आउँदो] dddd[,] LT', - lastDay : '[हिजो] LT', - lastWeek : '[गएको] dddd[,] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%sमा', - past : '%s अगाडि', - s : 'केही क्षण', - m : 'एक मिनेट', - mm : '%d मिनेट', - h : 'एक घण्टा', - hh : '%d घण्टा', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महिना', - MM : '%d महिना', - y : 'एक बर्ष', - yy : '%d बर्ष' - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - -return ne; - -}))); - - -/***/ }), -/* 79 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Dutch (Belgium) [nl-be] -//! author : Joris Röling : https://github.com/jorisroling -//! author : Jacob Middag : https://github.com/middagj - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'); -var monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - -var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; -var monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; - -var nlBe = moment.defineLocale('nl-be', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { - if (!m) { - return monthsShortWithDots; - } else if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, - - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i, - monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, - - monthsParse : monthsParse, - longMonthsParse : monthsParse, - shortMonthsParse : monthsParse, - - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[vandaag om] LT', - nextDay: '[morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return nlBe; - -}))); - - -/***/ }), -/* 80 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Dutch [nl] -//! author : Joris Röling : https://github.com/jorisroling -//! author : Jacob Middag : https://github.com/middagj - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'); -var monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - -var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; -var monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; - -var nl = moment.defineLocale('nl', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { - if (!m) { - return monthsShortWithDots; - } else if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, - - monthsRegex: monthsRegex, - monthsShortRegex: monthsRegex, - monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i, - monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, - - monthsParse : monthsParse, - longMonthsParse : monthsParse, - shortMonthsParse : monthsParse, - - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[vandaag om] LT', - nextDay: '[morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return nl; - -}))); - - -/***/ }), -/* 81 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Nynorsk [nn] -//! author : https://github.com/mechuwind - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var nn = moment.defineLocale('nn', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), - weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), - weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' - }, - calendar : { - sameDay: '[I dag klokka] LT', - nextDay: '[I morgon klokka] LT', - nextWeek: 'dddd [klokka] LT', - lastDay: '[I går klokka] LT', - lastWeek: '[Føregåande] dddd [klokka] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s sidan', - s : 'nokre sekund', - m : 'eit minutt', - mm : '%d minutt', - h : 'ein time', - hh : '%d timar', - d : 'ein dag', - dd : '%d dagar', - M : 'ein månad', - MM : '%d månader', - y : 'eit år', - yy : '%d år' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return nn; - -}))); - - -/***/ }), -/* 82 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Punjabi (India) [pa-in] -//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var symbolMap = { - '1': '੧', - '2': '੨', - '3': '੩', - '4': '੪', - '5': '੫', - '6': '੬', - '7': '੭', - '8': '੮', - '9': '੯', - '0': '੦' -}; -var numberMap = { - '੧': '1', - '੨': '2', - '੩': '3', - '੪': '4', - '੫': '5', - '੬': '6', - '੭': '7', - '੮': '8', - '੯': '9', - '੦': '0' -}; - -var paIn = moment.defineLocale('pa-in', { - // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi. - months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), - monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), - weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'), - weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), - weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), - longDateFormat : { - LT : 'A h:mm ਵਜੇ', - LTS : 'A h:mm:ss ਵਜੇ', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm ਵਜੇ', - LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ' - }, - calendar : { - sameDay : '[ਅਜ] LT', - nextDay : '[ਕਲ] LT', - nextWeek : 'dddd, LT', - lastDay : '[ਕਲ] LT', - lastWeek : '[ਪਿਛਲੇ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ਵਿੱਚ', - past : '%s ਪਿਛਲੇ', - s : 'ਕੁਝ ਸਕਿੰਟ', - m : 'ਇਕ ਮਿੰਟ', - mm : '%d ਮਿੰਟ', - h : 'ਇੱਕ ਘੰਟਾ', - hh : '%d ਘੰਟੇ', - d : 'ਇੱਕ ਦਿਨ', - dd : '%d ਦਿਨ', - M : 'ਇੱਕ ਮਹੀਨਾ', - MM : '%d ਮਹੀਨੇ', - y : 'ਇੱਕ ਸਾਲ', - yy : '%d ਸਾਲ' - }, - preparse: function (string) { - return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // Punjabi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. - meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'ਰਾਤ') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'ਸਵੇਰ') { - return hour; - } else if (meridiem === 'ਦੁਪਹਿਰ') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'ਸ਼ਾਮ') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ਰਾਤ'; - } else if (hour < 10) { - return 'ਸਵੇਰ'; - } else if (hour < 17) { - return 'ਦੁਪਹਿਰ'; - } else if (hour < 20) { - return 'ਸ਼ਾਮ'; - } else { - return 'ਰਾਤ'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - -return paIn; - -}))); - - -/***/ }), -/* 83 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Polish [pl] -//! author : Rafal Hirsz : https://github.com/evoL - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'); -var monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); -function plural(n) { - return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); -} -function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'm': - return withoutSuffix ? 'minuta' : 'minutę'; - case 'mm': - return result + (plural(number) ? 'minuty' : 'minut'); - case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; - case 'hh': - return result + (plural(number) ? 'godziny' : 'godzin'); - case 'MM': - return result + (plural(number) ? 'miesiące' : 'miesięcy'); - case 'yy': - return result + (plural(number) ? 'lata' : 'lat'); - } -} - -var pl = moment.defineLocale('pl', { - months : function (momentToFormat, format) { - if (!momentToFormat) { - return monthsNominative; - } else if (format === '') { - // Hack: if format empty we know this is used to generate - // RegExp by moment. Give then back both valid forms of months - // in RegExp ready format. - return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; - } else if (/D MMMM/.test(format)) { - return monthsSubjective[momentToFormat.month()]; - } else { - return monthsNominative[momentToFormat.month()]; - } - }, - monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), - weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), - weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), - weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Dziś o] LT', - nextDay: '[Jutro o] LT', - nextWeek: '[W] dddd [o] LT', - lastDay: '[Wczoraj o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : '%s temu', - s : 'kilka sekund', - m : translate, - mm : translate, - h : translate, - hh : translate, - d : '1 dzień', - dd : '%d dni', - M : 'miesiąc', - MM : translate, - y : 'rok', - yy : translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return pl; - -}))); - - -/***/ }), -/* 84 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Portuguese (Brazil) [pt-br] -//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var ptBr = moment.defineLocale('pt-br', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : '%s atrás', - s : 'poucos segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal : '%dº' -}); - -return ptBr; - -}))); - - -/***/ }), -/* 85 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Portuguese [pt] -//! author : Jefferson : https://github.com/jalex79 - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var pt = moment.defineLocale('pt', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : 'há %s', - s : 'segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return pt; - -}))); - - -/***/ }), -/* 86 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Romanian [ro] -//! author : Vlad Gurdiga : https://github.com/gurdiga -//! author : Valentin Agachi : https://github.com/avaly - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'minute', - 'hh': 'ore', - 'dd': 'zile', - 'MM': 'luni', - 'yy': 'ani' - }, - separator = ' '; - if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { - separator = ' de '; - } - return number + separator + format[key]; -} - -var ro = moment.defineLocale('ro', { - months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), - monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), - monthsParseExact: true, - weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), - weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), - weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[azi la] LT', - nextDay: '[mâine la] LT', - nextWeek: 'dddd [la] LT', - lastDay: '[ieri la] LT', - lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'peste %s', - past : '%s în urmă', - s : 'câteva secunde', - m : 'un minut', - mm : relativeTimeWithPlural, - h : 'o oră', - hh : relativeTimeWithPlural, - d : 'o zi', - dd : relativeTimeWithPlural, - M : 'o lună', - MM : relativeTimeWithPlural, - y : 'un an', - yy : relativeTimeWithPlural - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return ro; - -}))); - - -/***/ }), -/* 87 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Russian [ru] -//! author : Viktorminator : https://github.com/Viktorminator -//! Author : Menelion Elensúle : https://github.com/Oire -//! author : Коренберг Марк : https://github.com/socketpair - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); -} -function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', - 'hh': 'час_часа_часов', - 'dd': 'день_дня_дней', - 'MM': 'месяц_месяца_месяцев', - 'yy': 'год_года_лет' - }; - if (key === 'm') { - return withoutSuffix ? 'минута' : 'минуту'; - } - else { - return number + ' ' + plural(format[key], +number); - } -} -var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; - -// http://new.gramota.ru/spravka/rules/139-prop : § 103 -// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 -// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 -var ru = moment.defineLocale('ru', { - months : { - format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'), - standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_') - }, - monthsShort : { - // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ? - format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'), - standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_') - }, - weekdays : { - standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), - format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'), - isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/ - }, - weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - monthsParse : monthsParse, - longMonthsParse : monthsParse, - shortMonthsParse : monthsParse, - - // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки - monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, - - // копия предыдущего - monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, - - // полные названия с падежами - monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i, - - // Выражение, которое соотвествует только сокращённым формам - monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., HH:mm', - LLLL : 'dddd, D MMMM YYYY г., HH:mm' - }, - calendar : { - sameDay: '[Сегодня в] LT', - nextDay: '[Завтра в] LT', - lastDay: '[Вчера в] LT', - nextWeek: function (now) { - if (now.week() !== this.week()) { - switch (this.day()) { - case 0: - return '[В следующее] dddd [в] LT'; - case 1: - case 2: - case 4: - return '[В следующий] dddd [в] LT'; - case 3: - case 5: - case 6: - return '[В следующую] dddd [в] LT'; - } - } else { - if (this.day() === 2) { - return '[Во] dddd [в] LT'; - } else { - return '[В] dddd [в] LT'; - } - } - }, - lastWeek: function (now) { - if (now.week() !== this.week()) { - switch (this.day()) { - case 0: - return '[В прошлое] dddd [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd [в] LT'; - } - } else { - if (this.day() === 2) { - return '[Во] dddd [в] LT'; - } else { - return '[В] dddd [в] LT'; - } - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'через %s', - past : '%s назад', - s : 'несколько секунд', - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : 'час', - hh : relativeTimeWithPlural, - d : 'день', - dd : relativeTimeWithPlural, - M : 'месяц', - MM : relativeTimeWithPlural, - y : 'год', - yy : relativeTimeWithPlural - }, - meridiemParse: /ночи|утра|дня|вечера/i, - isPM : function (input) { - return /^(дня|вечера)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночи'; - } else if (hour < 12) { - return 'утра'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечера'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - return number + '-й'; - case 'D': - return number + '-го'; - case 'w': - case 'W': - return number + '-я'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return ru; - -}))); - - -/***/ }), -/* 88 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Sindhi [sd] -//! author : Narain Sagar : https://github.com/narainsagar - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var months = [ - 'جنوري', - 'فيبروري', - 'مارچ', - 'اپريل', - 'مئي', - 'جون', - 'جولاءِ', - 'آگسٽ', - 'سيپٽمبر', - 'آڪٽوبر', - 'نومبر', - 'ڊسمبر' -]; -var days = [ - 'آچر', - 'سومر', - 'اڱارو', - 'اربع', - 'خميس', - 'جمع', - 'ڇنڇر' -]; - -var sd = moment.defineLocale('sd', { - months : months, - monthsShort : months, - weekdays : days, - weekdaysShort : days, - weekdaysMin : days, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd، D MMMM YYYY HH:mm' - }, - meridiemParse: /صبح|شام/, - isPM : function (input) { - return 'شام' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'صبح'; - } - return 'شام'; - }, - calendar : { - sameDay : '[اڄ] LT', - nextDay : '[سڀاڻي] LT', - nextWeek : 'dddd [اڳين هفتي تي] LT', - lastDay : '[ڪالهه] LT', - lastWeek : '[گزريل هفتي] dddd [تي] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s پوء', - past : '%s اڳ', - s : 'چند سيڪنڊ', - m : 'هڪ منٽ', - mm : '%d منٽ', - h : 'هڪ ڪلاڪ', - hh : '%d ڪلاڪ', - d : 'هڪ ڏينهن', - dd : '%d ڏينهن', - M : 'هڪ مهينو', - MM : '%d مهينا', - y : 'هڪ سال', - yy : '%d سال' - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return sd; - -}))); - - -/***/ }), -/* 89 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Northern Sami [se] -//! authors : Bård Rolstad Henriksen : https://github.com/karamell - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - - -var se = moment.defineLocale('se', { - months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'), - monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'), - weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'), - weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), - weekdaysMin : 's_v_m_g_d_b_L'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'MMMM D. [b.] YYYY', - LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm', - LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm' - }, - calendar : { - sameDay: '[otne ti] LT', - nextDay: '[ihttin ti] LT', - nextWeek: 'dddd [ti] LT', - lastDay: '[ikte ti] LT', - lastWeek: '[ovddit] dddd [ti] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s geažes', - past : 'maŋit %s', - s : 'moadde sekunddat', - m : 'okta minuhta', - mm : '%d minuhtat', - h : 'okta diimmu', - hh : '%d diimmut', - d : 'okta beaivi', - dd : '%d beaivvit', - M : 'okta mánnu', - MM : '%d mánut', - y : 'okta jahki', - yy : '%d jagit' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return se; - -}))); - - -/***/ }), -/* 90 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Sinhalese [si] -//! author : Sampath Sitinamaluwa : https://github.com/sampathsris - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -/*jshint -W100*/ -var si = moment.defineLocale('si', { - months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), - monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), - weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), - weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), - weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'a h:mm', - LTS : 'a h:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY MMMM D', - LLL : 'YYYY MMMM D, a h:mm', - LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' - }, - calendar : { - sameDay : '[අද] LT[ට]', - nextDay : '[හෙට] LT[ට]', - nextWeek : 'dddd LT[ට]', - lastDay : '[ඊයේ] LT[ට]', - lastWeek : '[පසුගිය] dddd LT[ට]', - sameElse : 'L' - }, - relativeTime : { - future : '%sකින්', - past : '%sකට පෙර', - s : 'තත්පර කිහිපය', - m : 'මිනිත්තුව', - mm : 'මිනිත්තු %d', - h : 'පැය', - hh : 'පැය %d', - d : 'දිනය', - dd : 'දින %d', - M : 'මාසය', - MM : 'මාස %d', - y : 'වසර', - yy : 'වසර %d' - }, - dayOfMonthOrdinalParse: /\d{1,2} වැනි/, - ordinal : function (number) { - return number + ' වැනි'; - }, - meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, - isPM : function (input) { - return input === 'ප.ව.' || input === 'පස් වරු'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'ප.ව.' : 'පස් වරු'; - } else { - return isLower ? 'පෙ.ව.' : 'පෙර වරු'; - } - } -}); - -return si; - -}))); - - -/***/ }), -/* 91 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Slovak [sk] -//! author : Martin Minka : https://github.com/k2s -//! based on work of petrbela : https://github.com/petrbela - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'); -var monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); -function plural(n) { - return (n > 1) && (n < 5); -} -function translate(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minúty' : 'minút'); - } else { - return result + 'minútami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodín'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dni' : 'dní'); - } else { - return result + 'dňami'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'mesiace' : 'mesiacov'); - } else { - return result + 'mesiacmi'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'rokov'); - } else { - return result + 'rokmi'; - } - break; - } -} - -var sk = moment.defineLocale('sk', { - months : months, - monthsShort : monthsShort, - weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), - weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), - weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), - longDateFormat : { - LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[dnes o] LT', - nextDay: '[zajtra o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v nedeľu o] LT'; - case 1: - case 2: - return '[v] dddd [o] LT'; - case 3: - return '[v stredu o] LT'; - case 4: - return '[vo štvrtok o] LT'; - case 5: - return '[v piatok o] LT'; - case 6: - return '[v sobotu o] LT'; - } - }, - lastDay: '[včera o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulú nedeľu o] LT'; - case 1: - case 2: - return '[minulý] dddd [o] LT'; - case 3: - return '[minulú stredu o] LT'; - case 4: - case 5: - return '[minulý] dddd [o] LT'; - case 6: - return '[minulú sobotu o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pred %s', - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return sk; - -}))); - - -/***/ }), -/* 92 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Slovenian [sl] -//! author : Robert Sedovšek : https://github.com/sedovsek - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; - case 'm': - return withoutSuffix ? 'ena minuta' : 'eno minuto'; - case 'mm': - if (number === 1) { - result += withoutSuffix ? 'minuta' : 'minuto'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'minute' : 'minutami'; - } else { - result += withoutSuffix || isFuture ? 'minut' : 'minutami'; - } - return result; - case 'h': - return withoutSuffix ? 'ena ura' : 'eno uro'; - case 'hh': - if (number === 1) { - result += withoutSuffix ? 'ura' : 'uro'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'uri' : 'urama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'ure' : 'urami'; - } else { - result += withoutSuffix || isFuture ? 'ur' : 'urami'; - } - return result; - case 'd': - return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; - case 'dd': - if (number === 1) { - result += withoutSuffix || isFuture ? 'dan' : 'dnem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; - } else { - result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; - } - return result; - case 'M': - return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; - case 'MM': - if (number === 1) { - result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; - } else { - result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; - } - return result; - case 'y': - return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; - case 'yy': - if (number === 1) { - result += withoutSuffix || isFuture ? 'leto' : 'letom'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'leti' : 'letoma'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'leta' : 'leti'; - } else { - result += withoutSuffix || isFuture ? 'let' : 'leti'; - } - return result; - } -} - -var sl = moment.defineLocale('sl', { - months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), - monthsParseExact: true, - weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), - weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), - weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danes ob] LT', - nextDay : '[jutri ob] LT', - - nextWeek : function () { - switch (this.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - }, - lastDay : '[včeraj ob] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - return '[prejšnjo] [nedeljo] [ob] LT'; - case 3: - return '[prejšnjo] [sredo] [ob] LT'; - case 6: - return '[prejšnjo] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'čez %s', - past : 'pred %s', - s : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return sl; - -}))); - - -/***/ }), -/* 93 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Albanian [sq] -//! author : Flakërim Ismani : https://github.com/flakerimi -//! author : Menelion Elensúle : https://github.com/Oire -//! author : Oerd Cukalla : https://github.com/oerd - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var sq = moment.defineLocale('sq', { - months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), - monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), - weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), - weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), - weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), - weekdaysParseExact : true, - meridiemParse: /PD|MD/, - isPM: function (input) { - return input.charAt(0) === 'M'; - }, - meridiem : function (hours, minutes, isLower) { - return hours < 12 ? 'PD' : 'MD'; - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Sot në] LT', - nextDay : '[Nesër në] LT', - nextWeek : 'dddd [në] LT', - lastDay : '[Dje në] LT', - lastWeek : 'dddd [e kaluar në] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'në %s', - past : '%s më parë', - s : 'disa sekonda', - m : 'një minutë', - mm : '%d minuta', - h : 'një orë', - hh : '%d orë', - d : 'një ditë', - dd : '%d ditë', - M : 'një muaj', - MM : '%d muaj', - y : 'një vit', - yy : '%d vite' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return sq; - -}))); - - -/***/ }), -/* 94 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Serbian Cyrillic [sr-cyrl] -//! author : Milan Janačković : https://github.com/milan-j - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var translator = { - words: { //Different grammatical cases - m: ['један минут', 'једне минуте'], - mm: ['минут', 'минуте', 'минута'], - h: ['један сат', 'једног сата'], - hh: ['сат', 'сата', 'сати'], - dd: ['дан', 'дана', 'дана'], - MM: ['месец', 'месеца', 'месеци'], - yy: ['година', 'године', 'година'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); - } - } -}; - -var srCyrl = moment.defineLocale('sr-cyrl', { - months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'), - monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'), - monthsParseExact: true, - weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), - weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), - weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), - weekdaysParseExact : true, - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[данас у] LT', - nextDay: '[сутра у] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[у] [недељу] [у] LT'; - case 3: - return '[у] [среду] [у] LT'; - case 6: - return '[у] [суботу] [у] LT'; - case 1: - case 2: - case 4: - case 5: - return '[у] dddd [у] LT'; - } - }, - lastDay : '[јуче у] LT', - lastWeek : function () { - var lastWeekDays = [ - '[прошле] [недеље] [у] LT', - '[прошлог] [понедељка] [у] LT', - '[прошлог] [уторка] [у] LT', - '[прошле] [среде] [у] LT', - '[прошлог] [четвртка] [у] LT', - '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'за %s', - past : 'пре %s', - s : 'неколико секунди', - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'дан', - dd : translator.translate, - M : 'месец', - MM : translator.translate, - y : 'годину', - yy : translator.translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return srCyrl; - -}))); - - -/***/ }), -/* 95 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Serbian [sr] -//! author : Milan Janačković : https://github.com/milan-j - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var translator = { - words: { //Different grammatical cases - m: ['jedan minut', 'jedne minute'], - mm: ['minut', 'minute', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mesec', 'meseca', 'meseci'], - yy: ['godina', 'godine', 'godina'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); - } - } -}; - -var sr = moment.defineLocale('sr', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), - monthsParseExact: true, - weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'), - weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), - weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sutra u] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedelju] [u] LT'; - case 3: - return '[u] [sredu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[juče u] LT', - lastWeek : function () { - var lastWeekDays = [ - '[prošle] [nedelje] [u] LT', - '[prošlog] [ponedeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pre %s', - s : 'nekoliko sekundi', - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'dan', - dd : translator.translate, - M : 'mesec', - MM : translator.translate, - y : 'godinu', - yy : translator.translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return sr; - -}))); - - -/***/ }), -/* 96 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : siSwati [ss] -//! author : Nicolai Davies : https://github.com/nicolaidavies - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - - -var ss = moment.defineLocale('ss', { - months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'), - monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), - weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'), - weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), - weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Namuhla nga] LT', - nextDay : '[Kusasa nga] LT', - nextWeek : 'dddd [nga] LT', - lastDay : '[Itolo nga] LT', - lastWeek : 'dddd [leliphelile] [nga] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'nga %s', - past : 'wenteka nga %s', - s : 'emizuzwana lomcane', - m : 'umzuzu', - mm : '%d emizuzu', - h : 'lihora', - hh : '%d emahora', - d : 'lilanga', - dd : '%d emalanga', - M : 'inyanga', - MM : '%d tinyanga', - y : 'umnyaka', - yy : '%d iminyaka' - }, - meridiemParse: /ekuseni|emini|entsambama|ebusuku/, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'ekuseni'; - } else if (hours < 15) { - return 'emini'; - } else if (hours < 19) { - return 'entsambama'; - } else { - return 'ebusuku'; - } - }, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'ekuseni') { - return hour; - } else if (meridiem === 'emini') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') { - if (hour === 0) { - return 0; - } - return hour + 12; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : '%d', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return ss; - -}))); - - -/***/ }), -/* 97 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Swedish [sv] -//! author : Jens Alm : https://github.com/ulmus - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var sv = moment.defineLocale('sv', { - months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), - weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), - weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [kl.] HH:mm', - LLLL : 'dddd D MMMM YYYY [kl.] HH:mm', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd D MMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Idag] LT', - nextDay: '[Imorgon] LT', - lastDay: '[Igår] LT', - nextWeek: '[På] dddd LT', - lastWeek: '[I] dddd[s] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'för %s sedan', - s : 'några sekunder', - m : 'en minut', - mm : '%d minuter', - h : 'en timme', - hh : '%d timmar', - d : 'en dag', - dd : '%d dagar', - M : 'en månad', - MM : '%d månader', - y : 'ett år', - yy : '%d år' - }, - dayOfMonthOrdinalParse: /\d{1,2}(e|a)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'e' : - (b === 1) ? 'a' : - (b === 2) ? 'a' : - (b === 3) ? 'e' : 'e'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return sv; - -}))); - - -/***/ }), -/* 98 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Swahili [sw] -//! author : Fahad Kassim : https://github.com/fadsel - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var sw = moment.defineLocale('sw', { - months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'), - weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), - weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[leo saa] LT', - nextDay : '[kesho saa] LT', - nextWeek : '[wiki ijayo] dddd [saat] LT', - lastDay : '[jana] LT', - lastWeek : '[wiki iliyopita] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s baadaye', - past : 'tokea %s', - s : 'hivi punde', - m : 'dakika moja', - mm : 'dakika %d', - h : 'saa limoja', - hh : 'masaa %d', - d : 'siku moja', - dd : 'masiku %d', - M : 'mwezi mmoja', - MM : 'miezi %d', - y : 'mwaka mmoja', - yy : 'miaka %d' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return sw; - -}))); - - -/***/ }), -/* 99 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Tamil [ta] -//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var symbolMap = { - '1': '௧', - '2': '௨', - '3': '௩', - '4': '௪', - '5': '௫', - '6': '௬', - '7': '௭', - '8': '௮', - '9': '௯', - '0': '௦' -}; -var numberMap = { - '௧': '1', - '௨': '2', - '௩': '3', - '௪': '4', - '௫': '5', - '௬': '6', - '௭': '7', - '௮': '8', - '௯': '9', - '௦': '0' -}; - -var ta = moment.defineLocale('ta', { - months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), - weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), - weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, HH:mm', - LLLL : 'dddd, D MMMM YYYY, HH:mm' - }, - calendar : { - sameDay : '[இன்று] LT', - nextDay : '[நாளை] LT', - nextWeek : 'dddd, LT', - lastDay : '[நேற்று] LT', - lastWeek : '[கடந்த வாரம்] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s இல்', - past : '%s முன்', - s : 'ஒரு சில விநாடிகள்', - m : 'ஒரு நிமிடம்', - mm : '%d நிமிடங்கள்', - h : 'ஒரு மணி நேரம்', - hh : '%d மணி நேரம்', - d : 'ஒரு நாள்', - dd : '%d நாட்கள்', - M : 'ஒரு மாதம்', - MM : '%d மாதங்கள்', - y : 'ஒரு வருடம்', - yy : '%d ஆண்டுகள்' - }, - dayOfMonthOrdinalParse: /\d{1,2}வது/, - ordinal : function (number) { - return number + 'வது'; - }, - preparse: function (string) { - return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // refer http://ta.wikipedia.org/s/1er1 - meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, - meridiem : function (hour, minute, isLower) { - if (hour < 2) { - return ' யாமம்'; - } else if (hour < 6) { - return ' வைகறை'; // வைகறை - } else if (hour < 10) { - return ' காலை'; // காலை - } else if (hour < 14) { - return ' நண்பகல்'; // நண்பகல் - } else if (hour < 18) { - return ' எற்பாடு'; // எற்பாடு - } else if (hour < 22) { - return ' மாலை'; // மாலை - } else { - return ' யாமம்'; - } - }, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'யாமம்') { - return hour < 2 ? hour : hour + 12; - } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { - return hour; - } else if (meridiem === 'நண்பகல்') { - return hour >= 10 ? hour : hour + 12; - } else { - return hour + 12; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - -return ta; - -}))); - - -/***/ }), -/* 100 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Telugu [te] -//! author : Krishna Chaitanya Thota : https://github.com/kcthota - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var te = moment.defineLocale('te', { - months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'), - monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'), - monthsParseExact : true, - weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'), - weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), - weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm', - LLLL : 'dddd, D MMMM YYYY, A h:mm' - }, - calendar : { - sameDay : '[నేడు] LT', - nextDay : '[రేపు] LT', - nextWeek : 'dddd, LT', - lastDay : '[నిన్న] LT', - lastWeek : '[గత] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s లో', - past : '%s క్రితం', - s : 'కొన్ని క్షణాలు', - m : 'ఒక నిమిషం', - mm : '%d నిమిషాలు', - h : 'ఒక గంట', - hh : '%d గంటలు', - d : 'ఒక రోజు', - dd : '%d రోజులు', - M : 'ఒక నెల', - MM : '%d నెలలు', - y : 'ఒక సంవత్సరం', - yy : '%d సంవత్సరాలు' - }, - dayOfMonthOrdinalParse : /\d{1,2}వ/, - ordinal : '%dవ', - meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'రాత్రి') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'ఉదయం') { - return hour; - } else if (meridiem === 'మధ్యాహ్నం') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'సాయంత్రం') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'రాత్రి'; - } else if (hour < 10) { - return 'ఉదయం'; - } else if (hour < 17) { - return 'మధ్యాహ్నం'; - } else if (hour < 20) { - return 'సాయంత్రం'; - } else { - return 'రాత్రి'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); - -return te; - -}))); - - -/***/ }), -/* 101 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Tetun Dili (East Timor) [tet] -//! author : Joshua Brooks : https://github.com/joshbrooks -//! author : Onorio De J. Afonso : https://github.com/marobo - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var tet = moment.defineLocale('tet', { - months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu'.split('_'), - weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sext_Sab'.split('_'), - weekdaysMin : 'Do_Seg_Te_Ku_Ki_Sex_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Ohin iha] LT', - nextDay: '[Aban iha] LT', - nextWeek: 'dddd [iha] LT', - lastDay: '[Horiseik iha] LT', - lastWeek: 'dddd [semana kotuk] [iha] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'iha %s', - past : '%s liuba', - s : 'minutu balun', - m : 'minutu ida', - mm : 'minutus %d', - h : 'horas ida', - hh : 'horas %d', - d : 'loron ida', - dd : 'loron %d', - M : 'fulan ida', - MM : 'fulan %d', - y : 'tinan ida', - yy : 'tinan %d' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return tet; - -}))); - - -/***/ }), -/* 102 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Thai [th] -//! author : Kridsada Thanabulpong : https://github.com/sirn - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var th = moment.defineLocale('th', { - months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), - monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'), - monthsParseExact: true, - weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), - weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference - weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY เวลา H:mm', - LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm' - }, - meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, - isPM: function (input) { - return input === 'หลังเที่ยง'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ก่อนเที่ยง'; - } else { - return 'หลังเที่ยง'; - } - }, - calendar : { - sameDay : '[วันนี้ เวลา] LT', - nextDay : '[พรุ่งนี้ เวลา] LT', - nextWeek : 'dddd[หน้า เวลา] LT', - lastDay : '[เมื่อวานนี้ เวลา] LT', - lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'อีก %s', - past : '%sที่แล้ว', - s : 'ไม่กี่วินาที', - m : '1 นาที', - mm : '%d นาที', - h : '1 ชั่วโมง', - hh : '%d ชั่วโมง', - d : '1 วัน', - dd : '%d วัน', - M : '1 เดือน', - MM : '%d เดือน', - y : '1 ปี', - yy : '%d ปี' - } -}); - -return th; - -}))); - - -/***/ }), -/* 103 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Tagalog (Philippines) [tl-ph] -//! author : Dan Hagman : https://github.com/hagmandan - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var tlPh = moment.defineLocale('tl-ph', { - months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), - monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), - weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), - weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), - weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'MM/D/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY HH:mm', - LLLL : 'dddd, MMMM DD, YYYY HH:mm' - }, - calendar : { - sameDay: 'LT [ngayong araw]', - nextDay: '[Bukas ng] LT', - nextWeek: 'LT [sa susunod na] dddd', - lastDay: 'LT [kahapon]', - lastWeek: 'LT [noong nakaraang] dddd', - sameElse: 'L' - }, - relativeTime : { - future : 'sa loob ng %s', - past : '%s ang nakalipas', - s : 'ilang segundo', - m : 'isang minuto', - mm : '%d minuto', - h : 'isang oras', - hh : '%d oras', - d : 'isang araw', - dd : '%d araw', - M : 'isang buwan', - MM : '%d buwan', - y : 'isang taon', - yy : '%d taon' - }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return tlPh; - -}))); - - -/***/ }), -/* 104 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Klingon [tlh] -//! author : Dominika Kruk : https://github.com/amaranthrose - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_'); - -function translateFuture(output) { - var time = output; - time = (output.indexOf('jaj') !== -1) ? - time.slice(0, -3) + 'leS' : - (output.indexOf('jar') !== -1) ? - time.slice(0, -3) + 'waQ' : - (output.indexOf('DIS') !== -1) ? - time.slice(0, -3) + 'nem' : - time + ' pIq'; - return time; -} - -function translatePast(output) { - var time = output; - time = (output.indexOf('jaj') !== -1) ? - time.slice(0, -3) + 'Hu’' : - (output.indexOf('jar') !== -1) ? - time.slice(0, -3) + 'wen' : - (output.indexOf('DIS') !== -1) ? - time.slice(0, -3) + 'ben' : - time + ' ret'; - return time; -} - -function translate(number, withoutSuffix, string, isFuture) { - var numberNoun = numberAsNoun(number); - switch (string) { - case 'mm': - return numberNoun + ' tup'; - case 'hh': - return numberNoun + ' rep'; - case 'dd': - return numberNoun + ' jaj'; - case 'MM': - return numberNoun + ' jar'; - case 'yy': - return numberNoun + ' DIS'; - } -} - -function numberAsNoun(number) { - var hundred = Math.floor((number % 1000) / 100), - ten = Math.floor((number % 100) / 10), - one = number % 10, - word = ''; - if (hundred > 0) { - word += numbersNouns[hundred] + 'vatlh'; - } - if (ten > 0) { - word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH'; - } - if (one > 0) { - word += ((word !== '') ? ' ' : '') + numbersNouns[one]; - } - return (word === '') ? 'pagh' : word; -} - -var tlh = moment.defineLocale('tlh', { - months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'), - monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'), - monthsParseExact : true, - weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[DaHjaj] LT', - nextDay: '[wa’leS] LT', - nextWeek: 'LLL', - lastDay: '[wa’Hu’] LT', - lastWeek: 'LLL', - sameElse: 'L' - }, - relativeTime : { - future : translateFuture, - past : translatePast, - s : 'puS lup', - m : 'wa’ tup', - mm : translate, - h : 'wa’ rep', - hh : translate, - d : 'wa’ jaj', - dd : translate, - M : 'wa’ jar', - MM : translate, - y : 'wa’ DIS', - yy : translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return tlh; - -}))); - - -/***/ }), -/* 105 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Turkish [tr] -//! authors : Erhan Gundogan : https://github.com/erhangundogan, -//! Burak Yiğit Kaya: https://github.com/BYK - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var suffixes = { - 1: '\'inci', - 5: '\'inci', - 8: '\'inci', - 70: '\'inci', - 80: '\'inci', - 2: '\'nci', - 7: '\'nci', - 20: '\'nci', - 50: '\'nci', - 3: '\'üncü', - 4: '\'üncü', - 100: '\'üncü', - 6: '\'ncı', - 9: '\'uncu', - 10: '\'uncu', - 30: '\'uncu', - 60: '\'ıncı', - 90: '\'ıncı' -}; - -var tr = moment.defineLocale('tr', { - months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), - monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), - weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), - weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), - weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[yarın saat] LT', - nextWeek : '[haftaya] dddd [saat] LT', - lastDay : '[dün] LT', - lastWeek : '[geçen hafta] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s önce', - s : 'birkaç saniye', - m : 'bir dakika', - mm : '%d dakika', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir yıl', - yy : '%d yıl' - }, - dayOfMonthOrdinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + '\'ıncı'; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - return number + (suffixes[a] || suffixes[b] || suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return tr; - -}))); - - -/***/ }), -/* 106 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Talossan [tzl] -//! author : Robin van der Vliet : https://github.com/robin0van0der0v -//! author : Iustì Canun - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. -// This is currently too difficult (maybe even impossible) to add. -var tzl = moment.defineLocale('tzl', { - months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), - monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), - weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), - weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), - weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM [dallas] YYYY', - LLL : 'D. MMMM [dallas] YYYY HH.mm', - LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm' - }, - meridiemParse: /d\'o|d\'a/i, - isPM : function (input) { - return 'd\'o' === input.toLowerCase(); - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'd\'o' : 'D\'O'; - } else { - return isLower ? 'd\'a' : 'D\'A'; - } - }, - calendar : { - sameDay : '[oxhi à] LT', - nextDay : '[demà à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[ieiri à] LT', - lastWeek : '[sür el] dddd [lasteu à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'osprei %s', - past : 'ja%s', - s : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 's': ['viensas secunds', '\'iensas secunds'], - 'm': ['\'n míut', '\'iens míut'], - 'mm': [number + ' míuts', '' + number + ' míuts'], - 'h': ['\'n þora', '\'iensa þora'], - 'hh': [number + ' þoras', '' + number + ' þoras'], - 'd': ['\'n ziua', '\'iensa ziua'], - 'dd': [number + ' ziuas', '' + number + ' ziuas'], - 'M': ['\'n mes', '\'iens mes'], - 'MM': [number + ' mesen', '' + number + ' mesen'], - 'y': ['\'n ar', '\'iens ar'], - 'yy': [number + ' ars', '' + number + ' ars'] - }; - return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]); -} - -return tzl; - -}))); - - -/***/ }), -/* 107 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Central Atlas Tamazight Latin [tzm-latn] -//! author : Abdel Said : https://github.com/abdelsaid - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var tzmLatn = moment.defineLocale('tzm-latn', { - months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[asdkh g] LT', - nextDay: '[aska g] LT', - nextWeek: 'dddd [g] LT', - lastDay: '[assant g] LT', - lastWeek: 'dddd [g] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dadkh s yan %s', - past : 'yan %s', - s : 'imik', - m : 'minuḍ', - mm : '%d minuḍ', - h : 'saɛa', - hh : '%d tassaɛin', - d : 'ass', - dd : '%d ossan', - M : 'ayowr', - MM : '%d iyyirn', - y : 'asgas', - yy : '%d isgasn' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - -return tzmLatn; - -}))); - - -/***/ }), -/* 108 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Central Atlas Tamazight [tzm] -//! author : Abdel Said : https://github.com/abdelsaid - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var tzm = moment.defineLocale('tzm', { - months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', - nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', - nextWeek: 'dddd [ⴴ] LT', - lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', - lastWeek: 'dddd [ⴴ] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', - past : 'ⵢⴰⵏ %s', - s : 'ⵉⵎⵉⴽ', - m : 'ⵎⵉⵏⵓⴺ', - mm : '%d ⵎⵉⵏⵓⴺ', - h : 'ⵙⴰⵄⴰ', - hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', - d : 'ⴰⵙⵙ', - dd : '%d oⵙⵙⴰⵏ', - M : 'ⴰⵢoⵓⵔ', - MM : '%d ⵉⵢⵢⵉⵔⵏ', - y : 'ⴰⵙⴳⴰⵙ', - yy : '%d ⵉⵙⴳⴰⵙⵏ' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); - -return tzm; - -}))); - - -/***/ }), -/* 109 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Ukrainian [uk] -//! author : zemlanin : https://github.com/zemlanin -//! Author : Menelion Elensúle : https://github.com/Oire - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); -} -function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', - 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин', - 'dd': 'день_дні_днів', - 'MM': 'місяць_місяці_місяців', - 'yy': 'рік_роки_років' - }; - if (key === 'm') { - return withoutSuffix ? 'хвилина' : 'хвилину'; - } - else if (key === 'h') { - return withoutSuffix ? 'година' : 'годину'; - } - else { - return number + ' ' + plural(format[key], +number); - } -} -function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), - 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), - 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') - }; - - if (!m) { - return weekdays['nominative']; - } - - var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? - 'accusative' : - ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? - 'genitive' : - 'nominative'); - return weekdays[nounCase][m.day()]; -} -function processHoursFunction(str) { - return function () { - return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; - }; -} - -var uk = moment.defineLocale('uk', { - months : { - 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'), - 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_') - }, - monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), - weekdays : weekdaysCaseReplace, - weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY р.', - LLL : 'D MMMM YYYY р., HH:mm', - LLLL : 'dddd, D MMMM YYYY р., HH:mm' - }, - calendar : { - sameDay: processHoursFunction('[Сьогодні '), - nextDay: processHoursFunction('[Завтра '), - lastDay: processHoursFunction('[Вчора '), - nextWeek: processHoursFunction('[У] dddd ['), - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return processHoursFunction('[Минулої] dddd [').call(this); - case 1: - case 2: - case 4: - return processHoursFunction('[Минулого] dddd [').call(this); - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'за %s', - past : '%s тому', - s : 'декілька секунд', - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : 'годину', - hh : relativeTimeWithPlural, - d : 'день', - dd : relativeTimeWithPlural, - M : 'місяць', - MM : relativeTimeWithPlural, - y : 'рік', - yy : relativeTimeWithPlural - }, - // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason - meridiemParse: /ночі|ранку|дня|вечора/, - isPM: function (input) { - return /^(дня|вечора)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночі'; - } else if (hour < 12) { - return 'ранку'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечора'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return number + '-й'; - case 'D': - return number + '-го'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return uk; - -}))); - - -/***/ }), -/* 110 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Urdu [ur] -//! author : Sawood Alam : https://github.com/ibnesayeed -//! author : Zack : https://github.com/ZackVision - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var months = [ - 'جنوری', - 'فروری', - 'مارچ', - 'اپریل', - 'مئی', - 'جون', - 'جولائی', - 'اگست', - 'ستمبر', - 'اکتوبر', - 'نومبر', - 'دسمبر' -]; -var days = [ - 'اتوار', - 'پیر', - 'منگل', - 'بدھ', - 'جمعرات', - 'جمعہ', - 'ہفتہ' -]; - -var ur = moment.defineLocale('ur', { - months : months, - monthsShort : months, - weekdays : days, - weekdaysShort : days, - weekdaysMin : days, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd، D MMMM YYYY HH:mm' - }, - meridiemParse: /صبح|شام/, - isPM : function (input) { - return 'شام' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'صبح'; - } - return 'شام'; - }, - calendar : { - sameDay : '[آج بوقت] LT', - nextDay : '[کل بوقت] LT', - nextWeek : 'dddd [بوقت] LT', - lastDay : '[گذشتہ روز بوقت] LT', - lastWeek : '[گذشتہ] dddd [بوقت] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s بعد', - past : '%s قبل', - s : 'چند سیکنڈ', - m : 'ایک منٹ', - mm : '%d منٹ', - h : 'ایک گھنٹہ', - hh : '%d گھنٹے', - d : 'ایک دن', - dd : '%d دن', - M : 'ایک ماہ', - MM : '%d ماہ', - y : 'ایک سال', - yy : '%d سال' - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return ur; - -}))); - - -/***/ }), -/* 111 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Uzbek Latin [uz-latn] -//! author : Rasulbek Mirzayev : github.com/Rasulbeeek - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var uzLatn = moment.defineLocale('uz-latn', { - months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'), - monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), - weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'), - weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), - weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' - }, - calendar : { - sameDay : '[Bugun soat] LT [da]', - nextDay : '[Ertaga] LT [da]', - nextWeek : 'dddd [kuni soat] LT [da]', - lastDay : '[Kecha soat] LT [da]', - lastWeek : '[O\'tgan] dddd [kuni soat] LT [da]', - sameElse : 'L' - }, - relativeTime : { - future : 'Yaqin %s ichida', - past : 'Bir necha %s oldin', - s : 'soniya', - m : 'bir daqiqa', - mm : '%d daqiqa', - h : 'bir soat', - hh : '%d soat', - d : 'bir kun', - dd : '%d kun', - M : 'bir oy', - MM : '%d oy', - y : 'bir yil', - yy : '%d yil' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); - -return uzLatn; - -}))); - - -/***/ }), -/* 112 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Uzbek [uz] -//! author : Sardor Muminov : https://github.com/muminoff - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var uz = moment.defineLocale('uz', { - months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), - monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), - weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), - weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' - }, - calendar : { - sameDay : '[Бугун соат] LT [да]', - nextDay : '[Эртага] LT [да]', - nextWeek : 'dddd [куни соат] LT [да]', - lastDay : '[Кеча соат] LT [да]', - lastWeek : '[Утган] dddd [куни соат] LT [да]', - sameElse : 'L' - }, - relativeTime : { - future : 'Якин %s ичида', - past : 'Бир неча %s олдин', - s : 'фурсат', - m : 'бир дакика', - mm : '%d дакика', - h : 'бир соат', - hh : '%d соат', - d : 'бир кун', - dd : '%d кун', - M : 'бир ой', - MM : '%d ой', - y : 'бир йил', - yy : '%d йил' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 4th is the first week of the year. - } -}); - -return uz; - -}))); - - -/***/ }), -/* 113 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Vietnamese [vi] -//! author : Bang Nguyen : https://github.com/bangnk - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var vi = moment.defineLocale('vi', { - months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'), - monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), - monthsParseExact : true, - weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), - weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysParseExact : true, - meridiemParse: /sa|ch/i, - isPM : function (input) { - return /^ch$/i.test(input); - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'sa' : 'SA'; - } else { - return isLower ? 'ch' : 'CH'; - } - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM [năm] YYYY', - LLL : 'D MMMM [năm] YYYY HH:mm', - LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', - l : 'DD/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Hôm nay lúc] LT', - nextDay: '[Ngày mai lúc] LT', - nextWeek: 'dddd [tuần tới lúc] LT', - lastDay: '[Hôm qua lúc] LT', - lastWeek: 'dddd [tuần rồi lúc] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s tới', - past : '%s trước', - s : 'vài giây', - m : 'một phút', - mm : '%d phút', - h : 'một giờ', - hh : '%d giờ', - d : 'một ngày', - dd : '%d ngày', - M : 'một tháng', - MM : '%d tháng', - y : 'một năm', - yy : '%d năm' - }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return vi; - -}))); - - -/***/ }), -/* 114 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Pseudo [x-pseudo] -//! author : Andrew Hood : https://github.com/andrewhood125 - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var xPseudo = moment.defineLocale('x-pseudo', { - months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'), - monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'), - monthsParseExact : true, - weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'), - weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), - weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[T~ódá~ý át] LT', - nextDay : '[T~ómó~rró~w át] LT', - nextWeek : 'dddd [át] LT', - lastDay : '[Ý~ést~érdá~ý át] LT', - lastWeek : '[L~ást] dddd [át] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'í~ñ %s', - past : '%s á~gó', - s : 'á ~féw ~sécó~ñds', - m : 'á ~míñ~úté', - mm : '%d m~íñú~tés', - h : 'á~ñ hó~úr', - hh : '%d h~óúrs', - d : 'á ~dáý', - dd : '%d d~áýs', - M : 'á ~móñ~th', - MM : '%d m~óñt~hs', - y : 'á ~ýéár', - yy : '%d ý~éárs' - }, - dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return xPseudo; - -}))); - - -/***/ }), -/* 115 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Yoruba Nigeria [yo] -//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var yo = moment.defineLocale('yo', { - months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'), - monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), - weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), - weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), - weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Ònì ni] LT', - nextDay : '[Ọ̀la ni] LT', - nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT', - lastDay : '[Àna ni] LT', - lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'ní %s', - past : '%s kọjá', - s : 'ìsẹjú aayá die', - m : 'ìsẹjú kan', - mm : 'ìsẹjú %d', - h : 'wákati kan', - hh : 'wákati %d', - d : 'ọjọ́ kan', - dd : 'ọjọ́ %d', - M : 'osù kan', - MM : 'osù %d', - y : 'ọdún kan', - yy : 'ọdún %d' - }, - dayOfMonthOrdinalParse : /ọjọ́\s\d{1,2}/, - ordinal : 'ọjọ́ %d', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return yo; - -}))); - - -/***/ }), -/* 116 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Chinese (China) [zh-cn] -//! author : suupic : https://github.com/suupic -//! author : Zeno Zeng : https://github.com/zenozeng - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var zhCn = moment.defineLocale('zh-cn', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY年MMMD日', - LL : 'YYYY年MMMD日', - LLL : 'YYYY年MMMD日Ah点mm分', - LLLL : 'YYYY年MMMD日ddddAh点mm分', - l : 'YYYY年MMMD日', - ll : 'YYYY年MMMD日', - lll : 'YYYY年MMMD日 HH:mm', - llll : 'YYYY年MMMD日dddd HH:mm' - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || - meridiem === '上午') { - return hour; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } else { - // '中午' - return hour >= 11 ? hour : hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/, - ordinal : function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '周'; - default: - return number; - } - }, - relativeTime : { - future : '%s内', - past : '%s前', - s : '几秒', - m : '1 分钟', - mm : '%d 分钟', - h : '1 小时', - hh : '%d 小时', - d : '1 天', - dd : '%d 天', - M : '1 个月', - MM : '%d 个月', - y : '1 年', - yy : '%d 年' - }, - week : { - // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); - -return zhCn; - -}))); - - -/***/ }), -/* 117 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Chinese (Hong Kong) [zh-hk] -//! author : Ben : https://github.com/ben-lin -//! author : Chris Lam : https://github.com/hehachris -//! author : Konstantin : https://github.com/skfd - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var zhHk = moment.defineLocale('zh-hk', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY年MMMD日', - LL : 'YYYY年MMMD日', - LLL : 'YYYY年MMMD日 HH:mm', - LLLL : 'YYYY年MMMD日dddd HH:mm', - l : 'YYYY年MMMD日', - ll : 'YYYY年MMMD日', - lll : 'YYYY年MMMD日 HH:mm', - llll : 'YYYY年MMMD日dddd HH:mm' - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { - switch (period) { - case 'd' : - case 'D' : - case 'DDD' : - return number + '日'; - case 'M' : - return number + '月'; - case 'w' : - case 'W' : - return number + '週'; - default : - return number; - } - }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - m : '1 分鐘', - mm : '%d 分鐘', - h : '1 小時', - hh : '%d 小時', - d : '1 天', - dd : '%d 天', - M : '1 個月', - MM : '%d 個月', - y : '1 年', - yy : '%d 年' - } -}); - -return zhHk; - -}))); - - -/***/ }), -/* 118 */ -/***/ (function(module, exports, __webpack_require__) { - -//! moment.js locale configuration -//! locale : Chinese (Taiwan) [zh-tw] -//! author : Ben : https://github.com/ben-lin -//! author : Chris Lam : https://github.com/hehachris - -;(function (global, factory) { - true ? factory(__webpack_require__(0)) : - typeof define === 'function' && define.amd ? define(['../moment'], factory) : - factory(global.moment) -}(this, (function (moment) { 'use strict'; - - -var zhTw = moment.defineLocale('zh-tw', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY年MMMD日', - LL : 'YYYY年MMMD日', - LLL : 'YYYY年MMMD日 HH:mm', - LLLL : 'YYYY年MMMD日dddd HH:mm', - l : 'YYYY年MMMD日', - ll : 'YYYY年MMMD日', - lll : 'YYYY年MMMD日 HH:mm', - llll : 'YYYY年MMMD日dddd HH:mm' - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { - switch (period) { - case 'd' : - case 'D' : - case 'DDD' : - return number + '日'; - case 'M' : - return number + '月'; - case 'w' : - case 'W' : - return number + '週'; - default : - return number; - } - }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - m : '1 分鐘', - mm : '%d 分鐘', - h : '1 小時', - hh : '%d 小時', - d : '1 天', - dd : '%d 天', - M : '1 個月', - MM : '%d 個月', - y : '1 年', - yy : '%d 年' - } -}); - -return zhTw; - -}))); - - -/***/ }), -/* 119 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return HotTableModule; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_hot_table_component__ = __webpack_require__(3); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_hot_column_component__ = __webpack_require__(121); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_hot_registerer_service__ = __webpack_require__(2); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; - - - - -var HotTableModule = /** @class */ (function () { - function HotTableModule() { - } - HotTableModule_1 = HotTableModule; - HotTableModule.forRoot = function () { - return { - ngModule: HotTableModule_1, - providers: [__WEBPACK_IMPORTED_MODULE_3__src_hot_registerer_service__["a" /* HotRegisterer */]] - }; - }; - HotTableModule = HotTableModule_1 = __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["NgModule"])({ - declarations: [ - __WEBPACK_IMPORTED_MODULE_1__src_hot_table_component__["a" /* HotTableComponent */], - __WEBPACK_IMPORTED_MODULE_2__src_hot_column_component__["a" /* HotColumnComponent */], - ], - exports: [__WEBPACK_IMPORTED_MODULE_1__src_hot_table_component__["a" /* HotTableComponent */], __WEBPACK_IMPORTED_MODULE_2__src_hot_column_component__["a" /* HotColumnComponent */]], - providers: [__WEBPACK_IMPORTED_MODULE_3__src_hot_registerer_service__["a" /* HotRegisterer */]], - }) - ], HotTableModule); - return HotTableModule; - var HotTableModule_1; -}()); - - - -/***/ }), -/* 120 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__module__ = __webpack_require__(119); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "HotTableModule", function() { return __WEBPACK_IMPORTED_MODULE_0__module__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_hot_registerer_service__ = __webpack_require__(2); -/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "HotRegisterer", function() { return __WEBPACK_IMPORTED_MODULE_1__src_hot_registerer_service__["a"]; }); - - - - -/***/ }), -/* 121 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return HotColumnComponent; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__hot_table_component__ = __webpack_require__(3); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; - - -var HotColumnComponent = /** @class */ (function () { - function HotColumnComponent(inj) { - this.inj = inj; - this.firstRun = true; - this.parentComponent = this.inj.get(__WEBPACK_IMPORTED_MODULE_1__hot_table_component__["a" /* HotTableComponent */]); - } - HotColumnComponent.prototype.ngOnInit = function () { - this.firstRun = false; - this.parentComponent.addColumn(this); - }; - HotColumnComponent.prototype.ngOnChanges = function (changes) { - if (this.firstRun) { - return; - } - this.parentComponent.onAfterColumnsChange(); - }; - HotColumnComponent.prototype.ngOnDestroy = function () { - this.parentComponent.removeColumn(this); - }; - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "allowHtml", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "allowInsertColumn", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "allowInsertRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "allowInvalid", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "allowRemoveColumn", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "allowRemoveRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "autoColumnSize", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Array) - ], HotColumnComponent.prototype, "autoComplete", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "autoRowSize", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "autoWrapCol", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "autoWrapRow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "bindRowsWithHeaders", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Array) - ], HotColumnComponent.prototype, "cell", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Function) - ], HotColumnComponent.prototype, "cells", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "checkedTemplate", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "className", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "colHeaders", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "collapsibleColumns", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "columnHeaderHeight", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "columns", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "columnSorting", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "columnSummary", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "colWidths", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "commentedCellClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "comments", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "contextMenu", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "copyable", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "copyColsLimit", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "copyPaste", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "copyRowsLimit", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "correctFormat", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "currentColClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "currentHeaderClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "currentRowClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "customBorders", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Array) - ], HotColumnComponent.prototype, "data", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "dataSchema", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "dateFormat", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "debug", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "defaultDate", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "disableVisualSelection", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "dropdownMenu", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "editor", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "enterBeginsEditing", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "enterMoves", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "fillHandle", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "filter", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "filteringCaseSensitive", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "filters", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "fixedColumnsLeft", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "fixedRowsBottom", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "fixedRowsTop", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "format", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "formulas", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "fragmentSelection", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "ganttChart", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "headerTooltips", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "height", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "hiddenColumns", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "hiddenRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "invalidCellClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "label", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "language", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "manualColumnFreeze", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "manualColumnMove", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "manualColumnResize", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "manualRowMove", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "manualRowResize", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "maxCols", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "maxRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "mergeCells", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "minCols", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "minRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "minSpareCols", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "minSpareRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "multiSelect", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Array) - ], HotColumnComponent.prototype, "nestedHeaders", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "noWordWrapClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "observeChanges", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "observeDOMVisibility", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "outsideClickDeselects", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "pasteMode", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "persistentState", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "placeholder", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "placeholderCellClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "preventOverflow", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "readOnly", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "readOnlyCellClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "renderAllRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "renderer", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "rowHeaders", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "rowHeaderWidth", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "rowHeights", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "search", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Array) - ], HotColumnComponent.prototype, "selectOptions", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "skipColumnOnPaste", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "sortByRelevance", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Function) - ], HotColumnComponent.prototype, "sortFunction", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "sortIndicator", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "source", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "startCols", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "startRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "stretchH", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "strict", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "tableClassName", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "tabMoves", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "title", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "trimDropdown", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "trimRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "trimWhitespace", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", String) - ], HotColumnComponent.prototype, "type", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "uncheckedTemplate", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "undo", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "validator", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "viewportColumnRenderingOffset", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "viewportRowRenderingOffset", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Number) - ], HotColumnComponent.prototype, "visibleRows", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Object) - ], HotColumnComponent.prototype, "width", void 0); - __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Input"])(), - __metadata("design:type", Boolean) - ], HotColumnComponent.prototype, "wordWrap", void 0); - HotColumnComponent = __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Component"])({ - selector: 'hot-column', - template: "", - }), - __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_0__angular_core__["Injector"]]) - ], HotColumnComponent); - return HotColumnComponent; -}()); - - - -/***/ }), -/* 122 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return HotHelper; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; - -var AVAILABLE_OPTIONS = ['data', 'dataSchema', 'width', 'height', 'startRows', 'startCols', - 'rowHeaders', 'colHeaders', 'colWidths', 'rowHeights', 'columns', 'cells', 'cell', 'comments', - 'customBorders', 'minRows', 'minCols', 'maxRows', 'maxCols', 'minSpareRows', 'minSpareCols', - 'allowInsertRow', 'allowInsertColumn', 'allowRemoveRow', 'allowRemoveColumn', 'multiSelect', - 'fillHandle', 'fixedRowsTop', 'fixedRowsBottom', 'fixedColumnsLeft', 'outsideClickDeselects', - 'enterBeginsEditing', 'enterMoves', 'tabMoves', 'autoWrapRow', 'autoWrapCol', 'copyRowsLimit', - 'copyColsLimit', 'pasteMode', 'persistentState', 'currentRowClassName', 'currentColClassName', - 'currentHeaderClassName', 'className', 'tableClassName', 'stretchH', 'isEmptyRow', 'isEmptyCol', - 'observeDOMVisibility', 'allowInvalid', 'allowEmpty', 'invalidCellClassName', 'placeholder', - 'placeholderCellClassName', 'readOnlyCellClassName', 'renderer', 'commentedCellClassName', - 'fragmentSelection', 'readOnly', 'skipColumnOnPaste', 'search', 'type', 'copyable', 'editor', - 'autoComplete', 'visibleRows', 'trimDropdown', 'debug', 'wordWrap', 'noWordWrapClassName', - 'contextMenu', 'contextMenuCopyPaste', 'copyPaste', 'undo', 'columnSorting', 'manualColumnMove', - 'manualColumnResize', 'manualRowMove', 'manualRowResize', 'mergeCells', - 'viewportRowRenderingOffset', 'viewportColumnRenderingOffset', 'validator', - 'disableVisualSelection', 'sortIndicator', 'manualColumnFreeze', 'trimWhitespace', - 'source', 'title', 'checkedTemplate', 'uncheckedTemplate', 'label', 'format', 'language', - 'selectOptions', 'autoColumnSize', 'autoRowSize', 'dateFormat', 'correctFormat', 'defaultDate', - 'strict', 'allowHtml', 'renderAllRows', 'preventOverflow', 'bindRowsWithHeaders', - 'collapsibleColumns', 'columnSummary', 'dropdownMenu', 'filters', 'formulas', 'ganttChart', - 'headerTooltips', 'hiddenColumns', 'hiddenRows', 'nestedHeaders', 'trimRows', 'rowHeaderWidth', - 'columnHeaderHeight', 'observeChanges', 'sortFunction', 'sortByRelevance', 'filter', - 'filteringCaseSensitive']; -var AVAILABLE_HOOKS = ['afterCellMetaReset', 'afterChange', 'afterChangesObserved', - 'afterContextMenuDefaultOptions', 'beforeContextMenuSetItems', 'afterDropdownMenuDefaultOptions', - 'beforeDropdownMenuSetItems', 'afterContextMenuHide', 'afterContextMenuShow', 'afterCopyLimit', - 'beforeCreateCol', 'afterCreateCol', 'beforeCreateRow', 'afterCreateRow', 'afterDeselect', - 'afterDestroy', 'afterDocumentKeyDown', 'afterGetCellMeta', 'afterGetColHeader', - 'afterGetRowHeader', 'afterInit', 'afterLoadData', 'afterMomentumScroll', - 'afterOnCellCornerMouseDown', 'afterOnCellCornerDblClick', 'afterOnCellMouseDown', - 'afterOnCellMouseOver', 'afterOnCellMouseOut', 'afterRemoveCol', 'afterRemoveRow', 'afterRender', - 'beforeRenderer', 'afterRenderer', 'afterScrollHorizontally', 'afterScrollVertically', - 'afterSelection', 'afterSelectionByProp', 'afterSelectionEnd', 'afterSelectionEndByProp', - 'afterSetCellMeta', 'afterSetDataAtCell', 'afterSetDataAtRowProp', 'afterUpdateSettings', - 'afterValidate', 'beforeAutofill', 'beforeCellAlignment', 'beforeChange', 'beforeChangeRender', - 'beforeDrawBorders', 'beforeGetCellMeta', 'beforeInit', 'beforeInitWalkontable', 'beforeKeyDown', - 'beforeOnCellMouseDown', 'beforeOnCellMouseOver', 'beforeOnCellMouseOut', 'beforeRemoveCol', - 'beforeRemoveRow', 'beforeRender', 'beforeSetRangeStart', 'beforeSetRangeEnd', 'beforeTouchScroll', - 'beforeValidate', 'beforeValueRender', 'construct', 'init', 'modifyCol', 'unmodifyCol', - 'unmodifyRow', 'modifyColHeader', 'modifyColWidth', 'modifyRow', 'modifyRowHeader', - 'modifyRowHeight', 'modifyData', 'modifyRowData', 'persistentStateLoad', 'persistentStateReset', - 'persistentStateSave', 'beforeColumnSort', 'afterColumnSort', 'modifyAutofillRange', - 'modifyCopyableRange', 'beforeCut', 'afterCut', 'beforeCopy', 'afterCopy', 'beforePaste', - 'afterPaste', 'beforeColumnMove', 'afterColumnMove', 'beforeRowMove', 'afterRowMove', - 'beforeColumnResize', 'afterColumnResize', 'beforeRowResize', 'afterRowResize', - 'afterGetColumnHeaderRenderers', 'afterGetRowHeaderRenderers', 'beforeStretchingColumnWidth', - 'beforeFilter', 'afterFilter', 'modifyColumnHeaderHeight', 'beforeUndo', 'afterUndo', 'beforeRedo', - 'afterRedo', 'modifyRowHeaderWidth', 'beforeAutofillInsidePopulate', 'modifyTransformStart', - 'modifyTransformEnd', 'afterModifyTransformStart', 'afterModifyTransformEnd', - 'afterViewportRowCalculatorOverride', 'afterViewportColumnCalculatorOverride', - 'afterPluginsInitialized', 'manualRowHeights', 'skipLengthCache', 'afterTrimRow', 'afterUntrimRow', - 'afterDropdownMenuShow', 'afterDropdownMenuHide', 'hiddenRow', 'hiddenColumn', 'beforeAddChild', - 'afterAddChild', 'beforeDetachChild', 'afterDetachChild', 'afterBeginEditing', - 'afterIsMultipleSelection']; -var HotHelper = /** @class */ (function () { - function HotHelper() { - } - HotHelper.prototype.mergeSettings = function (component) { - var mergedSettings = {}; - if (component['settings'] !== void 0) { - Object.keys(component['settings']).forEach(function (key) { - if (AVAILABLE_HOOKS.indexOf(key) > -1) { - mergedSettings[key] = function (p1, p2, p3, p4, p5, p6) { - return component._ngZone.run(function () { - return component['settings'][key](p1, p2, p3, p4, p5, p6); - }); - }; - } - else { - mergedSettings[key] = component['settings'][key]; - } - }); - } - AVAILABLE_OPTIONS.forEach(function (key) { - var option = component[key]; - if (option !== void 0) { - mergedSettings[key] = option; - } - }); - AVAILABLE_HOOKS.forEach(function (key) { - var hook = component[key]; - if (hook && hook.observers.length > 0) { - mergedSettings[key] = function (p1, p2, p3, p4, p5, p6) { - component._ngZone.run(function () { - component[key].emit([p1, p2, p3, p4, p5, p6]); - }); - }; - } - }); - return mergedSettings; - }; - HotHelper.prototype.prepareChanges = function (changes) { - var result = {}; - var parameters = Object.keys(changes); - parameters.forEach(function (param) { - if (changes.hasOwnProperty(param)) { - result[param] = changes[param].currentValue; - } - }); - return result; - }; - HotHelper = __decorate([ - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["Injectable"])() - ], HotHelper); - return HotHelper; -}()); - - - -/***/ }), -/* 123 */ -/***/ (function(module, exports, __webpack_require__) { - -/*! - * (The MIT License) - * - * Copyright (c) 2012-2014 Marcin Warpechowski - * Copyright (c) 2015 Handsoncode sp. z o.o. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * 'Software'), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Version: 0.34.4 - * Release date: 13/09/2017 (built at 13/09/2017 11:12:07) - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(true) - module.exports = factory(__webpack_require__(0), __webpack_require__(186), __webpack_require__(187)); - else if(typeof define === 'function' && define.amd) - define("Handsontable", ["moment", "numbro", "pikaday"], factory); - else if(typeof exports === 'object') - exports["Handsontable"] = factory(require("moment"), require("numbro"), require("pikaday")); - else - root["Handsontable"] = factory(root["moment"], root["numbro"], root["Pikaday"]); -})(this, function(__WEBPACK_EXTERNAL_MODULE_50__, __WEBPACK_EXTERNAL_MODULE_80__, __WEBPACK_EXTERNAL_MODULE_213__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 180); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.HTML_CHARACTERS = undefined; -exports.getParent = getParent; -exports.closest = closest; -exports.closestDown = closestDown; -exports.isChildOf = isChildOf; -exports.isChildOfWebComponentTable = isChildOfWebComponentTable; -exports.polymerWrap = polymerWrap; -exports.polymerUnwrap = polymerUnwrap; -exports.index = index; -exports.overlayContainsElement = overlayContainsElement; -exports.hasClass = hasClass; -exports.addClass = addClass; -exports.removeClass = removeClass; -exports.removeTextNodes = removeTextNodes; -exports.empty = empty; -exports.fastInnerHTML = fastInnerHTML; -exports.fastInnerText = fastInnerText; -exports.isVisible = isVisible; -exports.offset = offset; -exports.getWindowScrollTop = getWindowScrollTop; -exports.getWindowScrollLeft = getWindowScrollLeft; -exports.getScrollTop = getScrollTop; -exports.getScrollLeft = getScrollLeft; -exports.getScrollableElement = getScrollableElement; -exports.getTrimmingContainer = getTrimmingContainer; -exports.getStyle = getStyle; -exports.getComputedStyle = getComputedStyle; -exports.outerWidth = outerWidth; -exports.outerHeight = outerHeight; -exports.innerHeight = innerHeight; -exports.innerWidth = innerWidth; -exports.addEvent = addEvent; -exports.removeEvent = removeEvent; -exports.getCaretPosition = getCaretPosition; -exports.getSelectionEndPosition = getSelectionEndPosition; -exports.getSelectionText = getSelectionText; -exports.setCaretPosition = setCaretPosition; -exports.getScrollbarWidth = getScrollbarWidth; -exports.hasVerticalScrollbar = hasVerticalScrollbar; -exports.hasHorizontalScrollbar = hasHorizontalScrollbar; -exports.setOverlayPosition = setOverlayPosition; -exports.getCssTransform = getCssTransform; -exports.resetCssTransform = resetCssTransform; -exports.isInput = isInput; -exports.isOutsideInput = isOutsideInput; - -var _browser = __webpack_require__(26); - -var _feature = __webpack_require__(34); - -/** - * Get the parent of the specified node in the DOM tree. - * - * @param {HTMLElement} element Element from which traversing is started. - * @param {Number} [level=0] Traversing deep level. - * @return {HTMLElement|null} - */ -function getParent(element) { - var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - - var iteration = -1; - var parent = null; - - while (element != null) { - if (iteration === level) { - parent = element; - break; - } - - if (element.host && element.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { - element = element.host; - } else { - iteration++; - element = element.parentNode; - } - } - - return parent; -} - -/** - * Goes up the DOM tree (including given element) until it finds an element that matches the nodes or nodes name. - * This method goes up through web components. - * - * @param {HTMLElement} element Element from which traversing is started - * @param {Array} nodes Array of elements or Array of elements name - * @param {HTMLElement} [until] - * @returns {HTMLElement|null} - */ -function closest(element, nodes, until) { - while (element != null && element !== until) { - if (element.nodeType === Node.ELEMENT_NODE && (nodes.indexOf(element.nodeName) > -1 || nodes.indexOf(element) > -1)) { - return element; - } - if (element.host && element.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { - element = element.host; - } else { - element = element.parentNode; - } - } - - return null; -} - -/** - * Goes "down" the DOM tree (including given element) until it finds an element that matches the nodes or nodes name. - * - * @param {HTMLElement} element Element from which traversing is started - * @param {Array} nodes Array of elements or Array of elements name - * @param {HTMLElement} [until] - * @returns {HTMLElement|null} - */ -function closestDown(element, nodes, until) { - var matched = []; - - while (element) { - element = closest(element, nodes, until); - - if (!element || until && !until.contains(element)) { - break; - } - matched.push(element); - - if (element.host && element.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { - element = element.host; - } else { - element = element.parentNode; - } - } - var length = matched.length; - - return length ? matched[length - 1] : null; -} - -/** - * Goes up the DOM tree and checks if element is child of another element. - * - * @param child Child element - * @param {Object|String} parent Parent element OR selector of the parent element. - * If string provided, function returns `true` for the first occurrence of element with that class. - * @returns {Boolean} - */ -function isChildOf(child, parent) { - var node = child.parentNode; - var queriedParents = []; - - if (typeof parent === 'string') { - queriedParents = Array.prototype.slice.call(document.querySelectorAll(parent), 0); - } else { - queriedParents.push(parent); - } - - while (node != null) { - if (queriedParents.indexOf(node) > -1) { - return true; - } - node = node.parentNode; - } - - return false; -} - -/** - * Check if an element is part of `hot-table` web component. - * - * @param {Element} element - * @returns {Boolean} - */ -function isChildOfWebComponentTable(element) { - var hotTableName = 'hot-table', - result = false, - parentNode; - - parentNode = polymerWrap(element); - - function isHotTable(element) { - return element.nodeType === Node.ELEMENT_NODE && element.nodeName === hotTableName.toUpperCase(); - } - - while (parentNode != null) { - if (isHotTable(parentNode)) { - result = true; - break; - } else if (parentNode.host && parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { - result = isHotTable(parentNode.host); - - if (result) { - break; - } - parentNode = parentNode.host; - } - parentNode = parentNode.parentNode; - } - - return result; -} - -/** - * Wrap element into polymer/webcomponent container if exists - * - * @param element - * @returns {*} - */ -function polymerWrap(element) { - /* global Polymer */ - return typeof Polymer !== 'undefined' && typeof wrap === 'function' ? wrap(element) : element; -} - -/** - * Unwrap element from polymer/webcomponent container if exists - * - * @param element - * @returns {*} - */ -function polymerUnwrap(element) { - /* global Polymer */ - return typeof Polymer !== 'undefined' && typeof unwrap === 'function' ? unwrap(element) : element; -} - -/** - * Counts index of element within its parent - * WARNING: for performance reasons, assumes there are only element nodes (no text nodes). This is true for Walkotnable - * Otherwise would need to check for nodeType or use previousElementSibling - * - * @see http://jsperf.com/sibling-index/10 - * @param {Element} element - * @return {Number} - */ -function index(element) { - var i = 0; - - if (element.previousSibling) { - /* eslint-disable no-cond-assign */ - while (element = element.previousSibling) { - ++i; - } - } - - return i; -} - -/** - * Check if the provided overlay contains the provided element - * - * @param {String} overlay - * @param {HTMLElement} element - * @returns {boolean} - */ -function overlayContainsElement(overlayType, element) { - var overlayElement = document.querySelector('.ht_clone_' + overlayType); - return overlayElement ? overlayElement.contains(element) : null; -} - -var classListSupport = !!document.documentElement.classList; -var _hasClass, _addClass, _removeClass; - -function filterEmptyClassNames(classNames) { - var len = 0, - result = []; - - if (!classNames || !classNames.length) { - return result; - } - while (classNames[len]) { - result.push(classNames[len]); - len++; - } - - return result; -} - -if (classListSupport) { - var isSupportMultipleClassesArg = function () { - var element = document.createElement('div'); - - element.classList.add('test', 'test2'); - - return element.classList.contains('test2'); - }(); - - _hasClass = function _hasClass(element, className) { - if (element.classList === void 0 || className === '') { - return false; - } - - return element.classList.contains(className); - }; - - _addClass = function _addClass(element, className) { - var len = 0; - - if (typeof className === 'string') { - className = className.split(' '); - } - className = filterEmptyClassNames(className); - - if (isSupportMultipleClassesArg) { - element.classList.add.apply(element.classList, className); - } else { - while (className && className[len]) { - element.classList.add(className[len]); - len++; - } - } - }; - - _removeClass = function _removeClass(element, className) { - var len = 0; - - if (typeof className === 'string') { - className = className.split(' '); - } - className = filterEmptyClassNames(className); - - if (isSupportMultipleClassesArg) { - element.classList.remove.apply(element.classList, className); - } else { - while (className && className[len]) { - element.classList.remove(className[len]); - len++; - } - } - }; -} else { - var createClassNameRegExp = function createClassNameRegExp(className) { - return new RegExp('(\\s|^)' + className + '(\\s|$)'); - }; - - _hasClass = function _hasClass(element, className) { - // http://snipplr.com/view/3561/addclass-removeclass-hasclass/ - return element.className !== void 0 && createClassNameRegExp(className).test(element.className); - }; - - _addClass = function _addClass(element, className) { - var len = 0, - _className = element.className; - - if (typeof className === 'string') { - className = className.split(' '); - } - if (_className === '') { - _className = className.join(' '); - } else { - while (className && className[len]) { - if (!createClassNameRegExp(className[len]).test(_className)) { - _className += ' ' + className[len]; - } - len++; - } - } - element.className = _className; - }; - - _removeClass = function _removeClass(element, className) { - var len = 0, - _className = element.className; - - if (typeof className === 'string') { - className = className.split(' '); - } - while (className && className[len]) { - // String.prototype.trim is defined in polyfill.js - _className = _className.replace(createClassNameRegExp(className[len]), ' ').trim(); - len++; - } - if (element.className !== _className) { - element.className = _className; - } - }; -} - -/** - * Checks if element has class name - * - * @param {HTMLElement} element - * @param {String} className Class name to check - * @returns {Boolean} - */ -function hasClass(element, className) { - return _hasClass(element, className); -} - -/** - * Add class name to an element - * - * @param {HTMLElement} element - * @param {String|Array} className Class name as string or array of strings - */ -function addClass(element, className) { - return _addClass(element, className); -} - -/** - * Remove class name from an element - * - * @param {HTMLElement} element - * @param {String|Array} className Class name as string or array of strings - */ -function removeClass(element, className) { - return _removeClass(element, className); -} - -function removeTextNodes(element, parent) { - if (element.nodeType === 3) { - parent.removeChild(element); // bye text nodes! - } else if (['TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TR'].indexOf(element.nodeName) > -1) { - var childs = element.childNodes; - for (var i = childs.length - 1; i >= 0; i--) { - removeTextNodes(childs[i], element); - } - } -} - -/** - * Remove childs function - * WARNING - this doesn't unload events and data attached by jQuery - * http://jsperf.com/jquery-html-vs-empty-vs-innerhtml/9 - * http://jsperf.com/jquery-html-vs-empty-vs-innerhtml/11 - no siginificant improvement with Chrome remove() method - * - * @param element - * @returns {void} - */ -// -function empty(element) { - var child; - /* eslint-disable no-cond-assign */ - while (child = element.lastChild) { - element.removeChild(child); - } -} - -var HTML_CHARACTERS = exports.HTML_CHARACTERS = /(<(.*)>|&(.*);)/; - -/** - * Insert content into element trying avoid innerHTML method. - * @return {void} - */ -function fastInnerHTML(element, content) { - if (HTML_CHARACTERS.test(content)) { - element.innerHTML = content; - } else { - fastInnerText(element, content); - } -} - -/** - * Insert text content into element - * @return {void} - */ - -var textContextSupport = !!document.createTextNode('test').textContent; - -function fastInnerText(element, content) { - var child = element.firstChild; - - if (child && child.nodeType === 3 && child.nextSibling === null) { - // fast lane - replace existing text node - - if (textContextSupport) { - // http://jsperf.com/replace-text-vs-reuse - child.textContent = content; - } else { - // http://jsperf.com/replace-text-vs-reuse - child.data = content; - } - } else { - // slow lane - empty element and insert a text node - empty(element); - element.appendChild(document.createTextNode(content)); - } -} - -/** - * Returns true if element is attached to the DOM and visible, false otherwise - * @param elem - * @returns {boolean} - */ -function isVisible(elem) { - var next = elem; - - while (polymerUnwrap(next) !== document.documentElement) { - // until reached - if (next === null) { - // parent detached from DOM - return false; - } else if (next.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { - if (next.host) { - // this is Web Components Shadow DOM - // see: http://w3c.github.io/webcomponents/spec/shadow/#encapsulation - // according to spec, should be if (next.ownerDocument !== window.document), but that doesn't work yet - if (next.host.impl) { - // Chrome 33.0.1723.0 canary (2013-11-29) Web Platform features disabled - return isVisible(next.host.impl); - } else if (next.host) { - // Chrome 33.0.1723.0 canary (2013-11-29) Web Platform features enabled - return isVisible(next.host); - } - throw new Error('Lost in Web Components world'); - } else { - return false; // this is a node detached from document in IE8 - } - } else if (next.style.display === 'none') { - return false; - } - next = next.parentNode; - } - - return true; -} - -/** - * Returns elements top and left offset relative to the document. Function is not compatible with jQuery offset. - * - * @param {HTMLElement} elem - * @return {Object} Returns object with `top` and `left` props - */ -function offset(elem) { - var offsetLeft, offsetTop, lastElem, docElem, box; - - docElem = document.documentElement; - - if ((0, _feature.hasCaptionProblem)() && elem.firstChild && elem.firstChild.nodeName === 'CAPTION') { - // fixes problem with Firefox ignoring in TABLE offset (see also export outerHeight) - // http://jsperf.com/offset-vs-getboundingclientrect/8 - box = elem.getBoundingClientRect(); - - return { - top: box.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0), - left: box.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0) - }; - } - offsetLeft = elem.offsetLeft; - offsetTop = elem.offsetTop; - lastElem = elem; - - /* eslint-disable no-cond-assign */ - while (elem = elem.offsetParent) { - // from my observation, document.body always has scrollLeft/scrollTop == 0 - if (elem === document.body) { - break; - } - offsetLeft += elem.offsetLeft; - offsetTop += elem.offsetTop; - lastElem = elem; - } - - // slow - http://jsperf.com/offset-vs-getboundingclientrect/6 - if (lastElem && lastElem.style.position === 'fixed') { - // if(lastElem !== document.body) { //faster but does gives false positive in Firefox - offsetLeft += window.pageXOffset || docElem.scrollLeft; - offsetTop += window.pageYOffset || docElem.scrollTop; - } - - return { - left: offsetLeft, - top: offsetTop - }; -} - -/** - * Returns the document's scrollTop property. - * - * @returns {Number} - */ -function getWindowScrollTop() { - var res = window.scrollY; - - if (res === void 0) { - // IE8-11 - res = document.documentElement.scrollTop; - } - - return res; -} - -/** - * Returns the document's scrollLeft property. - * - * @returns {Number} - */ -function getWindowScrollLeft() { - var res = window.scrollX; - - if (res === void 0) { - // IE8-11 - res = document.documentElement.scrollLeft; - } - - return res; -} - -/** - * Returns the provided element's scrollTop property. - * - * @param element - * @returns {Number} - */ -function getScrollTop(element) { - if (element === window) { - return getWindowScrollTop(); - } - return element.scrollTop; -} - -/** - * Returns the provided element's scrollLeft property. - * - * @param element - * @returns {Number} - */ -function getScrollLeft(element) { - if (element === window) { - return getWindowScrollLeft(); - } - return element.scrollLeft; -} - -/** - * Returns a DOM element responsible for scrolling of the provided element. - * - * @param {HTMLElement} element - * @returns {HTMLElement} Element's scrollable parent - */ -function getScrollableElement(element) { - var el = element.parentNode, - props = ['auto', 'scroll'], - overflow, - overflowX, - overflowY, - computedStyle = '', - computedOverflow = '', - computedOverflowY = '', - computedOverflowX = ''; - - while (el && el.style && document.body !== el) { - overflow = el.style.overflow; - overflowX = el.style.overflowX; - overflowY = el.style.overflowY; - - if (overflow == 'scroll' || overflowX == 'scroll' || overflowY == 'scroll') { - return el; - } else if (window.getComputedStyle) { - computedStyle = window.getComputedStyle(el); - computedOverflow = computedStyle.getPropertyValue('overflow'); - computedOverflowY = computedStyle.getPropertyValue('overflow-y'); - computedOverflowX = computedStyle.getPropertyValue('overflow-x'); - - if (computedOverflow === 'scroll' || computedOverflowX === 'scroll' || computedOverflowY === 'scroll') { - return el; - } - } - - // The '+ 1' after the scrollHeight/scrollWidth is to prevent problems with zoomed out Chrome. - if (el.clientHeight <= el.scrollHeight + 1 && (props.indexOf(overflowY) !== -1 || props.indexOf(overflow) !== -1 || props.indexOf(computedOverflow) !== -1 || props.indexOf(computedOverflowY) !== -1)) { - return el; - } - if (el.clientWidth <= el.scrollWidth + 1 && (props.indexOf(overflowX) !== -1 || props.indexOf(overflow) !== -1 || props.indexOf(computedOverflow) !== -1 || props.indexOf(computedOverflowX) !== -1)) { - return el; - } - el = el.parentNode; - } - - return window; -} - -/** - * Returns a DOM element responsible for trimming the provided element. - * - * @param {HTMLElement} base Base element - * @returns {HTMLElement} Base element's trimming parent - */ -function getTrimmingContainer(base) { - var el = base.parentNode; - - while (el && el.style && document.body !== el) { - if (el.style.overflow !== 'visible' && el.style.overflow !== '') { - return el; - } else if (window.getComputedStyle) { - var computedStyle = window.getComputedStyle(el); - - if (computedStyle.getPropertyValue('overflow') !== 'visible' && computedStyle.getPropertyValue('overflow') !== '') { - return el; - } - } - - el = el.parentNode; - } - - return window; -} - -/** - * Returns a style property for the provided element. (Be it an inline or external style). - * - * @param {HTMLElement} element - * @param {String} prop Wanted property - * @returns {String|undefined} Element's style property - */ -function getStyle(element, prop) { - /* eslint-disable */ - if (!element) { - return; - } else if (element === window) { - if (prop === 'width') { - return window.innerWidth + 'px'; - } else if (prop === 'height') { - return window.innerHeight + 'px'; - } - - return; - } - - var styleProp = element.style[prop], - computedStyle; - - if (styleProp !== '' && styleProp !== void 0) { - return styleProp; - } else { - computedStyle = getComputedStyle(element); - - if (computedStyle[prop] !== '' && computedStyle[prop] !== void 0) { - return computedStyle[prop]; - } - } -} - -/** - * Returns a computed style object for the provided element. (Needed if style is declared in external stylesheet). - * - * @param element - * @returns {IEElementStyle|CssStyle} Elements computed style object - */ -function getComputedStyle(element) { - return element.currentStyle || document.defaultView.getComputedStyle(element); -} - -/** - * Returns the element's outer width. - * - * @param element - * @returns {number} Element's outer width - */ -function outerWidth(element) { - return element.offsetWidth; -} - -/** - * Returns the element's outer height - * - * @param elem - * @returns {number} Element's outer height - */ -function outerHeight(elem) { - if ((0, _feature.hasCaptionProblem)() && elem.firstChild && elem.firstChild.nodeName === 'CAPTION') { - // fixes problem with Firefox ignoring in TABLE.offsetHeight - // jQuery (1.10.1) still has this unsolved - // may be better to just switch to getBoundingClientRect - // http://bililite.com/blog/2009/03/27/finding-the-size-of-a-table/ - // http://lists.w3.org/Archives/Public/www-style/2009Oct/0089.html - // http://bugs.jquery.com/ticket/2196 - // http://lists.w3.org/Archives/Public/www-style/2009Oct/0140.html#start140 - return elem.offsetHeight + elem.firstChild.offsetHeight; - } - - return elem.offsetHeight; -} - -/** - * Returns the element's inner height. - * - * @param element - * @returns {number} Element's inner height - */ -function innerHeight(element) { - return element.clientHeight || element.innerHeight; -} - -/** - * Returns the element's inner width. - * - * @param element - * @returns {number} Element's inner width - */ -function innerWidth(element) { - return element.clientWidth || element.innerWidth; -} - -function addEvent(element, event, callback) { - if (window.addEventListener) { - element.addEventListener(event, callback, false); - } else { - element.attachEvent('on' + event, callback); - } -} - -function removeEvent(element, event, callback) { - if (window.removeEventListener) { - element.removeEventListener(event, callback, false); - } else { - element.detachEvent('on' + event, callback); - } -} - -/** - * Returns caret position in text input - * - * @author http://stackoverflow.com/questions/263743/how-to-get-caret-position-in-textarea - * @return {Number} - */ -function getCaretPosition(el) { - if (el.selectionStart) { - return el.selectionStart; - } else if (document.selection) { - // IE8 - el.focus(); - - var r = document.selection.createRange(); - - if (r == null) { - return 0; - } - var re = el.createTextRange(); - var rc = re.duplicate(); - - re.moveToBookmark(r.getBookmark()); - rc.setEndPoint('EndToStart', re); - - return rc.text.length; - } - - return 0; -} - -/** - * Returns end of the selection in text input - * - * @return {Number} - */ -function getSelectionEndPosition(el) { - if (el.selectionEnd) { - return el.selectionEnd; - } else if (document.selection) { - // IE8 - var r = document.selection.createRange(); - - if (r == null) { - return 0; - } - var re = el.createTextRange(); - - return re.text.indexOf(r.text) + r.text.length; - } - - return 0; -} - -/** - * Returns text under selection. - * - * @returns {String} - */ -function getSelectionText() { - var text = ''; - - if (window.getSelection) { - text = window.getSelection().toString(); - } else if (document.selection && document.selection.type !== 'Control') { - text = document.selection.createRange().text; - } - - return text; -} - -/** - * Sets caret position in text input. - * - * @author http://blog.vishalon.net/index.php/javascript-getting-and-setting-caret-position-in-textarea/ - * @param {Element} element - * @param {Number} pos - * @param {Number} endPos - */ -function setCaretPosition(element, pos, endPos) { - if (endPos === void 0) { - endPos = pos; - } - if (element.setSelectionRange) { - element.focus(); - - try { - element.setSelectionRange(pos, endPos); - } catch (err) { - var elementParent = element.parentNode; - var parentDisplayValue = elementParent.style.display; - elementParent.style.display = 'block'; - element.setSelectionRange(pos, endPos); - elementParent.style.display = parentDisplayValue; - } - } else if (element.createTextRange) { - // IE8 - var range = element.createTextRange(); - range.collapse(true); - range.moveEnd('character', endPos); - range.moveStart('character', pos); - range.select(); - } -} - -var cachedScrollbarWidth; - -// http://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes -function walkontableCalculateScrollbarWidth() { - var inner = document.createElement('div'); - inner.style.height = '200px'; - inner.style.width = '100%'; - - var outer = document.createElement('div'); - outer.style.boxSizing = 'content-box'; - outer.style.height = '150px'; - outer.style.left = '0px'; - outer.style.overflow = 'hidden'; - outer.style.position = 'absolute'; - outer.style.top = '0px'; - outer.style.width = '200px'; - outer.style.visibility = 'hidden'; - outer.appendChild(inner); - - (document.body || document.documentElement).appendChild(outer); - var w1 = inner.offsetWidth; - outer.style.overflow = 'scroll'; - var w2 = inner.offsetWidth; - if (w1 == w2) { - w2 = outer.clientWidth; - } - - (document.body || document.documentElement).removeChild(outer); - - return w1 - w2; -} - -/** - * Returns the computed width of the native browser scroll bar. - * - * @return {Number} width - */ -function getScrollbarWidth() { - if (cachedScrollbarWidth === void 0) { - cachedScrollbarWidth = walkontableCalculateScrollbarWidth(); - } - - return cachedScrollbarWidth; -} - -/** - * Checks if the provided element has a vertical scrollbar. - * - * @param {HTMLElement} element - * @returns {Boolean} - */ -function hasVerticalScrollbar(element) { - return element.offsetWidth !== element.clientWidth; -} - -/** - * Checks if the provided element has a vertical scrollbar. - * - * @param {HTMLElement} element - * @returns {Boolean} - */ -function hasHorizontalScrollbar(element) { - return element.offsetHeight !== element.clientHeight; -} - -/** - * Sets overlay position depending on it's type and used browser - */ -function setOverlayPosition(overlayElem, left, top) { - if ((0, _browser.isIE8)() || (0, _browser.isIE9)()) { - overlayElem.style.top = top; - overlayElem.style.left = left; - } else if ((0, _browser.isSafari)()) { - overlayElem.style['-webkit-transform'] = 'translate3d(' + left + ',' + top + ',0)'; - } else { - overlayElem.style.transform = 'translate3d(' + left + ',' + top + ',0)'; - } -} - -function getCssTransform(element) { - var transform; - - if (element.style.transform && (transform = element.style.transform) !== '') { - return ['transform', transform]; - } else if (element.style['-webkit-transform'] && (transform = element.style['-webkit-transform']) !== '') { - - return ['-webkit-transform', transform]; - } - - return -1; -} - -function resetCssTransform(element) { - if (element.style.transform && element.style.transform !== '') { - element.style.transform = ''; - } else if (element.style['-webkit-transform'] && element.style['-webkit-transform'] !== '') { - element.style['-webkit-transform'] = ''; - } -} - -/** - * Determines if the given DOM element is an input field. - * Notice: By 'input' we mean input, textarea and select nodes - * - * @param {HTMLElement} element - DOM element - * @returns {Boolean} - */ -function isInput(element) { - var inputs = ['INPUT', 'SELECT', 'TEXTAREA']; - - return element && (inputs.indexOf(element.nodeName) > -1 || element.contentEditable === 'true'); -} - -/** - * Determines if the given DOM element is an input field placed OUTSIDE of HOT. - * Notice: By 'input' we mean input, textarea and select nodes - * - * @param {HTMLElement} element - DOM element - * @returns {Boolean} - */ -function isOutsideInput(element) { - return isInput(element) && element.className.indexOf('handsontableInput') == -1 && element.className.indexOf('copyPaste') == -1; -} - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.duckSchema = duckSchema; -exports.inherit = inherit; -exports.extend = extend; -exports.deepExtend = deepExtend; -exports.deepClone = deepClone; -exports.clone = clone; -exports.mixin = mixin; -exports.isObjectEquals = isObjectEquals; -exports.isObject = isObject; -exports.defineGetter = defineGetter; -exports.objectEach = objectEach; -exports.getProperty = getProperty; -exports.deepObjectSize = deepObjectSize; -exports.createObjectPropListener = createObjectPropListener; -exports.hasOwnProperty = hasOwnProperty; - -var _array = __webpack_require__(2); - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * Generate schema for passed object. - * - * @param {Array|Object} object - * @returns {Array|Object} - */ -function duckSchema(object) { - var schema; - - if (Array.isArray(object)) { - schema = []; - } else { - schema = {}; - - objectEach(object, function (value, key) { - if (key === '__children') { - return; - } - - if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !Array.isArray(value)) { - schema[key] = duckSchema(value); - } else if (Array.isArray(value)) { - if (value.length && _typeof(value[0]) === 'object' && !Array.isArray(value[0])) { - schema[key] = [duckSchema(value[0])]; - } else { - schema[key] = []; - } - } else { - schema[key] = null; - } - }); - } - - return schema; -} - -/** - * Inherit without without calling parent constructor, and setting `Child.prototype.constructor` to `Child` instead of `Parent`. - * Creates temporary dummy function to call it as constructor. - * Described in ticket: https://github.com/handsontable/handsontable/pull/516 - * - * @param {Object} Child child class - * @param {Object} Parent parent class - * @return {Object} extended Child - */ -function inherit(Child, Parent) { - Parent.prototype.constructor = Parent; - Child.prototype = new Parent(); - Child.prototype.constructor = Child; - - return Child; -} - -/** - * Perform shallow extend of a target object with extension's own properties. - * - * @param {Object} target An object that will receive the new properties. - * @param {Object} extension An object containing additional properties to merge into the target. - */ -function extend(target, extension) { - objectEach(extension, function (value, key) { - target[key] = value; - }); - - return target; -} - -/** - * Perform deep extend of a target object with extension's own properties. - * - * @param {Object} target An object that will receive the new properties. - * @param {Object} extension An object containing additional properties to merge into the target. - */ -function deepExtend(target, extension) { - objectEach(extension, function (value, key) { - if (extension[key] && _typeof(extension[key]) === 'object') { - if (!target[key]) { - if (Array.isArray(extension[key])) { - target[key] = []; - } else if (Object.prototype.toString.call(extension[key]) === '[object Date]') { - target[key] = extension[key]; - } else { - target[key] = {}; - } - } - deepExtend(target[key], extension[key]); - } else { - target[key] = extension[key]; - } - }); -} - -/** - * Perform deep clone of an object. - * WARNING! Only clones JSON properties. Will cause error when `obj` contains a function, Date, etc. - * - * @param {Object} obj An object that will be cloned - * @return {Object} - */ -function deepClone(obj) { - if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object') { - return JSON.parse(JSON.stringify(obj)); - } - - return obj; -} - -/** - * Shallow clone object. - * - * @param {Object} object - * @returns {Object} - */ -function clone(object) { - var result = {}; - - objectEach(object, function (value, key) { - result[key] = value; - }); - - return result; -} - -/** - * Extend the Base object (usually prototype) of the functionality the `mixins` objects. - * - * @param {Object} Base Base object which will be extended. - * @param {Object} mixins The object of the functionality will be "copied". - * @returns {Object} - */ -function mixin(Base) { - if (!Base.MIXINS) { - Base.MIXINS = []; - } - - for (var _len = arguments.length, mixins = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - mixins[_key - 1] = arguments[_key]; - } - - (0, _array.arrayEach)(mixins, function (mixin) { - Base.MIXINS.push(mixin.MIXIN_NAME); - - objectEach(mixin, function (value, key) { - if (Base.prototype[key] !== void 0) { - throw new Error('Mixin conflict. Property \'' + key + '\' already exist and cannot be overwritten.'); - } - if (typeof value === 'function') { - Base.prototype[key] = value; - } else { - var getter = function _getter(propertyName, initialValue) { - propertyName = '_' + propertyName; - - var initValue = function initValue(value) { - if (Array.isArray(value) || isObject(value)) { - value = deepClone(value); - } - - return value; - }; - - return function () { - if (this[propertyName] === void 0) { - this[propertyName] = initValue(initialValue); - } - - return this[propertyName]; - }; - }; - var setter = function _setter(propertyName) { - propertyName = '_' + propertyName; - - return function (value) { - this[propertyName] = value; - }; - }; - Object.defineProperty(Base.prototype, key, { - get: getter(key, value), - set: setter(key), - configurable: true - }); - } - }); - }); - - return Base; -} - -/** - * Checks if two objects or arrays are (deep) equal - * - * @param {Object|Array} object1 - * @param {Object|Array} object2 - * @returns {Boolean} - */ -function isObjectEquals(object1, object2) { - return JSON.stringify(object1) === JSON.stringify(object2); -} - -/** - * Determines whether given object is a plain Object. - * Note: String and Array are not plain Objects - * @param {*} obj - * @returns {boolean} - */ -function isObject(obj) { - return Object.prototype.toString.call(obj) == '[object Object]'; -} - -function defineGetter(object, property, value, options) { - options.value = value; - options.writable = options.writable !== false; - options.enumerable = options.enumerable !== false; - options.configurable = options.configurable !== false; - - Object.defineProperty(object, property, options); -} - -/** - * A specialized version of `.forEach` for objects. - * - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ -function objectEach(object, iteratee) { - for (var key in object) { - if (!object.hasOwnProperty || object.hasOwnProperty && Object.prototype.hasOwnProperty.call(object, key)) { - if (iteratee(object[key], key, object) === false) { - break; - } - } - } - - return object; -} - -/** - * Get object property by its name. Access to sub properties can be achieved by dot notation (e.q. `'foo.bar.baz'`). - * - * @param {Object} object Object which value will be exported. - * @param {String} name Object property name. - * @returns {*} - */ -function getProperty(object, name) { - var names = name.split('.'); - var result = object; - - objectEach(names, function (name) { - result = result[name]; - - if (result === void 0) { - result = void 0; - - return false; - } - }); - - return result; -} - -/** - * Return object length (recursively). - * - * @param {*} object Object for which we want get length. - * @returns {Number} - */ -function deepObjectSize(object) { - if (!isObject(object)) { - return 0; - } - var recursObjLen = function recursObjLen(obj) { - var result = 0; - - if (isObject(obj)) { - objectEach(obj, function (key) { - result += recursObjLen(key); - }); - } else { - result++; - } - - return result; - }; - - return recursObjLen(object); -} - -/** - * Create object with property where its value change will be observed. - * - * @param {*} [defaultValue=undefined] Default value. - * @param {String} [propertyToListen='value'] Property to listen. - * @returns {Object} - */ -function createObjectPropListener(defaultValue) { - var _holder; - - var propertyToListen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'value'; - - var privateProperty = '_' + propertyToListen; - var holder = (_holder = { - _touched: false - }, _defineProperty(_holder, privateProperty, defaultValue), _defineProperty(_holder, 'isTouched', function isTouched() { - return this._touched; - }), _holder); - - Object.defineProperty(holder, propertyToListen, { - get: function get() { - return this[privateProperty]; - }, - set: function set(value) { - this._touched = true; - this[privateProperty] = value; - }, - - enumerable: true, - configurable: true - }); - - return holder; -} - -/** - * Check if at specified `key` there is any value for `object`. - * - * @param {Object} object Object to search value at specyfic key. - * @param {String} key String key to check. - */ -function hasOwnProperty(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); -} - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.to2dArray = to2dArray; -exports.extendArray = extendArray; -exports.pivot = pivot; -exports.arrayReduce = arrayReduce; -exports.arrayFilter = arrayFilter; -exports.arrayMap = arrayMap; -exports.arrayEach = arrayEach; -exports.arraySum = arraySum; -exports.arrayMax = arrayMax; -exports.arrayMin = arrayMin; -exports.arrayAvg = arrayAvg; -exports.arrayFlatten = arrayFlatten; -exports.arrayUnique = arrayUnique; -function to2dArray(arr) { - var i = 0, - ilen = arr.length; - - while (i < ilen) { - arr[i] = [arr[i]]; - i++; - } -} - -function extendArray(arr, extension) { - var i = 0, - ilen = extension.length; - - while (i < ilen) { - arr.push(extension[i]); - i++; - } -} - -function pivot(arr) { - var pivotedArr = []; - - if (!arr || arr.length === 0 || !arr[0] || arr[0].length === 0) { - return pivotedArr; - } - - var rowCount = arr.length; - var colCount = arr[0].length; - - for (var i = 0; i < rowCount; i++) { - for (var j = 0; j < colCount; j++) { - if (!pivotedArr[j]) { - pivotedArr[j] = []; - } - - pivotedArr[j][i] = arr[i][j]; - } - } - - return pivotedArr; -} - -/** - * A specialized version of `.reduce` for arrays without support for callback - * shorthands and `this` binding. - * - * {@link https://github.com/lodash/lodash/blob/master/lodash.js} - * - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {Boolean} [initFromArray] Specify using the first element of `array` as the initial value. - * @returns {*} Returns the accumulated value. - */ -function arrayReduce(array, iteratee, accumulator, initFromArray) { - var index = -1, - length = array.length; - - if (initFromArray && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - - return accumulator; -} - -/** - * A specialized version of `.filter` for arrays without support for callback - * shorthands and `this` binding. - * - * {@link https://github.com/lodash/lodash/blob/master/lodash.js} - * - * @param {Array} array The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ -function arrayFilter(array, predicate) { - var index = -1, - length = array.length, - resIndex = -1, - result = []; - - while (++index < length) { - var value = array[index]; - - if (predicate(value, index, array)) { - result[++resIndex] = value; - } - } - - return result; -} - -/** - * A specialized version of `.map` for arrays without support for callback - * shorthands and `this` binding. - * - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ -function arrayMap(array, iteratee) { - var index = -1, - length = array.length, - resIndex = -1, - result = []; - - while (++index < length) { - var value = array[index]; - - result[++resIndex] = iteratee(value, index, array); - } - - return result; -} - -/** - * A specialized version of `.forEach` for arrays without support for callback - * shorthands and `this` binding. - * - * {@link https://github.com/lodash/lodash/blob/master/lodash.js} - * - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ -function arrayEach(array, iteratee) { - var index = -1, - length = array.length; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - - return array; -} - -/** - * Calculate sum value for each item of the array. - * - * @param {Array} array The array to process. - * @returns {Number} Returns calculated sum value. - */ -function arraySum(array) { - return arrayReduce(array, function (a, b) { - return a + b; - }, 0); -} - -/** - * Returns the highest value from an array. Can be array of numbers or array of strings. - * NOTICE: Mixed values is not supported. - * - * @param {Array} array The array to process. - * @returns {Number} Returns the highest value from an array. - */ -function arrayMax(array) { - return arrayReduce(array, function (a, b) { - return a > b ? a : b; - }, Array.isArray(array) ? array[0] : void 0); -} - -/** - * Returns the lowest value from an array. Can be array of numbers or array of strings. - * NOTICE: Mixed values is not supported. - * - * @param {Array} array The array to process. - * @returns {Number} Returns the lowest value from an array. - */ -function arrayMin(array) { - return arrayReduce(array, function (a, b) { - return a < b ? a : b; - }, Array.isArray(array) ? array[0] : void 0); -} - -/** - * Calculate average value for each item of the array. - * - * @param {Array} array The array to process. - * @returns {Number} Returns calculated average value. - */ -function arrayAvg(array) { - if (!array.length) { - return 0; - } - - return arraySum(array) / array.length; -} - -/** - * Flatten multidimensional array. - * - * @param {Array} array Array of Arrays - * @returns {Array} - */ -function arrayFlatten(array) { - return arrayReduce(array, function (initial, value) { - return initial.concat(Array.isArray(value) ? arrayFlatten(value) : value); - }, []); -} - -/** - * Unique values in the array. - * - * @param {Array} array The array to process. - * @returns {Array} - */ -function arrayUnique(array) { - var unique = []; - - arrayEach(array, function (value) { - if (unique.indexOf(value) === -1) { - unique.push(value); - } - }); - - return unique; -} - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(11); -var core = __webpack_require__(44); -var hide = __webpack_require__(29); -var redefine = __webpack_require__(28); -var ctx = __webpack_require__(30); -var PROTOTYPE = 'prototype'; - -var $export = function (type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); - var key, own, out, exp; - if (IS_GLOBAL) source = name; - for (key in source) { - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - // export native or passed - out = (own ? target : source)[key]; - // bind timers to global for call from export context - exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // extend global - if (target) redefine(target, key, out, type & $export.U); - // export - if (exports[key] != out) hide(exports, key, exp); - if (IS_PROTO && expProto[key] != out) expProto[key] = out; - } -}; -global.core = core; -// type bitmap -$export.F = 1; // forced -$export.G = 2; // global -$export.S = 4; // static -$export.P = 8; // proto -$export.B = 16; // bind -$export.W = 32; // wrap -$export.U = 64; // safe -$export.R = 128; // real proto method for `library` -module.exports = $export; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -exports.getListenersCounter = getListenersCounter; - -var _element = __webpack_require__(0); - -var _object = __webpack_require__(1); - -var _feature = __webpack_require__(34); - -var _event = __webpack_require__(8); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * Counter which tracks unregistered listeners (useful for detecting memory leaks). - * - * @type {Number} - */ -var listenersCounter = 0; - -/** - * Event DOM manager for internal use in Handsontable. - * - * @class EventManager - * @util - */ - -var EventManager = function () { - /** - * @param {Object} [context=null] - * @private - */ - function EventManager() { - var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - _classCallCheck(this, EventManager); - - this.context = context || this; - - if (!this.context.eventListeners) { - this.context.eventListeners = []; - } - } - - /** - * Register specified listener (`eventName`) to the element. - * - * @param {Element} element Target element. - * @param {String} eventName Event name. - * @param {Function} callback Function which will be called after event occur. - * @returns {Function} Returns function which you can easily call to remove that event - */ - - - _createClass(EventManager, [{ - key: 'addEventListener', - value: function addEventListener(element, eventName, callback) { - var _this = this; - - var context = this.context; - - function callbackProxy(event) { - event = extendEvent(context, event); - - callback.call(this, event); - } - this.context.eventListeners.push({ - element: element, - event: eventName, - callback: callback, - callbackProxy: callbackProxy - }); - - if (window.addEventListener) { - element.addEventListener(eventName, callbackProxy, false); - } else { - element.attachEvent('on' + eventName, callbackProxy); - } - listenersCounter++; - - return function () { - _this.removeEventListener(element, eventName, callback); - }; - } - - /** - * Remove the event listener previously registered. - * - * @param {Element} element Target element. - * @param {String} eventName Event name. - * @param {Function} callback Function to remove from the event target. It must be the same as during registration listener. - */ - - }, { - key: 'removeEventListener', - value: function removeEventListener(element, eventName, callback) { - var len = this.context.eventListeners.length; - var tmpEvent = void 0; - - while (len--) { - tmpEvent = this.context.eventListeners[len]; - - if (tmpEvent.event == eventName && tmpEvent.element == element) { - if (callback && callback != tmpEvent.callback) { - /* eslint-disable no-continue */ - continue; - } - this.context.eventListeners.splice(len, 1); - - if (tmpEvent.element.removeEventListener) { - tmpEvent.element.removeEventListener(tmpEvent.event, tmpEvent.callbackProxy, false); - } else { - tmpEvent.element.detachEvent('on' + tmpEvent.event, tmpEvent.callbackProxy); - } - listenersCounter--; - } - } - } - - /** - * Clear all previously registered events. - * - * @private - * @since 0.15.0-beta3 - */ - - }, { - key: 'clearEvents', - value: function clearEvents() { - if (!this.context) { - return; - } - var len = this.context.eventListeners.length; - - while (len--) { - var event = this.context.eventListeners[len]; - - if (event) { - this.removeEventListener(event.element, event.event, event.callback); - } - } - } - - /** - * Clear all previously registered events. - */ - - }, { - key: 'clear', - value: function clear() { - this.clearEvents(); - } - - /** - * Destroy instance of EventManager. - */ - - }, { - key: 'destroy', - value: function destroy() { - this.clearEvents(); - this.context = null; - } - - /** - * Trigger event at the specified target element. - * - * @param {Element} element Target element. - * @param {String} eventName Event name. - */ - - }, { - key: 'fireEvent', - value: function fireEvent(element, eventName) { - var options = { - bubbles: true, - cancelable: eventName !== 'mousemove', - view: window, - detail: 0, - screenX: 0, - screenY: 0, - clientX: 1, - clientY: 1, - ctrlKey: false, - altKey: false, - shiftKey: false, - metaKey: false, - button: 0, - relatedTarget: undefined - }; - var event; - - if (document.createEvent) { - event = document.createEvent('MouseEvents'); - event.initMouseEvent(eventName, options.bubbles, options.cancelable, options.view, options.detail, options.screenX, options.screenY, options.clientX, options.clientY, options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.button, options.relatedTarget || document.body.parentNode); - } else { - event = document.createEventObject(); - } - - if (element.dispatchEvent) { - element.dispatchEvent(event); - } else { - element.fireEvent('on' + eventName, event); - } - } - }]); - - return EventManager; -}(); - -/** - * @param {Object} context - * @param {Event} event - * @private - * @returns {*} - */ - - -function extendEvent(context, event) { - var componentName = 'HOT-TABLE'; - var isHotTableSpotted = void 0; - var fromElement = void 0; - var realTarget = void 0; - var target = void 0; - var len = void 0; - var nativeStopImmediatePropagation = void 0; - - event.isTargetWebComponent = false; - event.realTarget = event.target; - - nativeStopImmediatePropagation = event.stopImmediatePropagation; - event.stopImmediatePropagation = function () { - nativeStopImmediatePropagation.apply(this); - (0, _event.stopImmediatePropagation)(this); - }; - - if (!EventManager.isHotTableEnv) { - return event; - } - event = (0, _element.polymerWrap)(event); - len = event.path ? event.path.length : 0; - - while (len--) { - if (event.path[len].nodeName === componentName) { - isHotTableSpotted = true; - } else if (isHotTableSpotted && event.path[len].shadowRoot) { - target = event.path[len]; - - break; - } - if (len === 0 && !target) { - target = event.path[len]; - } - } - if (!target) { - target = event.target; - } - event.isTargetWebComponent = true; - - if ((0, _feature.isWebComponentSupportedNatively)()) { - event.realTarget = event.srcElement || event.toElement; - } else if ((0, _object.hasOwnProperty)(context, 'hot') || context.isHotTableEnv || context.wtTable) { - // Polymer doesn't support `event.target` property properly we must emulate it ourselves - if ((0, _object.hasOwnProperty)(context, 'hot')) { - // Custom element - fromElement = context.hot ? context.hot.view.wt.wtTable.TABLE : null; - } else if (context.isHotTableEnv) { - // Handsontable.Core - fromElement = context.view.activeWt.wtTable.TABLE.parentNode.parentNode; - } else if (context.wtTable) { - // Walkontable - fromElement = context.wtTable.TABLE.parentNode.parentNode; - } - realTarget = (0, _element.closest)(event.target, [componentName], fromElement); - - if (realTarget) { - event.realTarget = fromElement.querySelector(componentName) || event.target; - } else { - event.realTarget = event.target; - } - } - - Object.defineProperty(event, 'target', { - get: function get() { - return (0, _element.polymerWrap)(target); - }, - - enumerable: true, - configurable: true - }); - - return event; -} - -exports.default = EventManager; -function getListenersCounter() { - return listenersCounter; -}; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.getPluginName = exports.getRegistredPluginNames = exports.getPlugin = exports.registerPlugin = undefined; - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _object = __webpack_require__(1); - -var _string = __webpack_require__(32); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var registeredPlugins = new WeakMap(); - -/** - * Registers plugin under given name - * - * @param {String} pluginName - * @param {Function} PluginClass - */ -/** - * Utility to register plugins and common namespace for keeping reference to all plugins classes - */ -function registerPlugin(pluginName, PluginClass) { - pluginName = (0, _string.toUpperCaseFirst)(pluginName); - - _pluginHooks2.default.getSingleton().add('construct', function () { - var holder = void 0; - - if (!registeredPlugins.has(this)) { - registeredPlugins.set(this, {}); - } - holder = registeredPlugins.get(this); - - if (!holder[pluginName]) { - holder[pluginName] = new PluginClass(this); - } - }); - _pluginHooks2.default.getSingleton().add('afterDestroy', function () { - if (registeredPlugins.has(this)) { - var pluginsHolder = registeredPlugins.get(this); - - (0, _object.objectEach)(pluginsHolder, function (plugin) { - return plugin.destroy(); - }); - registeredPlugins.delete(this); - } - }); -} - -/** - * @param {Object} instance - * @param {String|Function} pluginName - * @returns {Function} pluginClass Returns plugin instance if exists or `undefined` if not exists. - */ -function getPlugin(instance, pluginName) { - if (typeof pluginName != 'string') { - throw Error('Only strings can be passed as "plugin" parameter'); - } - var _pluginName = (0, _string.toUpperCaseFirst)(pluginName); - - if (!registeredPlugins.has(instance) || !registeredPlugins.get(instance)[_pluginName]) { - return void 0; - } - - return registeredPlugins.get(instance)[_pluginName]; -} - -/** - * Get all registred plugins names for concrete Handsontable instance. - * - * @param {Object} hotInstance - * @returns {Array} - */ -function getRegistredPluginNames(hotInstance) { - return registeredPlugins.has(hotInstance) ? Object.keys(registeredPlugins.get(hotInstance)) : []; -} - -/** - * Get plugin name. - * - * @param {Object} hotInstance - * @param {Object} plugin - * @returns {String|null} - */ -function getPluginName(hotInstance, plugin) { - var pluginName = null; - - if (registeredPlugins.has(hotInstance)) { - (0, _object.objectEach)(registeredPlugins.get(hotInstance), function (pluginInstance, name) { - if (pluginInstance === plugin) { - pluginName = name; - } - }); - } - - return pluginName; -} - -exports.registerPlugin = registerPlugin; -exports.getPlugin = getPlugin; -exports.getRegistredPluginNames = getRegistredPluginNames; -exports.getPluginName = getPluginName; - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.isNumeric = isNumeric; -exports.rangeEach = rangeEach; -exports.rangeEachReverse = rangeEachReverse; -exports.valueAccordingPercent = valueAccordingPercent; -/** - * Checks if value of n is a numeric one - * http://jsperf.com/isnan-vs-isnumeric/4 - * @param n - * @returns {boolean} - */ -function isNumeric(n) { - /* eslint-disable */ - var t = typeof n === 'undefined' ? 'undefined' : _typeof(n); - - return t == 'number' ? !isNaN(n) && isFinite(n) : t == 'string' ? !n.length ? false : n.length == 1 ? /\d/.test(n) : /^\s*[+-]?\s*(?:(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?)|(?:0x[a-f\d]+))\s*$/i.test(n) : t == 'object' ? !!n && typeof n.valueOf() == 'number' && !(n instanceof Date) : false; -} - -/** - * A specialized version of `.forEach` defined by ranges. - * - * @param {Number} rangeFrom The number from start iterate. - * @param {Number|Function} rangeTo The number where finish iterate or function as a iteratee. - * @param {Function} [iteratee] The function invoked per iteration. - */ -function rangeEach(rangeFrom, rangeTo, iteratee) { - var index = -1; - - if (typeof rangeTo === 'function') { - iteratee = rangeTo; - rangeTo = rangeFrom; - } else { - index = rangeFrom - 1; - } - while (++index <= rangeTo) { - if (iteratee(index) === false) { - break; - } - } -} - -/** - * A specialized version of `.forEach` defined by ranges iterable in reverse order. - * - * @param {Number} rangeFrom The number from start iterate. - * @param {Number} rangeTo The number where finish iterate. - * @param {Function} iteratee The function invoked per iteration. - */ -function rangeEachReverse(rangeFrom, rangeTo, iteratee) { - var index = rangeFrom + 1; - - if (typeof rangeTo === 'function') { - iteratee = rangeTo; - rangeTo = 0; - } - while (--index >= rangeTo) { - if (iteratee(index) === false) { - break; - } - } -} - -/** - * Calculate value from percent. - * - * @param {Number} value Base value from percent will be calculated. - * @param {String|Number} percent Can be Number or String (eq. `'33%'`). - * @returns {Number} - */ -function valueAccordingPercent(value, percent) { - percent = parseInt(percent.toString().replace('%', ''), 10); - percent = parseInt(value * percent / 100, 10); - - return percent; -} - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _array = __webpack_require__(2); - -var _object = __webpack_require__(1); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @description - * Handsontable events are the common interface that function in 2 ways: as __callbacks__ and as __hooks__. - * - * @example - * - * ```js - * // Using events as callbacks: - * ... - * var hot1 = new Handsontable(document.getElementById('example1'), { - * afterChange: function(changes, source) { - * $.ajax({ - * url: "save.php', - * data: change - * }); - * } - * }); - * ... - * ``` - * - * ```js - * // Using events as plugin hooks: - * ... - * var hot1 = new Handsontable(document.getElementById('example1'), { - * myPlugin: true - * }); - * - * var hot2 = new Handsontable(document.getElementById('example2'), { - * myPlugin: false - * }); - * - * // global hook - * Handsontable.hooks.add('afterChange', function() { - * // Fired twice - for hot1 and hot2 - * if (this.getSettings().myPlugin) { - * // function body - will only run for hot1 - * } - * }); - * - * // local hook (has same effect as a callback) - * hot2.addHook('afterChange', function() { - * // function body - will only run in #example2 - * }); - * ``` - * ... - */ - -// @TODO: Move plugin description hooks to plugin? -var REGISTERED_HOOKS = [ -/** - * Callback fired after resetting a cell's meta. - * - * @event Hooks#afterCellMetaReset - * @since 0.11 - */ -'afterCellMetaReset', - -/** - * @description - * Callback fired after one or more cells has been changed. Its main use case is to save the input. - * - * __Note:__ For performance reasons, the `changes` array is null for `"loadData"` source. - * - * @event Hooks#afterChange - * @param {Array} changes 2D array containing information about each of the edited cells `[[row, prop, oldVal, newVal], ...]`. - * @param {String} [source] String that identifies source of hook call - * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}). - */ -'afterChange', - -/** - * @description - * Fired after observing changes. - * - * @event Hooks#afterChangesObserved - */ -'afterChangesObserved', - -/** - * @description - * Fired after setting up the Context Menu's default options. These options are a collection which user can select by setting - * an array of keys or an array of objects in `contextMenu` option. - * - * @event Hooks#afterContextMenuDefaultOptions - * @param {Array} predefinedItems Array of objects containing information about the pre-defined Context Menu items. - */ -'afterContextMenuDefaultOptions', - -/** - * @description - * Fired before setting up the Context Menu's items but after filtering these options by user (`contextMenu` option). This hook - * can by helpful to determine if user use specified menu item or to set up one of the menu item to by always visible. - * - * @event Hooks#beforeContextMenuSetItems - * @param {Array} menuItems Array of objects containing information about to generated Context Menu items. - */ -'beforeContextMenuSetItems', - -/** - * @description - * Fired after setting up the Context Menu's default options. These options are a collection which user can select by setting - * an array of keys or an array of objects in `contextMenu` option. - * - * @pro - * @event Hooks#afterDropdownMenuDefaultOptions - * @param {Array} predefinedItems Array of objects containing information about the pre-defined Context Menu items. - */ -'afterDropdownMenuDefaultOptions', - -/** - * @description - * Fired before setting up the Dropdown Menu's items but after filtering these options by user (`dropdownMenu` option). This hook - * can by helpful to determine if user use specified menu item or to set up one of the menu item to by always visible. - * - * @pro - * @event Hooks#beforeDropdownMenuSetItems - * @param {Array} menuItems Array of objects containing information about to generated Dropdown Menu items. - */ -'beforeDropdownMenuSetItems', - -/** - * @description - * Fired after hiding the Context Menu. - * - * @event Hooks#afterContextMenuHide - * @param {Object} context The Context menu instance. - */ -'afterContextMenuHide', - -/** - * @description - * Fired after opening the Context Menu. - * - * @event Hooks#afterContextMenuShow - * @param {Object} context The Context Menu instance. - */ -'afterContextMenuShow', - -/** - * @description - * Fired after reaching the copy limit while copying data. - * - * @event Hooks#afterCopyLimit - * @param {Number} selectedRows Count of selected copyable rows. - * @param {Number} selectedColumns Count of selected copyable columns. - * @param {Number} copyRowsLimit Current copy rows limit. - * @param {Number} copyColumnsLimit Current copy columns limit. - */ -'afterCopyLimit', - -/** - * Callback is fired before a new column was created. - * - * @since 0.28.0 - * @event Hooks#beforeCreateCol - * @param {Number} index Represents the visual index of first newly created column in the data source array. - * @param {Number} amount Number of newly created columns in the data source array. - * @param {String} [source] String that identifies source of hook call - * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}). - */ -'beforeCreateCol', - -/** - * Callback is fired after a new column was created. - * - * @event Hooks#afterCreateCol - * @param {Number} index Represents the visual index of first newly created column in the data source array. - * @param {Number} amount Number of newly created columns in the data source array. - * @param {String} [source] String that identifies source of hook call - * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}). - */ -'afterCreateCol', - -/** - * Callback is fired before a new row was created. - * - * @since 0.28.0 - * @event Hooks#beforeCreateRow - * @param {Number} index Represents the visual index of first newly created row in the data source array. - * @param {Number} amount Number of newly created rows in the data source array. - * @param {String} [source] String that identifies source of hook call - * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}). - */ -'beforeCreateRow', - -/** - * Callback is fired after a new row was created. - * - * @event Hooks#afterCreateRow - * @param {Number} index Represents the visual index of first newly created row in the data source array. - * @param {Number} amount Number of newly created rows in the data source array. - * @param {String} [source] String that identifies source of hook call - * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}). - */ -'afterCreateRow', - -/** - * Fired after the current cell is deselected. - * - * @event Hooks#afterDeselect - */ -'afterDeselect', - -/** - * Fired after destroying the Handsontable instance. - * - * @event Hooks#afterDestroy - */ -'afterDestroy', - -/** - * Fired on a `keydown` event on the document body. - * - * @event Hooks#afterDocumentKeyDown - * @param {Event} event A `keydown` event. - */ -'afterDocumentKeyDown', - -/** - * Callback fired after getting the cell settings. - * - * @event Hooks#afterGetCellMeta - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {Object} cellProperties Object containing the cell properties. - */ -'afterGetCellMeta', - -/** - * Callback fired after retrieving information about a column header and appending it to the table header. - * - * @event Hooks#afterGetColHeader - * @param {Number} col Visual column index. - * @param {Element} TH Header's TH element. - */ -'afterGetColHeader', - -/** - * Callback fired after retrieving information about a column header and appending it to the table header. - * - * @event Hooks#afterGetRowHeader - * @param {Number} row Visual row index. - * @param {Element} TH Header's TH element. - */ -'afterGetRowHeader', - -/** - * Callback fired after Handsontable instance is initiated. - * - * @event Hooks#afterInit - */ -'afterInit', - -/** - * Callback fired after new data is loaded (by `loadData` method) into the data source array. - * - * @event Hooks#afterLoadData - * @param {Boolean} firstTime flag that determines whether the data has been loaded during the initialization. - */ -'afterLoadData', - -/** - * Fired after a scroll event, which is identified as a momentum scroll (e.g. on an iPad). - * - * @event Hooks#afterMomentumScroll - */ -'afterMomentumScroll', - -/** - * Fired after a `mousedown` event is triggered on the cell corner (the drag handle). - * - * @event Hooks#afterOnCellCornerMouseDown - * @since 0.11 - * @param {Object} event `mousedown` event object. - */ -'afterOnCellCornerMouseDown', - -/** - * Fired after a `dblclick` event is triggered on the cell corner (the drag handle). - * - * @event Hooks#afterOnCellCornerDblClick - * @since 0.30.0 - * @param {Object} event `dblclick` event object. - */ -'afterOnCellCornerDblClick', - -/** - * Callback fired after clicking on a cell or row/column header. - * In case the row/column header was clicked, the index is negative. - * For example clicking on the row header of cell (0, 0) results with `afterOnCellMouseDown` called - * with coords `{row: 0, col: -1}`. - * - * @event Hooks#afterOnCellMouseDown - * @since 0.11 - * @param {Object} event `mousedown` event object. - * @param {Object} coords Coordinates object containing the visual row and visual column indexes of the clicked cell. - * @param {Element} TD Cell's TD (or TH) element. - */ -'afterOnCellMouseDown', - -/** - * Callback fired after hovering a cell or row/column header with the mouse cursor. - * In case the row/column header was hovered, the index is negative. - * For example, hovering over the row header of cell (0, 0) results with `afterOnCellMouseOver` called - * with coords `{row: 0, col: -1}`. - * - * @event Hooks#afterOnCellMouseOver - * @since 0.11 - * @param {Object} event `mouseover` event object. - * @param {Object} coords Hovered cell's visual coordinate object. - * @param {Element} TD Cell's TD (or TH) element. - */ -'afterOnCellMouseOver', - -/** - * Callback fired after leaving a cell or row/column header with the mouse cursor. - * - * @event Hooks#afterOnCellMouseOut - * @since 0.31.1 - * @param {Object} event `mouseout` event object. - * @param {Object} coords Leaved cell's visual coordinate object. - * @param {Element} TD Cell's TD (or TH) element. - */ -'afterOnCellMouseOut', - -/** - * Callback is fired when one or more columns are removed. - * - * @event Hooks#afterRemoveCol - * @param {Number} index Is an visual index of starter column. - * @param {Number} amount Is an amount of removed columns. - */ -'afterRemoveCol', - -/** - * Callback is fired when one or more rows are removed. - * - * @event Hooks#afterRemoveRow - * @param {Number} index Is an visual index of starter row. - * @param {Number} amount Is an amount of removed rows. - */ -'afterRemoveRow', - -/** - * Callback fired after the Handsontable table is rendered. - * - * @event Hooks#afterRender - * @param {Boolean} isForced Is `true` if rendering was triggered by a change of settings or data; or `false` if - * rendering was triggered by scrolling or moving selection. - */ -'afterRender', - -/** - * Fired before starting rendering the cell. - * - * @event Hooks#beforeRenderer - * @since 0.24.2 - * @param {Element} TD Currently rendered cell's TD element. - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {String|Number} prop Column property name or a column index, if datasource is an array of arrays. - * @param {String} value Value of the rendered cell. - * @param {Object} cellProperties Object containing the cell's properties. - */ -'beforeRenderer', - -/** - * Fired after finishing rendering the cell (after the renderer finishes). - * - * @event Hooks#afterRenderer - * @since 0.11.0 - * @param {Element} TD Currently rendered cell's TD element. - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {String|Number} prop Column property name or a column index, if datasource is an array of arrays. - * @param {String} value Value of the rendered cell. - * @param {Object} cellProperties Object containing the cell's properties. - */ -'afterRenderer', - -/** - * Fired after the horizontal scroll event. - * - * @event Hooks#afterScrollHorizontally - * @since 0.11 - */ -'afterScrollHorizontally', - -/** - * Fired after the vertical scroll event. - * - * @event Hooks#afterScrollVertically - * @since 0.11 - */ -'afterScrollVertically', - -/** - * Callback fired after one or more cells are selected (e.g. during mouse move). - * - * @event Hooks#afterSelection - * @param {Number} r Selection start visual row index. - * @param {Number} c Selection start visual column index. - * @param {Number} r2 Selection end visual row index. - * @param {Number} c2 Selection end visual column index. - * @param {Object} preventScrolling Object with `value` property where its value change will be observed. - * * @example - * ```js - * handsontable({ - * afterSelection: function (r, c, r2, c2, preventScrolling) { - * // setting if prevent scrolling after selection - * - * preventScrolling.value = true; - * } - * }) - * ``` - */ -'afterSelection', - -/** - * Callback fired after one or more cells are selected. The `p` argument represents the source object property name instead of the column number. - * - * @event Hooks#afterSelectionByProp - * @param {Number} r Selection start visual row index. - * @param {String} p Selection start data source object property name. - * @param {Number} r2 Selection end visual row index. - * @param {String} p2 Selection end data source object property name. - * @param {Object} preventScrolling Object with `value` property where its value change will be observed. - * * @example - * ```js - * handsontable({ - * afterSelectionByProp: function (r, c, r2, c2, preventScrolling) { - * // setting if prevent scrolling after selection - * - * preventScrolling.value = true; - * } - * }) - * ``` - */ -'afterSelectionByProp', - -/** - * Callback fired after one or more cells are selected (e.g. on mouse up). - * - * @event Hooks#afterSelectionEnd - * @param {Number} r Selection start visual row index. - * @param {Number} c Selection start visual column index. - * @param {Number} r2 Selection end visual row index. - * @param {Number} c2 Selection end visual column index. - */ -'afterSelectionEnd', - -/** - * Callback fired after one or more cells are selected (e.g. on mouse up). The `p` argument represents the data source object - * property name instead of the column number. - * - * @event Hooks#afterSelectionEndByProp - * @param {Number} r Selection start visual row index. - * @param {String} p Selection start data source object property index. - * @param {Number} r2 Selection end visual row index. - * @param {String} p2 Selection end data source object property index. - */ -'afterSelectionEndByProp', - -/** - * Called after cell meta is changed. - * - * @event Hooks#afterSetCellMeta - * @since 0.11.0 - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {String} key The updated meta key. - * @param {*} value The updated meta value. - */ -'afterSetCellMeta', - -/** - * Called after cell meta is removed. - * - * @event Hooks#afterRemoveCellMeta - * @since 0.33.1 - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {String} key The removed meta key. - * @param {*} value Value which was under removed key of cell meta. - */ -'afterRemoveCellMeta', - -/** - * Called after cell data was changed. - * - * @event Hooks#afterSetDataAtCell - * @since 0.28.0 - * @param {Array} changes An array of changes in format `[[row, col, oldValue, value], ...]`. - * @param {String} [source] String that identifies source of hook call - * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}). - */ -'afterSetDataAtCell', - -/** - * Called after cell data was changed. - * - * @event Hooks#afterSetDataAtRowProp - * @since 0.28.0 - * @param {Array} changes An array of changes in format `[[row, prop, oldValue, value], ...]`. - * @param {String} [source] String that identifies source of hook call - * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}). - */ -'afterSetDataAtRowProp', - -/** - * Fired after calling the `updateSettings` method. - * - * @event Hooks#afterUpdateSettings - * @param {Object} settings New settings object. - */ -'afterUpdateSettings', - -/** - * @description - * A plugin hook executed after validator function, only if validator function is defined. - * Validation result is the first parameter. This can be used to determinate if validation passed successfully or not. - * - * __Returning false from the callback will mark the cell as invalid.__ - * - * @event Hooks#afterValidate - * @since 0.9.5 - * @param {Boolean} isValid `true` if valid, `false` if not. - * @param {*} value The value in question. - * @param {Number} row Row index. - * @param {String|Number} prop Property name / column index. - * @param {String} [source] String that identifies source of hook call - * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}). - */ -'afterValidate', - -/** - * Fired before populating the data in the autofill feature. - * - * @event Hooks#beforeAutofill - * @param {Object} start Object containing information about first filled cell: `{row: 2, col: 0}`. - * @param {Object} end Object containing information about last filled cell: `{row: 4, col: 1}`. - * @param {Array} data 2D array containing information about fill pattern: `[["1', "Ted"], ["1', "John"]]`. - */ -'beforeAutofill', - -/** - * Fired before aligning the cell contents. - * - * @event Hooks#beforeCellAlignment - * @param stateBefore - * @param range - * @param {String} type Type of the alignment - either `horizontal` or `vertical` - * @param {String} alignmentClass String defining the alignment class added to the cell. - * Possible values: - * * `htLeft`, - * * `htCenter`, - * * `htRight`, - * * `htJustify` - * for horizontal alignment, - * - * - * * `htTop`, - * * `htMiddle`, - * * `htBottom` - * for vertical alignment. - */ -'beforeCellAlignment', - -/** - * Callback fired before one or more cells is changed. Its main purpose is to alter changes silently before input. - * - * @event Hooks#beforeChange - * @param {Array} changes 2D array containing information about each of the edited cells. - * @param {String} [source] String that identifies source of hook call - * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}). - * @example - * ```js - * // To disregard a single change, set changes[i] to null or remove it from array using changes.splice(i, 1). - * ... - * new Handsontable(document.getElementById('example'), { - * beforeChange: function(changes, source) { - * // [[row, prop, oldVal, newVal], ...] - * changes[0] = null; - * } - * }); - * ... - * - * // To alter a single change, overwrite the desired value to changes[i][3]. - * ... - * new Handsontable(document.getElementById('example'), { - * beforeChange: function(changes, source) { - * // [[row, prop, oldVal, newVal], ...] - * changes[0][3] = 10; - * } - * }); - * ... - * - * // To cancel all edit, return false from the callback or set array length to 0 (changes.length = 0). - * ... - * new Handsontable(document.getElementById('example'), { - * beforeChange: function(changes, source) { - * // [[row, prop, oldVal, newVal], ...] - * return false; - * } - * }); - * ... - * ``` - */ -'beforeChange', - -/** - * Fired right before rendering the changes. - * - * @event Hooks#beforeChangeRender - * @since 0.11 - * @param {Array} changes Array in form of [row, prop, oldValue, newValue]. - * @param {String} [source] String that identifies source of hook call - * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}). - */ -'beforeChangeRender', - -/** - * Fired before drawing the borders. - * - * @event Hooks#beforeDrawBorders - * @param {Array} corners Array specifying the current selection borders. - * @param {String} borderClassName Specifies the border class name. - */ -'beforeDrawBorders', - -/** - * Callback fired before getting cell settings. - * - * @event Hooks#beforeGetCellMeta - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {Object} cellProperties Object containing the cell's properties. - */ -'beforeGetCellMeta', - -/** - * Called before cell meta is removed. - * - * @event Hooks#beforeRemoveCellMeta - * @since 0.33.1 - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {String} key The removed meta key. - * @param {*} value Value which is under removed key of cell meta. - */ -'beforeRemoveCellMeta', - -/** - * @description - * Callback fired before Handsontable instance is initiated. - * - * @event Hooks#beforeInit - */ -'beforeInit', - -/** - * Callback fired before Walkontable instance is initiated. - * - * @since 0.11 - * @event Hooks#beforeInitWalkontable - * @param {Object} walkontableConfig Walkontable configuration object. - */ -'beforeInitWalkontable', - -/** - * Callback fired before keydown event is handled. It can be used to overwrite default key bindings. - * Caution - in your `beforeKeyDown` handler you need to call `event.stopImmediatePropagation()` to prevent default key behavior. - * - * @event Hooks#beforeKeyDown - * @since 0.9.0 - * @param {Event} event Original DOM event. - */ -'beforeKeyDown', - -/** - * Fired after the user clicked a cell, but before all the calculations related with it. - * - * @event Hooks#beforeOnCellMouseDown - * @param {Event} event The `mousedown` event object. - * @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell. - * @param {Element} TD TD element. - */ -'beforeOnCellMouseDown', - -/** - * Fired after the user moved cursor over a cell, but before all the calculations related with it. - * - * @event Hooks#beforeOnCellMouseOver - * @param {Event} event The `mouseover` event object. - * @param {CellCoords} coords CellCoords object containing the visual coordinates of the clicked cell. - * @param {Element} TD TD element. - * @param {Object} blockCalculations Contain keys 'row' and 'column' with boolean value. - */ -'beforeOnCellMouseOver', - -/** - * Fired after the user moved cursor out from a cell, but before all the calculations related with it. - * - * @event Hooks#beforeOnCellMouseOut - * @since 0.31.1 - * @param {Event} event The `mouseout` event object. - * @param {WalkontableCellCoords} coords WalkontableCellCoords object containing the visual coordinates of the leaved cell. - * @param {Element} TD TD element. - */ -'beforeOnCellMouseOut', - -/** - * Callback is fired when one or more columns are about to be removed. - * - * @event Hooks#beforeRemoveCol - * @param {Number} index Visual index of starter column. - * @param {Number} amount Amount of columns to be removed. - * @param {Array} [visualCols] Consists of visual indexes of processed columns. - */ -'beforeRemoveCol', - -/** - * Callback is fired when one or more rows are about to be removed. - * - * @event Hooks#beforeRemoveRow - * @param {Number} index Visual index of starter column. - * @param {Number} amount Amount of columns to be removed. - * @param {Array} [visualRows] Consists of visual indexes of processed rows. - */ -'beforeRemoveRow', - -/** - * Callback fired before Handsontable table is rendered. - * - * @event Hooks#beforeRender - * @param {Boolean} isForced If `true` rendering was triggered by a change of settings or data; or `false` if - * rendering was triggered by scrolling or moving selection. - */ -'beforeRender', - -/** - * Callback fired before setting range is started. - * - * @event Hooks#beforeSetRangeStart - * @param {Array} coords CellCoords array. - */ -'beforeSetRangeStart', - -/** - * Callback fired before setting range is ended. - * - * @event Hooks#beforeSetRangeEnd - * @param {Array} coords CellCoords array. - */ -'beforeSetRangeEnd', - -/** - * Fired before the logic of handling a touch scroll, when user started scrolling on a touch-enabled device. - * - * @event Hooks#beforeTouchScroll - */ -'beforeTouchScroll', - -/** - * @description - * A plugin hook executed before validator function, only if validator function is defined. - * This can be used to manipulate the value of changed cell before it is applied to the validator function. - * - * __Notice:__ this will not affect values of changes. This will change value ONLY for validation! - * - * @event Hooks#beforeValidate - * @since 0.9.5 - * @param {*} value Value of the cell. - * @param {Number} row Row index. - * @param {String|Number} prop Property name / column index. - * @param {String} [source] String that identifies source of hook call - * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}). - */ -'beforeValidate', - -/** - * Callback fired before cell value is rendered into the DOM (through renderer function). - * - * @event Hooks#beforeValueRender - * @since 0.29.0 - * @param {*} value Cell value to render. - */ -'beforeValueRender', - -/** - * Callback fired after Handsontable instance is constructed (via `new` operator). - * - * @event Hooks#construct - * @since 0.16.1 - */ -'construct', - -/** - * Callback fired after Handsontable instance is initiated but before table is rendered. - * - * @event Hooks#init - * @since 0.16.1 - */ -'init', - -/** - * Fired when a column index is about to be modified by a callback function. - * - * @event Hooks#modifyCol - * @since 0.11 - * @param {Number} col Visual column index. - */ -'modifyCol', - -/** - * Fired when a column index is about to be de-modified by a callback function. - * - * @event Hooks#unmodifyCol - * @since 0.23.0 - * @param {Number} col Physical column index. - */ -'unmodifyCol', - -/** - * Fired when a physical row index is about to be de-modified by a callback function. - * - * @event Hooks#unmodifyRow - * @since 0.26.2 - * @param {Number} row Physical row index. - */ -'unmodifyRow', -/** - * Fired when a column header index is about to be modified by a callback function. - * - * @event Hooks#modifyColHeader - * @since 0.20.0 - * @param {Number} column Visual column header index. - */ -'modifyColHeader', - -/** - * Fired when a column width is about to be modified by a callback function. - * - * @event Hooks#modifyColWidth - * @since 0.11 - * @param {Number} width Current column width. - * @param {Number} col Column index. - */ -'modifyColWidth', - -/** - * Fired when a row index is about to be modified by a callback function. - * - * @event Hooks#modifyRow - * @since 0.11 - * @param {Number} row Row index. - */ -'modifyRow', - -/** - * Fired when a row header index is about to be modified by a callback function. - * - * @event Hooks#modifyRowHeader - * @since 0.20.0 - * @param {Number} row Row header index. - */ -'modifyRowHeader', - -/** - * Fired when a row height is about to be modified by a callback function. - * - * @event Hooks#modifyRowHeight - * @since 0.11.0 - * @param {Number} height Row height. - * @param {Number} row Row index. - */ -'modifyRowHeight', - -/** - * Fired when a data was retrieved or modified. - * - * @event Hooks#modifyData - * @since 0.28.0 - * @param {Number} row Row height. - * @param {Number} column Column index. - * @param {Object} valueHolder Object which contains original value which can be modified by overwriting `.value` property. - * @param {String} ioMode String which indicates for what operation hook is fired (`get` or `set`). - */ -'modifyData', - -/** - * Fired when a data was retrieved or modified. - * - * @event Hooks#modifyRowData - * @since 0.28.0 - * @param {Number} row Physical row index. - */ -'modifyRowData', - -/** - * Fired after loading data using the Persistent State plugin. - * - * @event Hooks#persistentStateLoad - * @param {String} key Key string. - * @param {Object} valuePlaceholder Object containing the loaded data. - */ -'persistentStateLoad', - -/** - * Fired after resetting data using the Persistent State plugin. - * - * @event Hooks#persistentStateReset - * @param {String} key Key string. - */ -'persistentStateReset', - -/** - * Fired after resetting data using the Persistent State plugin. - * - * @event Hooks#persistentStateSave - * @param {String} key Key string. - * @param {Mixed} value Value to save. - */ -'persistentStateSave', - -/** - * Fired before sorting the column. If you return `false` value then sorting will be not applied by - * Handsontable (useful for server-side sorting). - * - * @event Hooks#beforeColumnSort - * @param {Number} column Sorted visual column index. - * @param {Boolean} order Soring order where: - * * `true` means ascending order, - * * `false` means descending order, - * * `undefined` means original order. - */ -'beforeColumnSort', - -/** - * Fired after sorting the column. - * - * @event Hooks#afterColumnSort - * @param {Number} column Sorted visual column index. - * @param {Boolean} order Soring order where: - * * `true` means ascending order - * * `false` means descending order - * * `undefined` means original order - */ -'afterColumnSort', - -/** - * @description - * Fired after setting range of autofill. - * Both arguments are provided in the following format: - * ```js - * [startRow, startColumn, endRow, endColumn] - * ``` - * - * @event Hooks#modifyAutofillRange - * @param {Array} startArea Array of visual coordinates of the starting point for the drag-down operation. - * @param {Array} entireArea Array of visual coordinates of the entire area of the drag-down operation. - */ -'modifyAutofillRange', - -/** - * Fired to allow modifying the copyable range with a callback function. - * - * @since 0.19.0 - * @event Hooks#modifyCopyableRange - * @param {Array} copyableRanges Array of objects defining copyable cells. - */ -'modifyCopyableRange', - -/** - * Called before copying the values into clipboard and before clearing values of the selected cells. - * - * @event Hooks#beforeCut - * @since 0.31.1 - * @param {Array} data An array of arrays which contains data to cut. - * @param {Array} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`) - * which will be cut out. - * @returns {*} If returns `false` then operation of the cutting out is cancelled. - * - * @example - * ```js - * // To disregard a single row, remove it from array using data.splice(i, 1). - * ... - * new Handsontable(document.getElementById('example'), { - * beforeCut: function(data, coords) { - * // data -> [[1, 2, 3], [4, 5, 6]] - * data.splice(0, 1); - * // data -> [[4, 5, 6]] - * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}] - * } - * }); - * ... - * - * // To cancel cutting out, return false from the callback. - * ... - * new Handsontable(document.getElementById('example'), { - * beforeCut: function(data, coords) { - * return false; - * } - * }); - * ... - * ``` - */ -'beforeCut', - -/** - * Fired after data are cutted out from the table. - * - * @event Hooks#afterCut - * @since 0.31.1 - * @param {Array} data An array of arrays which contains the cutted out data. - * @param {Array} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`) - * which was cut out. - */ -'afterCut', - -/** - * Fired before values are copied into clipboard. - * - * @event Hooks#beforeCopy - * @since 0.31.1 - * @param {Array} data An array of arrays which contains data to copied. - * @param {Array} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`) - * which will copied. - * @returns {*} If returns `false` then copying is cancelled. - * - * @example - * ```js - * // To disregard a single row, remove it from array using data.splice(i, 1). - * ... - * new Handsontable(document.getElementById('example'), { - * beforeCopy: function(data, coords) { - * // data -> [[1, 2, 3], [4, 5, 6]] - * data.splice(0, 1); - * // data -> [[4, 5, 6]] - * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}] - * } - * }); - * ... - * - * // To cancel copying, return false from the callback. - * ... - * new Handsontable(document.getElementById('example'), { - * beforeCopy: function(data, coords) { - * return false; - * } - * }); - * ... - * ``` - */ -'beforeCopy', - -/** - * Fired after data are pasted into table. - * - * @event Hooks#afterCopy - * @since 0.31.1 - * @param {Array} data An array of arrays which contains the copied data. - * @param {Array} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`) - * which was copied. - */ -'afterCopy', - -/** - * Fired before values are pasted into table. - * - * @event Hooks#beforePaste - * @since 0.31.1 - * @param {Array} data An array of arrays which contains data to paste. - * @param {Array} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`) - * that correspond to the previously selected area. - * @returns {*} If returns `false` then pasting is cancelled. - * - * @example - * ```js - * // To disregard a single row, remove it from array using data.splice(i, 1). - * ... - * new Handsontable(document.getElementById('example'), { - * beforePaste: function(data, coords) { - * // data -> [[1, 2, 3], [4, 5, 6]] - * data.splice(0, 1); - * // data -> [[4, 5, 6]] - * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}] - * } - * }); - * ... - * - * // To cancel pasting, return false from the callback. - * ... - * new Handsontable(document.getElementById('example'), { - * beforePaste: function(data, coords) { - * return false; - * } - * }); - * ... - * ``` - */ -'beforePaste', - -/** - * Fired after values are pasted into table. - * - * @event Hooks#afterePaste - * @since 0.31.1 - * @param {Array} data An array of arrays which contains the pasted data. - * @param {Array} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`) - * that correspond to the previously selected area. - */ -'afterPaste', - -/** - * Fired before change order of the visual indexes. - * - * @event Hooks#beforeColumnMove - * @param {Array} columns Array of visual column indexes to be moved. - * @param {Number} target Visual column index being a target for moved columns. - */ -'beforeColumnMove', - -/** - * Fired after change order of the visual indexes. - * - * @event Hooks#afterColumnMove - * @param {Array} columns Array of visual column indexes that were moved. - * @param {Number} target Visual column index being a target for moved columns. - */ -'afterColumnMove', - -/** - * Fired before change order of the visual indexes. - * - * @event Hooks#beforeRowMove - * @param {Array} rows Array of visual row indexes to be moved. - * @param {Number} target Visual row index being a target for moved rows. - */ -'beforeRowMove', - -/** - * Fired after change order of the visual indexes. - * - * @event Hooks#afterRowMove - * @param {Array} rows Array of visual row indexes that were moved. - * @param {Number} target Visual row index being a target for moved rows. - */ -'afterRowMove', - -/** - * Fired before rendering the table with modified column sizes. - * - * @event Hooks#beforeColumnResize - * @param {Number} currentColumn Visual index of the resized column. - * @param {Number} newSize Calculated new column width. - * @param {Boolean} isDoubleClick Flag that determines whether there was a double-click. - * @returns {Number} Returns a new column size or `undefined`, if column size should be calculated automatically. - */ -'beforeColumnResize', - -/** - * Fired after rendering the table with modified column sizes. - * - * @event Hooks#afterColumnResize - * @param {Number} currentColumn Visual index of the resized column. - * @param {Number} newSize Calculated new column width. - * @param {Boolean} isDoubleClick Flag that determines whether there was a double-click. - */ -'afterColumnResize', - -/** - * Fired before rendering the table with modified row sizes. - * - * @event Hooks#beforeRowResize - * @param {Number} currentRow Visual index of the resized row. - * @param {Number} newSize Calculated new row height. - * @param {Boolean} isDoubleClick Flag that determines whether there was a double-click. - * @returns {Number} Returns the new row size or `undefined` if row size should be calculated automatically. - */ -'beforeRowResize', - -/** - * Fired after rendering the table with modified row sizes. - * - * @event Hooks#afterRowResize - * @param {Number} currentRow Visual index of the resized row. - * @param {Number} newSize Calculated new row height. - * @param {Boolean} isDoubleClick Flag that determines whether there was a double-click. - */ -'afterRowResize', - -/** - * Fired after getting the column header renderers. - * - * @event Hooks#afterGetColumnHeaderRenderers - * @param {Array} array Array of the column header renderers. - */ -'afterGetColumnHeaderRenderers', - -/** - * Fired after getting the row header renderers. - * - * @event Hooks#afterGetRowHeaderRenderers - * @param {Array} array Array of the row header renderers. - */ -'afterGetRowHeaderRenderers', - -/** - * Fired before applying stretched column width to column. - * - * @event Hooks#beforeStretchingColumnWidth - * @param {Number} stretchedWidth Calculated width. - * @param {Number} column Visual column index. - * @returns {Number} Returns new width which will be applied to the column element. - */ -'beforeStretchingColumnWidth', - -/** - * Fired before applying [filtering]{@link http://docs.handsontable.com/pro/demo-filtering.html}. - * - * @pro - * @event Hooks#beforeFilter - * @param {Array} conditionsStack An array of objects with added formulas. - * @returns {Boolean} If hook returns `false` value then filtering won't be applied on the UI side (server-side filtering). - */ -'beforeFilter', - -/** - * Fired after applying [filtering]{@link http://docs.handsontable.com/pro/demo-filtering.html}. - * - * @pro - * @event Hooks#afterFilter - * @param {Array} conditionsStack An array of objects with added formulas. - */ -'afterFilter', - -/** - * Used to modify the column header height. - * - * @event Hooks#modifyColumnHeaderHeight - * @since 0.25.0 - * @param {Number} col Visual column index. - */ -'modifyColumnHeaderHeight', - -/** - * Fired before the undo action. Contains information about the action that is being undone. - * - * @event Hooks#beforeUndo - * @since 0.26.2 - * @param {Object} action The action object. Contains information about the action being undone. The `actionType` - * property of the object specifies the type of the action in a String format. (e.g. `'remove_row'`). - */ -'beforeUndo', - -/** - * Fired after the undo action. Contains information about the action that is being undone. - * - * @event Hooks#afterUndo - * @since 0.26.2 - * @param {Object} action The action object. Contains information about the action being undone. The `actionType` - * property of the object specifies the type of the action in a String format. (e.g. `'remove_row'`). - */ -'afterUndo', - -/** - * Fired before the redo action. Contains information about the action that is being redone. - * - * @event Hooks#beforeRedo - * @since 0.26.2 - * @param {Object} action The action object. Contains information about the action being redone. The `actionType` - * property of the object specifies the type of the action in a String format. (e.g. `'remove_row'`). - */ -'beforeRedo', - -/** - * Fired after the redo action. Contains information about the action that is being redone. - * - * @event Hooks#afterRedo - * @since 0.26.2 - * @param {Object} action The action object. Contains information about the action being redone. The `actionType` - * property of the object specifies the type of the action in a String format. (e.g. `'remove_row'`). - */ -'afterRedo', - -/** - * Used to modify the row header width. - * - * @event Hooks#modifyRowHeaderWidth - * @param {Number} rowHeaderWidth Row header width. - */ -'modifyRowHeaderWidth', - -/** - * Fired from the `populateFromArray` method during the `autofill` process. Fired for each "autofilled" cell individually. - * - * @event Hooks#beforeAutofillInsidePopulate - * @param {Object} index Object containing `row` and `col` properties, defining the number of rows/columns from the initial cell of the autofill. - * @param {String} direction Declares the direction of the autofill. Possible values: `up`, `down`, `left`, `right`. - * @param {Array} input Array of arrays. Contains an array of rows with data being used in the autofill. - * @param {Array} deltas The deltas array passed to the `populateFromArray` method. - */ -'beforeAutofillInsidePopulate', - -/** - * Fired when the start of the selection is being modified. (e.g. moving the selection with the arrow keys). - * - * @event Hooks#modifyTransformStart - * @param {CellCoords} delta Cell coords object declaring the delta of the new selection relative to the previous one. - */ -'modifyTransformStart', - -/** - * Fired when the end of the selection is being modified. (e.g. moving the selection with the arrow keys). - * - * @event Hooks#modifyTransformEnd - * @param {CellCoords} delta Cell coords object declaring the delta of the new selection relative to the previous one. - */ -'modifyTransformEnd', - -/** - * Fired after the start of the selection is being modified. (e.g. moving the selection with the arrow keys). - * - * @event Hooks#afterModifyTransformStart - * @param {CellCoords} coords Coords of the freshly selected cell. - * @param {Number} rowTransformDir `-1` if trying to select a cell with a negative row index. `0` otherwise. - * @param {Number} colTransformDir `-1` if trying to select a cell with a negative column index. `0` otherwise. - */ -'afterModifyTransformStart', - -/** - * Fired after the end of the selection is being modified. (e.g. moving the selection with the arrow keys). - * - * @event Hooks#afterModifyTransformEnd - * @param {CellCoords} coords Visual coords of the freshly selected cell. - * @param {Number} rowTransformDir `-1` if trying to select a cell with a negative row index. `0` otherwise. - * @param {Number} colTransformDir `-1` if trying to select a cell with a negative column index. `0` otherwise. - */ -'afterModifyTransformEnd', - -/** - * Fired inside the `viewportRowCalculatorOverride` method. Allows modifying the row calculator parameters. - * - * @event Hooks#afterViewportRowCalculatorOverride - * @param {Object} calc The row calculator. - */ -'afterViewportRowCalculatorOverride', - -/** - * Fired inside the `viewportColumnCalculatorOverride` method. Allows modifying the row calculator parameters. - * - * @event Hooks#afterViewportColumnCalculatorOverride - * @param {Object} calc The row calculator. - */ -'afterViewportColumnCalculatorOverride', - -/** - * Fired after initializing all the plugins. - * - * @event Hooks#afterPluginsInitialized - */ -'afterPluginsInitialized', - -/** - * Used when saving/loading the manual row heights state. - * - * @event Hooks#manualRowHeights - * @param {Array} state The current manual row heights state. - */ -'manualRowHeights', - -/** - * Used to skip the length cache calculation for a defined period of time. - * - * @event Hooks#skipLengthCache - * @param {Number} delay The delay in milliseconds. - */ -'skipLengthCache', - -/** - * Fired after trimming rows in the TrimRows plugin. - * - * @pro - * @event Hooks#afterTrimRow - * @param {Array} rows Physical indexes of trimmed rows. - */ -'afterTrimRow', - -/** - * Fired after untrimming rows in the TrimRows plugin. - * - * @pro - * @event Hooks#afterUntrimRow - * @param {Array} rows Physical indexes of untrimmed rows. - */ -'afterUntrimRow', - -/** - * Fired after opening the dropdown menu. - * - * @pro - * @event Hooks#afterDropdownMenuShow - * @param {DropdownMenu} instance The DropdownMenu instance. - */ -'afterDropdownMenuShow', - -/** - * Fired after hiding the dropdown menu. - * - * @pro - * @event Hooks#afterDropdownMenuHide - * @param {DropdownMenu} instance The DropdownMenu instance. - */ -'afterDropdownMenuHide', - -/** - * Used to check whether the provided row index is hidden. - * - * @pro - * @event Hooks#hiddenRow - * @param {Number} row The visual row index in question. - */ -'hiddenRow', - -/** - * Used to check whether the provided column index is hidden. - * - * @pro - * @event Hooks#hiddenColumn - * @param {Number} column The visual column index in question. - */ -'hiddenColumn', - -/** - * Fired before adding a children to the NestedRows structure. - * - * @pro - * @event Hooks#beforeAddChild - * @param {Object} parent The parent object. - * @param {Object|undefined} element The element added as a child. If `undefined`, a blank child was added. - * @param {Number|undefined} index The index within the parent where the new child was added. If `undefined`, the element was added as the last child. - */ -'beforeAddChild', - -/** - * Fired after adding a children to the NestedRows structure. - * - * @pro - * @event Hooks#afterAddChild - * @param {Object} parent The parent object. - * @param {Object|undefined} element The element added as a child. If `undefined`, a blank child was added. - * @param {Number|undefined} index The index within the parent where the new child was added. If `undefined`, the element was added as the last child. - */ -'afterAddChild', - -/** - * Fired before detaching a child from its parent in the NestedRows plugin. - * - * @pro - * @event Hooks#beforeDetachChild - * @param {Object} parent An object representing the parent from which the element is to be detached. - * @param {Object} element The detached element. - */ -'beforeDetachChild', - -/** - * Fired after detaching a child from its parent in the NestedRows plugin. - * - * @pro - * @event Hooks#afterDetachChild - * @param {Object} parent An object representing the parent from which the element was detached. - * @param {Object} element The detached element. - */ -'afterDetachChild', - -/** - * Fired after the editor is opened and rendered. - * - * @event Hooks#afterBeginEditing - * @param {Number} row Row index of the edited cell. - * @param {Number} column Column index of the edited cell. - */ -'afterBeginEditing']; - -var Hooks = function () { - _createClass(Hooks, null, [{ - key: 'getSingleton', - value: function getSingleton() { - return globalSingleton; - } - - /** - * - */ - - }]); - - function Hooks() { - _classCallCheck(this, Hooks); - - this.globalBucket = this.createEmptyBucket(); - } - - /** - * Returns a new object with empty handlers related to every registered hook name. - * - * @returns {Object} The empty bucket object. - * - * @example - * ```js - * Handsontable.hooks.createEmptyBucket(); - * // Results: - * { - * ... - * afterCreateCol: [], - * afterCreateRow: [], - * beforeInit: [], - * ... - * } - * ``` - */ - - - _createClass(Hooks, [{ - key: 'createEmptyBucket', - value: function createEmptyBucket() { - var bucket = Object.create(null); - - // eslint-disable-next-line no-return-assign - (0, _array.arrayEach)(REGISTERED_HOOKS, function (hook) { - return bucket[hook] = []; - }); - - return bucket; - } - - /** - * Get hook bucket based on the context of the object or if argument is `undefined`, get the global hook bucket. - * - * @param {Object} [context=null] A Handsontable instance. - * @returns {Object} Returns a global or Handsontable instance bucket. - */ - - }, { - key: 'getBucket', - value: function getBucket() { - var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - if (context) { - if (!context.pluginHookBucket) { - context.pluginHookBucket = this.createEmptyBucket(); - } - - return context.pluginHookBucket; - } - - return this.globalBucket; - } - - /** - * Adds a listener (globally or locally) to a specified hook name. - * If the `context` parameter is provided, the hook will be added only to the instance it references. - * Otherwise, the callback will be used everytime the hook fires on any Handsontable instance. - * You can provide an array of callback functions as the `callback` argument, this way they will all be fired - * once the hook is triggered. - * - * @see Core#addHook - * @param {String} key Hook name. - * @param {Function|Array} callback Callback function or an array of functions. - * @param {Object} [context=null] The context for the hook callback to be added - a Handsontable instance or leave empty. - * @returns {Hooks} Instance of Hooks. - * - * @example - * ```js - * // single callback, added locally - * Handsontable.hooks.add('beforeInit', myCallback, hotInstance); - * - * // single callback, added globally - * Handsontable.hooks.add('beforeInit', myCallback); - * - * // multiple callbacks, added locally - * Handsontable.hooks.add('beforeInit', [myCallback, anotherCallback], hotInstance); - * - * // multiple callbacks, added globally - * Handsontable.hooks.add('beforeInit', [myCallback, anotherCallback]); - * ``` - */ - - }, { - key: 'add', - value: function add(key, callback) { - var _this = this; - - var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - - if (Array.isArray(callback)) { - (0, _array.arrayEach)(callback, function (c) { - return _this.add(key, c, context); - }); - } else { - var bucket = this.getBucket(context); - - if (typeof bucket[key] === 'undefined') { - this.register(key); - bucket[key] = []; - } - callback.skip = false; - - if (bucket[key].indexOf(callback) === -1) { - // only add a hook if it has not already been added (adding the same hook twice is now silently ignored) - var foundInitialHook = false; - - if (callback.initialHook) { - (0, _array.arrayEach)(bucket[key], function (cb, i) { - if (cb.initialHook) { - bucket[key][i] = callback; - foundInitialHook = true; - - return false; - } - }); - } - - if (!foundInitialHook) { - bucket[key].push(callback); - } - } - } - - return this; - } - - /** - * Adds a listener to a specified hook. After the hook runs this listener will be automatically removed from the bucket. - * - * @see Core#addHookOnce - * @param {String} key Hook/Event name. - * @param {Function|Array} callback Callback function. - * @param {Object} [context=null] A Handsontable instance. - * - * @example - * ```js - * Handsontable.hooks.once('beforeInit', myCallback, hotInstance); - * ``` - */ - - }, { - key: 'once', - value: function once(key, callback) { - var _this2 = this; - - var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - - if (Array.isArray(callback)) { - (0, _array.arrayEach)(callback, function (c) { - return _this2.once(key, c, context); - }); - } else { - callback.runOnce = true; - this.add(key, callback, context); - } - } - - /** - * Removes a listener from a hook with a given name. If the `context` argument is provided, it removes a listener from a local hook assigned to the given Handsontable instance. - * - * @see Core#removeHook - * @param {String} key Hook/Event name. - * @param {Function} callback Callback function (needs the be the function that was previously added to the hook). - * @param {Object} [context=null] Handsontable instance. - * @return {Boolean} Returns `true` if hook was removed, `false` otherwise. - * - * @example - * ```js - * Handsontable.hooks.remove('beforeInit', myCallback); - * ``` - */ - - }, { - key: 'remove', - value: function remove(key, callback) { - var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - - var bucket = this.getBucket(context); - - if (typeof bucket[key] !== 'undefined') { - if (bucket[key].indexOf(callback) >= 0) { - callback.skip = true; - - return true; - } - } - - return false; - } - - /** - * Checks whether there are any registered listeners for the provided hook name. - * If the `context` parameter is provided, it only checks for listeners assigned to the given Handsontable instance. - * - * @param {String} key Hook name. - * @param {Object} [context=null] A Handsontable instance. - * @returns {Boolean} `true` for success, `false` otherwise. - */ - - }, { - key: 'has', - value: function has(key) { - var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - var bucket = this.getBucket(context); - - return !!(bucket[key] !== void 0 && bucket[key].length); - } - - /** - * Runs all local and global callbacks assigned to the hook identified by the `key` parameter. - * It returns either a return value from the last called callback or the first parameter (`p1`) passed to the `run` function. - * - * @see Core#runHooks - * @param {Object} context Handsontable instance. - * @param {String} key Hook/Event name. - * @param {*} [p1] Parameter to be passed as an argument to the callback function. - * @param {*} [p2] Parameter to be passed as an argument to the callback function. - * @param {*} [p3] Parameter to be passed as an argument to the callback function. - * @param {*} [p4] Parameter to be passed as an argument to the callback function. - * @param {*} [p5] Parameter to be passed as an argument to the callback function. - * @param {*} [p6] Parameter to be passed as an argument to the callback function. - * @returns {*} Either a return value from the last called callback or `p1`. - * - * @example - * ```js - * Handsontable.hooks.run(hot, 'beforeInit'); - * ``` - */ - - }, { - key: 'run', - value: function run(context, key, p1, p2, p3, p4, p5, p6) { - { - var globalHandlers = this.globalBucket[key]; - var index = -1; - var length = globalHandlers ? globalHandlers.length : 0; - - if (length) { - // Do not optimise this loop with arrayEach or arrow function! If you do You'll decrease perf because of GC. - while (++index < length) { - if (!globalHandlers[index] || globalHandlers[index].skip) { - /* eslint-disable no-continue */ - continue; - } - // performance considerations - http://jsperf.com/call-vs-apply-for-a-plugin-architecture - var res = globalHandlers[index].call(context, p1, p2, p3, p4, p5, p6); - - if (res !== void 0) { - p1 = res; - } - if (globalHandlers[index] && globalHandlers[index].runOnce) { - this.remove(key, globalHandlers[index]); - } - } - } - } - { - var localHandlers = this.getBucket(context)[key]; - var _index = -1; - var _length = localHandlers ? localHandlers.length : 0; - - if (_length) { - // Do not optimise this loop with arrayEach or arrow function! If you do You'll decrease perf because of GC. - while (++_index < _length) { - if (!localHandlers[_index] || localHandlers[_index].skip) { - /* eslint-disable no-continue */ - continue; - } - // performance considerations - http://jsperf.com/call-vs-apply-for-a-plugin-architecture - var _res = localHandlers[_index].call(context, p1, p2, p3, p4, p5, p6); - - if (_res !== void 0) { - p1 = _res; - } - if (localHandlers[_index] && localHandlers[_index].runOnce) { - this.remove(key, localHandlers[_index], context); - } - } - } - } - - return p1; - } - - /** - * Destroy all listeners connected to the context. If no context is provided, the global listeners will be destroyed. - * - * @param {Object} [context=null] A Handsontable instance. - * @example - * ```js - * // destroy the global listeners - * Handsontable.hooks.destroy(); - * - * // destroy the local listeners - * Handsontable.hooks.destroy(hotInstance); - * ``` - */ - - }, { - key: 'destroy', - value: function destroy() { - var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - // eslint-disable-next-line no-return-assign - (0, _object.objectEach)(this.getBucket(context), function (value, key, bucket) { - return bucket[key].length = 0; - }); - } - - /** - * Registers a hook name (adds it to the list of the known hook names). Used by plugins. - * It is not necessary to call register, but if you use it, your plugin hook will be used returned by - * the `getRegistered` method. (which itself is used in the demo http://docs.handsontable.com/tutorial-callbacks.html). - * - * @param key {String} The hook name. - * - * @example - * ```js - * Handsontable.hooks.register('myHook'); - * ``` - */ - - }, { - key: 'register', - value: function register(key) { - if (!this.isRegistered(key)) { - REGISTERED_HOOKS.push(key); - } - } - - /** - * Deregisters a hook name (removes it from the list of known hook names). - * - * @param key {String} Hook name. - * - * @example - * ```js - * Handsontable.hooks.deregister('myHook'); - * ``` - */ - - }, { - key: 'deregister', - value: function deregister(key) { - if (this.isRegistered(key)) { - REGISTERED_HOOKS.splice(REGISTERED_HOOKS.indexOf(key), 1); - } - } - - /** - * Returns a boolean depending on if a hook by such name has been registered. - * - * @param key {String} Hook name. - * @returns {Boolean} `true` for success, `false` otherwise. - * - * @example - * ```js - * Handsontable.hooks.isRegistered('beforeInit'); - * - * // Results: - * true - * ``` - */ - - }, { - key: 'isRegistered', - value: function isRegistered(key) { - return REGISTERED_HOOKS.indexOf(key) >= 0; - } - - /** - * Returns an array of registered hooks. - * - * @returns {Array} An array of registered hooks. - * - * @example - * ```js - * Handsontable.hooks.getRegistered(); - * - * // Results: - * [ - * ... - * 'beforeInit', - * 'beforeRender', - * 'beforeSetRangeEnd', - * 'beforeDrawBorders', - * 'beforeChange', - * ... - * ] - * ``` - */ - - }, { - key: 'getRegistered', - value: function getRegistered() { - return REGISTERED_HOOKS; - } - }]); - - return Hooks; -}(); - -var globalSingleton = new Hooks(); - -exports.default = Hooks; - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.stopImmediatePropagation = stopImmediatePropagation; -exports.isImmediatePropagationStopped = isImmediatePropagationStopped; -exports.stopPropagation = stopPropagation; -exports.pageX = pageX; -exports.pageY = pageY; -exports.isRightClick = isRightClick; -exports.isLeftClick = isLeftClick; - -var _element = __webpack_require__(0); - -/** - * Prevent other listeners of the same event from being called. - * - * @param {Event} event - */ -function stopImmediatePropagation(event) { - event.isImmediatePropagationEnabled = false; - event.cancelBubble = true; -} - -/** - * Check if event was stopped by `stopImmediatePropagation`. - * - * @param event {Event} - * @returns {Boolean} - */ -function isImmediatePropagationStopped(event) { - return event.isImmediatePropagationEnabled === false; -} - -/** - * Prevent further propagation of the current event (prevent bubbling). - * - * @param event {Event} - */ -function stopPropagation(event) { - // ie8 - // http://msdn.microsoft.com/en-us/library/ie/ff975462(v=vs.85).aspx - if (typeof event.stopPropagation === 'function') { - event.stopPropagation(); - } else { - event.cancelBubble = true; - } -} - -/** - * Get horizontal coordinate of the event object relative to the whole document. - * - * @param {Event} event - * @returns {Number} - */ -function pageX(event) { - if (event.pageX) { - return event.pageX; - } - - return event.clientX + (0, _element.getWindowScrollLeft)(); -} - -/** - * Get vertical coordinate of the event object relative to the whole document. - * - * @param {Event} event - * @returns {Number} - */ -function pageY(event) { - if (event.pageY) { - return event.pageY; - } - - return event.clientY + (0, _element.getWindowScrollTop)(); -} - -/** - * Check if provided event was triggered by clicking the right mouse button. - * - * @param {Event} event DOM Event. - * @returns {Boolean} - */ -function isRightClick(event) { - return event.button === 2; -} - -/** - * Check if provided event was triggered by clicking the left mouse button. - * - * @param {Event} event DOM Event. - * @returns {Boolean} - */ -function isLeftClick(event) { - return event.button === 0; -} - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.getRegisteredRenderers = exports.getRegisteredRendererNames = exports.hasRenderer = exports.getRenderer = exports.registerRenderer = undefined; - -var _staticRegister2 = __webpack_require__(63); - -var _staticRegister3 = _interopRequireDefault(_staticRegister2); - -var _cellDecorator = __webpack_require__(220); - -var _cellDecorator2 = _interopRequireDefault(_cellDecorator); - -var _autocompleteRenderer = __webpack_require__(221); - -var _autocompleteRenderer2 = _interopRequireDefault(_autocompleteRenderer); - -var _checkboxRenderer = __webpack_require__(222); - -var _checkboxRenderer2 = _interopRequireDefault(_checkboxRenderer); - -var _htmlRenderer = __webpack_require__(223); - -var _htmlRenderer2 = _interopRequireDefault(_htmlRenderer); - -var _numericRenderer = __webpack_require__(224); - -var _numericRenderer2 = _interopRequireDefault(_numericRenderer); - -var _passwordRenderer = __webpack_require__(225); - -var _passwordRenderer2 = _interopRequireDefault(_passwordRenderer); - -var _textRenderer = __webpack_require__(226); - -var _textRenderer2 = _interopRequireDefault(_textRenderer); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var _staticRegister = (0, _staticRegister3.default)('renderers'), - register = _staticRegister.register, - getItem = _staticRegister.getItem, - hasItem = _staticRegister.hasItem, - getNames = _staticRegister.getNames, - getValues = _staticRegister.getValues; - -register('base', _cellDecorator2.default); -register('autocomplete', _autocompleteRenderer2.default); -register('checkbox', _checkboxRenderer2.default); -register('html', _htmlRenderer2.default); -register('numeric', _numericRenderer2.default); -register('password', _passwordRenderer2.default); -register('text', _textRenderer2.default); - -/** - * Retrieve renderer function. - * - * @param {String} name Renderer identification. - * @returns {Function} Returns renderer function. - */ -function _getItem(name) { - if (typeof name === 'function') { - return name; - } - if (!hasItem(name)) { - throw Error('No registered renderer found under "' + name + '" name'); - } - - return getItem(name); -} - -exports.registerRenderer = register; -exports.getRenderer = _getItem; -exports.hasRenderer = hasItem; -exports.getRegisteredRendererNames = getNames; -exports.getRegisteredRenderers = getValues; - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -var store = __webpack_require__(69)('wks'); -var uid = __webpack_require__(42); -var Symbol = __webpack_require__(11).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; - - -/***/ }), -/* 11 */ -/***/ (function(module, exports) { - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self - // eslint-disable-next-line no-new-func - : Function('return this')(); -if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef - - -/***/ }), -/* 12 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.Viewport = exports.TableRenderer = exports.Table = exports.Settings = exports.Selection = exports.Scroll = exports.Overlays = exports.Event = exports.Core = exports.default = exports.Border = exports.TopLeftCornerOverlay = exports.TopOverlay = exports.LeftOverlay = exports.DebugOverlay = exports.RowFilter = exports.ColumnFilter = exports.CellRange = exports.CellCoords = exports.ViewportRowsCalculator = exports.ViewportColumnsCalculator = undefined; - -__webpack_require__(89); - -__webpack_require__(103); - -__webpack_require__(104); - -__webpack_require__(108); - -__webpack_require__(109); - -__webpack_require__(111); - -__webpack_require__(113); - -__webpack_require__(114); - -__webpack_require__(115); - -__webpack_require__(116); - -__webpack_require__(117); - -__webpack_require__(118); - -__webpack_require__(119); - -__webpack_require__(120); - -__webpack_require__(122); - -__webpack_require__(124); - -__webpack_require__(125); - -__webpack_require__(126); - -__webpack_require__(127); - -__webpack_require__(128); - -__webpack_require__(129); - -__webpack_require__(130); - -__webpack_require__(131); - -__webpack_require__(132); - -__webpack_require__(133); - -__webpack_require__(134); - -__webpack_require__(135); - -__webpack_require__(136); - -__webpack_require__(78); - -__webpack_require__(137); - -__webpack_require__(138); - -__webpack_require__(140); - -__webpack_require__(141); - -__webpack_require__(142); - -__webpack_require__(143); - -__webpack_require__(144); - -__webpack_require__(145); - -__webpack_require__(146); - -__webpack_require__(148); - -__webpack_require__(149); - -__webpack_require__(150); - -__webpack_require__(152); - -__webpack_require__(153); - -__webpack_require__(154); - -var _viewportColumns = __webpack_require__(155); - -var _viewportColumns2 = _interopRequireDefault(_viewportColumns); - -var _viewportRows = __webpack_require__(156); - -var _viewportRows2 = _interopRequireDefault(_viewportRows); - -var _coords = __webpack_require__(49); - -var _coords2 = _interopRequireDefault(_coords); - -var _range = __webpack_require__(79); - -var _range2 = _interopRequireDefault(_range); - -var _column = __webpack_require__(157); - -var _column2 = _interopRequireDefault(_column); - -var _row = __webpack_require__(158); - -var _row2 = _interopRequireDefault(_row); - -var _debug = __webpack_require__(204); - -var _debug2 = _interopRequireDefault(_debug); - -var _left = __webpack_require__(206); - -var _left2 = _interopRequireDefault(_left); - -var _top = __webpack_require__(207); - -var _top2 = _interopRequireDefault(_top); - -var _topLeftCorner = __webpack_require__(208); - -var _topLeftCorner2 = _interopRequireDefault(_topLeftCorner); - -var _border = __webpack_require__(167); - -var _border2 = _interopRequireDefault(_border); - -var _core = __webpack_require__(159); - -var _core2 = _interopRequireDefault(_core); - -var _event = __webpack_require__(160); - -var _event2 = _interopRequireDefault(_event); - -var _overlays = __webpack_require__(161); - -var _overlays2 = _interopRequireDefault(_overlays); - -var _scroll = __webpack_require__(162); - -var _scroll2 = _interopRequireDefault(_scroll); - -var _selection = __webpack_require__(209); - -var _selection2 = _interopRequireDefault(_selection); - -var _settings = __webpack_require__(163); - -var _settings2 = _interopRequireDefault(_settings); - -var _table = __webpack_require__(164); - -var _table2 = _interopRequireDefault(_table); - -var _tableRenderer = __webpack_require__(165); - -var _tableRenderer2 = _interopRequireDefault(_tableRenderer); - -var _viewport = __webpack_require__(166); - -var _viewport2 = _interopRequireDefault(_viewport); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.ViewportColumnsCalculator = _viewportColumns2.default; -exports.ViewportRowsCalculator = _viewportRows2.default; -exports.CellCoords = _coords2.default; -exports.CellRange = _range2.default; -exports.ColumnFilter = _column2.default; -exports.RowFilter = _row2.default; -exports.DebugOverlay = _debug2.default; -exports.LeftOverlay = _left2.default; -exports.TopOverlay = _top2.default; -exports.TopLeftCornerOverlay = _topLeftCorner2.default; -exports.Border = _border2.default; -exports.default = _core2.default; -exports.Core = _core2.default; -exports.Event = _event2.default; -exports.Overlays = _overlays2.default; -exports.Scroll = _scroll2.default; -exports.Selection = _selection2.default; -exports.Settings = _settings2.default; -exports.Table = _table2.default; -exports.TableRenderer = _tableRenderer2.default; -exports.Viewport = _viewport2.default; - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _object = __webpack_require__(1); - -var _array = __webpack_require__(2); - -var _recordTranslator = __webpack_require__(172); - -var _plugins = __webpack_require__(5); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var privatePool = new WeakMap(); -var initializedPlugins = null; - -/** - * @private - */ - -var BasePlugin = function () { - /** - * @param {Object} hotInstance Handsontable instance. - */ - function BasePlugin(hotInstance) { - var _this = this; - - _classCallCheck(this, BasePlugin); - - /** - * Handsontable instance. - * - * @type {Core} - */ - (0, _object.defineGetter)(this, 'hot', hotInstance, { - writable: false - }); - (0, _object.defineGetter)(this, 't', (0, _recordTranslator.getTranslator)(hotInstance), { - writable: false - }); - - privatePool.set(this, { hooks: {} }); - initializedPlugins = null; - - this.pluginName = null; - this.pluginsInitializedCallbacks = []; - this.isPluginsReady = false; - this.enabled = false; - this.initialized = false; - - this.hot.addHook('afterPluginsInitialized', function () { - return _this.onAfterPluginsInitialized(); - }); - this.hot.addHook('afterUpdateSettings', function () { - return _this.onUpdateSettings(); - }); - this.hot.addHook('beforeInit', function () { - return _this.init(); - }); - } - - _createClass(BasePlugin, [{ - key: 'init', - value: function init() { - this.pluginName = (0, _plugins.getPluginName)(this.hot, this); - - if (this.isEnabled && this.isEnabled()) { - this.enablePlugin(); - } - if (!initializedPlugins) { - initializedPlugins = (0, _plugins.getRegistredPluginNames)(this.hot); - } - if (initializedPlugins.indexOf(this.pluginName) >= 0) { - initializedPlugins.splice(initializedPlugins.indexOf(this.pluginName), 1); - } - if (!initializedPlugins.length) { - this.hot.runHooks('afterPluginsInitialized'); - } - this.initialized = true; - } - - /** - * Enable plugin for this Handsontable instance. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - this.enabled = true; - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - if (this.eventManager) { - this.eventManager.clear(); - } - this.clearHooks(); - this.enabled = false; - } - - /** - * Add listener to plugin hooks system. - * - * @param {String} name - * @param {Function} callback - */ - - }, { - key: 'addHook', - value: function addHook(name, callback) { - privatePool.get(this).hooks[name] = privatePool.get(this).hooks[name] || []; - - var hooks = privatePool.get(this).hooks[name]; - - this.hot.addHook(name, callback); - hooks.push(callback); - privatePool.get(this).hooks[name] = hooks; - } - - /** - * Remove all hooks listeners by hook name. - * - * @param {String} name - */ - - }, { - key: 'removeHooks', - value: function removeHooks(name) { - var _this2 = this; - - (0, _array.arrayEach)(privatePool.get(this).hooks[name] || [], function (callback) { - _this2.hot.removeHook(name, callback); - }); - } - - /** - * Clear all hooks. - */ - - }, { - key: 'clearHooks', - value: function clearHooks() { - var _this3 = this; - - var hooks = privatePool.get(this).hooks; - - (0, _object.objectEach)(hooks, function (callbacks, name) { - return _this3.removeHooks(name); - }); - hooks.length = 0; - } - - /** - * Register function which will be immediately called after all plugins initialized. - * - * @param {Function} callback - */ - - }, { - key: 'callOnPluginsReady', - value: function callOnPluginsReady(callback) { - if (this.isPluginsReady) { - callback(); - } else { - this.pluginsInitializedCallbacks.push(callback); - } - } - - /** - * On after plugins initialized listener. - * - * @private - */ - - }, { - key: 'onAfterPluginsInitialized', - value: function onAfterPluginsInitialized() { - (0, _array.arrayEach)(this.pluginsInitializedCallbacks, function (callback) { - return callback(); - }); - this.pluginsInitializedCallbacks.length = 0; - this.isPluginsReady = true; - } - - /** - * On update settings listener. - * - * @private - */ - - }, { - key: 'onUpdateSettings', - value: function onUpdateSettings() { - if (this.isEnabled) { - if (this.enabled && !this.isEnabled()) { - this.disablePlugin(); - } - if (!this.enabled && this.isEnabled()) { - this.enablePlugin(); - } - if (this.enabled && this.isEnabled()) { - this.updatePlugin(); - } - } - } - - /** - * Updates the plugin to use the latest options you have specified. - * - * @private - */ - - }, { - key: 'updatePlugin', - value: function updatePlugin() {} - - /** - * Destroy plugin. - */ - - }, { - key: 'destroy', - value: function destroy() { - var _this4 = this; - - if (this.eventManager) { - this.eventManager.destroy(); - } - this.clearHooks(); - - (0, _object.objectEach)(this, function (value, property) { - if (property !== 'hot' && property !== 't') { - _this4[property] = null; - } - }); - delete this.t; - delete this.hot; - } - }]); - - return BasePlugin; -}(); - -exports.default = BasePlugin; - -/***/ }), -/* 14 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; - - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.getRegisteredEditors = exports.getRegisteredEditorNames = exports.hasEditor = exports.getEditorInstance = exports.getEditor = exports.registerEditor = undefined; -exports.RegisteredEditor = RegisteredEditor; -exports._getEditorInstance = _getEditorInstance; - -var _staticRegister2 = __webpack_require__(63); - -var _staticRegister3 = _interopRequireDefault(_staticRegister2); - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _baseEditor = __webpack_require__(41); - -var _baseEditor2 = _interopRequireDefault(_baseEditor); - -var _autocompleteEditor = __webpack_require__(168); - -var _autocompleteEditor2 = _interopRequireDefault(_autocompleteEditor); - -var _checkboxEditor = __webpack_require__(211); - -var _checkboxEditor2 = _interopRequireDefault(_checkboxEditor); - -var _dateEditor = __webpack_require__(212); - -var _dateEditor2 = _interopRequireDefault(_dateEditor); - -var _dropdownEditor = __webpack_require__(215); - -var _dropdownEditor2 = _interopRequireDefault(_dropdownEditor); - -var _handsontableEditor = __webpack_require__(169); - -var _handsontableEditor2 = _interopRequireDefault(_handsontableEditor); - -var _mobileTextEditor = __webpack_require__(216); - -var _mobileTextEditor2 = _interopRequireDefault(_mobileTextEditor); - -var _numericEditor = __webpack_require__(217); - -var _numericEditor2 = _interopRequireDefault(_numericEditor); - -var _passwordEditor = __webpack_require__(218); - -var _passwordEditor2 = _interopRequireDefault(_passwordEditor); - -var _selectEditor = __webpack_require__(219); - -var _selectEditor2 = _interopRequireDefault(_selectEditor); - -var _textEditor = __webpack_require__(51); - -var _textEditor2 = _interopRequireDefault(_textEditor); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var registeredEditorClasses = new WeakMap(); /** - * Utility to register editors and common namespace for keeping reference to all editor classes - */ - -var _staticRegister = (0, _staticRegister3.default)('editors'), - register = _staticRegister.register, - getItem = _staticRegister.getItem, - hasItem = _staticRegister.hasItem, - getNames = _staticRegister.getNames, - getValues = _staticRegister.getValues; - -_register('base', _baseEditor2.default); -_register('autocomplete', _autocompleteEditor2.default); -_register('checkbox', _checkboxEditor2.default); -_register('date', _dateEditor2.default); -_register('dropdown', _dropdownEditor2.default); -_register('handsontable', _handsontableEditor2.default); -_register('mobile', _mobileTextEditor2.default); -_register('numeric', _numericEditor2.default); -_register('password', _passwordEditor2.default); -_register('select', _selectEditor2.default); -_register('text', _textEditor2.default); - -function RegisteredEditor(editorClass) { - var instances = {}; - var Clazz = editorClass; - - this.getConstructor = function () { - return editorClass; - }; - - this.getInstance = function (hotInstance) { - if (!(hotInstance.guid in instances)) { - instances[hotInstance.guid] = new Clazz(hotInstance); - } - - return instances[hotInstance.guid]; - }; - - _pluginHooks2.default.getSingleton().add('afterDestroy', function () { - instances = {}; - }); -} - -/** - * Returns instance (singleton) of editor class. - * - * @param {String} name Name of an editor under which it has been stored. - * @param {Object} hotInstance Instance of Handsontable. - * @returns {Function} Returns instance of editor. - */ -function _getEditorInstance(name, hotInstance) { - var editor = void 0; - - if (typeof name === 'function') { - if (!registeredEditorClasses.get(name)) { - _register(null, name); - } - editor = registeredEditorClasses.get(name); - } else if (typeof name === 'string') { - editor = getItem(name); - } else { - throw Error('Only strings and functions can be passed as "editor" parameter'); - } - - if (!editor) { - throw Error('No editor registered under name "' + name + '"'); - } - - return editor.getInstance(hotInstance); -} - -/** - * Retrieve editor class. - * - * @param {String} name Editor identification. - * @returns {Function} Returns editor class. - */ -function _getItem(name) { - if (!hasItem(name)) { - throw Error('No registered editor found under "' + name + '" name'); - } - - return getItem(name).getConstructor(); -} - -/** - * Register editor class under specified name. - * - * @param {String} name Editor identification. - * @param {Function} editorClass Editor class. - */ -function _register(name, editorClass) { - var editorWrapper = new RegisteredEditor(editorClass); - - if (typeof name === 'string') { - register(name, editorWrapper); - } - registeredEditorClasses.set(editorClass, editorWrapper); -} - -exports.registerEditor = _register; -exports.getEditor = _getItem; -exports.getEditorInstance = _getEditorInstance; -exports.hasEditor = hasItem; -exports.getRegisteredEditorNames = getNames; -exports.getRegisteredEditors = getValues; - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(14); -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; -}; - - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.KEY_CODES = undefined; -exports.isPrintableChar = isPrintableChar; -exports.isMetaKey = isMetaKey; -exports.isCtrlKey = isCtrlKey; -exports.isKey = isKey; - -var _array = __webpack_require__(2); - -var KEY_CODES = exports.KEY_CODES = { - MOUSE_LEFT: 1, - MOUSE_RIGHT: 3, - MOUSE_MIDDLE: 2, - BACKSPACE: 8, - COMMA: 188, - INSERT: 45, - DELETE: 46, - END: 35, - ENTER: 13, - ESCAPE: 27, - CONTROL_LEFT: 91, - COMMAND_LEFT: 17, - COMMAND_RIGHT: 93, - ALT: 18, - HOME: 36, - PAGE_DOWN: 34, - PAGE_UP: 33, - PERIOD: 190, - SPACE: 32, - SHIFT: 16, - CAPS_LOCK: 20, - TAB: 9, - ARROW_RIGHT: 39, - ARROW_LEFT: 37, - ARROW_UP: 38, - ARROW_DOWN: 40, - F1: 112, - F2: 113, - F3: 114, - F4: 115, - F5: 116, - F6: 117, - F7: 118, - F8: 119, - F9: 120, - F10: 121, - F11: 122, - F12: 123, - A: 65, - X: 88, - C: 67, - V: 86 -}; - -/** - * Returns true if keyCode represents a printable character. - * - * @param {Number} keyCode - * @returns {Boolean} - */ -function isPrintableChar(keyCode) { - return keyCode == 32 || // space - keyCode >= 48 && keyCode <= 57 || // 0-9 - keyCode >= 96 && keyCode <= 111 || // numpad - keyCode >= 186 && keyCode <= 192 || // ;=,-./` - keyCode >= 219 && keyCode <= 222 || // []{}\|"' - keyCode >= 226 || // special chars (229 for Asian chars) - keyCode >= 65 && keyCode <= 90; // a-z -} - -/** - * @param {Number} keyCode - * @returns {Boolean} - */ -function isMetaKey(keyCode) { - var metaKeys = [KEY_CODES.ARROW_DOWN, KEY_CODES.ARROW_UP, KEY_CODES.ARROW_LEFT, KEY_CODES.ARROW_RIGHT, KEY_CODES.HOME, KEY_CODES.END, KEY_CODES.DELETE, KEY_CODES.BACKSPACE, KEY_CODES.F1, KEY_CODES.F2, KEY_CODES.F3, KEY_CODES.F4, KEY_CODES.F5, KEY_CODES.F6, KEY_CODES.F7, KEY_CODES.F8, KEY_CODES.F9, KEY_CODES.F10, KEY_CODES.F11, KEY_CODES.F12, KEY_CODES.TAB, KEY_CODES.PAGE_DOWN, KEY_CODES.PAGE_UP, KEY_CODES.ENTER, KEY_CODES.ESCAPE, KEY_CODES.SHIFT, KEY_CODES.CAPS_LOCK, KEY_CODES.ALT]; - - return metaKeys.indexOf(keyCode) !== -1; -} - -/** - * @param {Number} keyCode - * @returns {Boolean} - */ -function isCtrlKey(keyCode) { - return [KEY_CODES.CONTROL_LEFT, 224, KEY_CODES.COMMAND_LEFT, KEY_CODES.COMMAND_RIGHT].indexOf(keyCode) !== -1; -} - -/** - * @param {Number} keyCode - * @param {String} baseCode - * @returns {Boolean} - */ -function isKey(keyCode, baseCode) { - var keys = baseCode.split('|'); - var result = false; - - (0, _array.arrayEach)(keys, function (key) { - if (keyCode === KEY_CODES[key]) { - result = true; - - return false; - } - }); - - return result; -} - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(16); -var IE8_DOM_DEFINE = __webpack_require__(91); -var toPrimitive = __webpack_require__(65); -var dP = Object.defineProperty; - -exports.f = __webpack_require__(20) ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return dP(O, P, Attributes); - } catch (e) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; - - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.normalizeSelection = normalizeSelection; -exports.isSeparator = isSeparator; -exports.hasSubMenu = hasSubMenu; -exports.isDisabled = isDisabled; -exports.isSelectionDisabled = isSelectionDisabled; -exports.getValidSelection = getValidSelection; -exports.prepareVerticalAlignClass = prepareVerticalAlignClass; -exports.prepareHorizontalAlignClass = prepareHorizontalAlignClass; -exports.getAlignmentClasses = getAlignmentClasses; -exports.align = align; -exports.checkSelectionConsistency = checkSelectionConsistency; -exports.markLabelAsSelected = markLabelAsSelected; -exports.isItemHidden = isItemHidden; -exports.filterSeparators = filterSeparators; - -var _array = __webpack_require__(2); - -var _element = __webpack_require__(0); - -var _separator = __webpack_require__(86); - -function normalizeSelection(selRange) { - return { - start: selRange.getTopLeftCorner(), - end: selRange.getBottomRightCorner() - }; -} - -function isSeparator(cell) { - return (0, _element.hasClass)(cell, 'htSeparator'); -} - -function hasSubMenu(cell) { - return (0, _element.hasClass)(cell, 'htSubmenu'); -} - -function isDisabled(cell) { - return (0, _element.hasClass)(cell, 'htDisabled'); -} - -function isSelectionDisabled(cell) { - return (0, _element.hasClass)(cell, 'htSelectionDisabled'); -} - -function getValidSelection(hot) { - var selected = hot.getSelected(); - - if (!selected) { - return null; - } - if (selected[0] < 0) { - return null; - } - - return selected; -} - -function prepareVerticalAlignClass(className, alignment) { - if (className.indexOf(alignment) != -1) { - return className; - } - className = className.replace('htTop', '').replace('htMiddle', '').replace('htBottom', '').replace(' ', ''); - - className += ' ' + alignment; - - return className; -} - -function prepareHorizontalAlignClass(className, alignment) { - if (className.indexOf(alignment) != -1) { - return className; - } - className = className.replace('htLeft', '').replace('htCenter', '').replace('htRight', '').replace('htJustify', '').replace(' ', ''); - - className += ' ' + alignment; - - return className; -} - -function getAlignmentClasses(range, callback) { - var classes = {}; - - for (var row = range.from.row; row <= range.to.row; row++) { - for (var col = range.from.col; col <= range.to.col; col++) { - if (!classes[row]) { - classes[row] = []; - } - classes[row][col] = callback(row, col); - } - } - - return classes; -} - -function align(range, type, alignment, cellDescriptor, propertySetter) { - if (range.from.row == range.to.row && range.from.col == range.to.col) { - applyAlignClassName(range.from.row, range.from.col, type, alignment, cellDescriptor, propertySetter); - } else { - for (var row = range.from.row; row <= range.to.row; row++) { - for (var col = range.from.col; col <= range.to.col; col++) { - applyAlignClassName(row, col, type, alignment, cellDescriptor, propertySetter); - } - } - } -} - -function applyAlignClassName(row, col, type, alignment, cellDescriptor, propertySetter) { - var cellMeta = cellDescriptor(row, col); - var className = alignment; - - if (cellMeta.className) { - if (type === 'vertical') { - className = prepareVerticalAlignClass(cellMeta.className, alignment); - } else { - className = prepareHorizontalAlignClass(cellMeta.className, alignment); - } - } - - propertySetter(row, col, 'className', className); -} - -function checkSelectionConsistency(range, comparator) { - var result = false; - - if (range) { - range.forAll(function (row, col) { - if (comparator(row, col)) { - result = true; - - return false; - } - }); - } - - return result; -} - -function markLabelAsSelected(label) { - // workaround for https://github.com/handsontable/handsontable/issues/1946 - return '' + String.fromCharCode(10003) + '' + label; -} - -function isItemHidden(item, instance) { - return !item.hidden || !(typeof item.hidden == 'function' && item.hidden.call(instance)); -} - -function shiftSeparators(items, separator) { - var result = items.slice(0); - - for (var i = 0; i < result.length;) { - if (result[i].name === separator) { - result.shift(); - } else { - break; - } - } - return result; -} - -function popSeparators(items, separator) { - var result = items.slice(0); - - result.reverse(); - result = shiftSeparators(result, separator); - result.reverse(); - - return result; -} - -function removeDuplicatedSeparators(items) { - var result = []; - - (0, _array.arrayEach)(items, function (value, index) { - if (index > 0) { - if (result[result.length - 1].name !== value.name) { - result.push(value); - } - } else { - result.push(value); - } - }); - - return result; -} - -function filterSeparators(items) { - var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _separator.KEY; - - var result = items.slice(0); - - result = shiftSeparators(result, separator); - result = popSeparators(result, separator); - result = removeDuplicatedSeparators(result); - - return result; -} - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -// Thank's IE8 for his funny defineProperty -module.exports = !__webpack_require__(23)(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.15 ToLength -var toInteger = __webpack_require__(52); -var min = Math.min; -module.exports = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 -}; - - -/***/ }), -/* 22 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _templateObject = _taggedTemplateLiteral(['\n Your license key of Handsontable Pro has expired.\u200C\u200C\u200C\u200C \n Renew your maintenance plan at https://handsontable.com or downgrade to the previous version of the software.\n '], ['\n Your license key of Handsontable Pro has expired.\u200C\u200C\u200C\u200C\\x20\n Renew your maintenance plan at https://handsontable.com or downgrade to the previous version of the software.\n ']); - -exports.stringify = stringify; -exports.isDefined = isDefined; -exports.isUndefined = isUndefined; -exports.isEmpty = isEmpty; -exports.isRegExp = isRegExp; -exports._injectProductInfo = _injectProductInfo; - -var _moment = __webpack_require__(50); - -var _moment2 = _interopRequireDefault(_moment); - -var _templateLiteralTag = __webpack_require__(205); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - -/** - * Converts any value to string. - * - * @param {*} value - * @returns {String} - */ -function stringify(value) { - var result = void 0; - - switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) { - case 'string': - case 'number': - result = '' + value; - break; - - case 'object': - result = value === null ? '' : value.toString(); - break; - case 'undefined': - result = ''; - break; - default: - result = value.toString(); - break; - } - - return result; -} - -/** - * Checks if given variable is defined. - * - * @param {*} variable Variable to check. - * @returns {Boolean} - */ -function isDefined(variable) { - return typeof variable !== 'undefined'; -} - -/** - * Checks if given variable is undefined. - * - * @param {*} variable Variable to check. - * @returns {Boolean} - */ -function isUndefined(variable) { - return typeof variable === 'undefined'; -} - -/** - * Check if given variable is null, empty string or undefined. - * - * @param {*} variable Variable to check. - * @returns {Boolean} - */ -function isEmpty(variable) { - return variable === null || variable === '' || isUndefined(variable); -} - -/** - * Check if given variable is a regular expression. - * - * @param {*} variable Variable to check. - * @returns {Boolean} - */ -function isRegExp(variable) { - return Object.prototype.toString.call(variable) === '[object RegExp]'; -} - -/* eslint-disable */ -var _m = '\x6C\x65\x6E\x67\x74\x68'; -var _hd = function _hd(v) { - return parseInt(v, 16); -}; -var _pi = function _pi(v) { - return parseInt(v, 10); -}; -var _ss = function _ss(v, s, l) { - return v['\x73\x75\x62\x73\x74\x72'](s, l); -}; -var _cp = function _cp(v) { - return v['\x63\x6F\x64\x65\x50\x6F\x69\x6E\x74\x41\x74'](0) - 65; -}; -var _norm = function _norm(v) { - return ('' + v).replace(/\-/g, ''); -}; -var _extractTime = function _extractTime(v) { - return _hd(_ss(_norm(v), _hd('12'), _cp('\x46'))) / (_hd(_ss(_norm(v), _cp('\x42'), ~~![][_m])) || 9); -}; -var _ignored = function _ignored() { - return typeof location !== 'undefined' && /^([a-z0-9\-]+\.)?\x68\x61\x6E\x64\x73\x6F\x6E\x74\x61\x62\x6C\x65\x2E\x63\x6F\x6D$/i.test(location.host); -}; -var _notified = false; - -function _injectProductInfo(key, element) { - key = _norm(key || ''); - - var warningMessage = ''; - var showDomMessage = true; - var schemaValidity = _checkKeySchema(key); - var ignored = _ignored(); - var trial = isEmpty(key) || key === 'trial'; - - if (trial || schemaValidity) { - if (schemaValidity) { - var releaseTime = Math.floor((0, _moment2.default)('13/09/2017', 'DD/MM/YYYY').toDate().getTime() / 8.64e7); - var keyGenTime = _extractTime(key); - - if (keyGenTime > 45000 || keyGenTime !== parseInt(keyGenTime, 10)) { - warningMessage = 'The license key provided to Handsontable Pro is invalid. Make sure you pass it correctly.'; - } - - if (!warningMessage) { - if (releaseTime > keyGenTime + 1) { - warningMessage = (0, _templateLiteralTag.toSingleLine)(_templateObject); - } - showDomMessage = releaseTime > keyGenTime + 15; - } - } else { - warningMessage = 'Evaluation version of Handsontable Pro. Not licensed for use in a production environment.'; - } - } else { - warningMessage = 'The license key provided to Handsontable Pro is invalid. Make sure you pass it correctly.'; - } - if (ignored) { - warningMessage = false; - showDomMessage = false; - } - - if (warningMessage && !_notified) { - console[trial ? 'info' : 'warn'](warningMessage); - _notified = true; - } - if (showDomMessage && element.parentNode) { - var message = document.createElement('div'); - - message.id = 'hot-display-license-info'; - message.appendChild(document.createTextNode('Evaluation version of Handsontable Pro.')); - message.appendChild(document.createElement('br')); - message.appendChild(document.createTextNode('Not licensed for production use.')); - - element.parentNode.insertBefore(message, element.nextSibling); - } -} - -function _checkKeySchema(v) { - var z = [][_m]; - var p = z; - - if (v[_m] !== _cp('\x5A')) { - return false; - } - - for (var c = '', i = '\x42\x3C\x48\x34\x50\x2B'.split(''), j = _cp(i.shift()); j; j = _cp(i.shift() || 'A')) { - --j < ''[_m] ? p = p | (_pi('' + _pi(_hd(c) + (_hd(_ss(v, Math.abs(j), 2)) + []).padStart(2, '0'))) % _cp('\xA2') || 2) >> 1 : c = _ss(v, j, !j ? 6 : i[_m] === 1 ? 9 : 8); - } - - return p === z; -} -/* eslint-enable */ - -/***/ }), -/* 23 */ -/***/ (function(module, exports) { - -module.exports = function (exec) { - try { - return !!exec(); - } catch (e) { - return true; - } -}; - - -/***/ }), -/* 24 */ -/***/ (function(module, exports) { - -var hasOwnProperty = {}.hasOwnProperty; -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; - - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = __webpack_require__(67); -var defined = __webpack_require__(33); -module.exports = function (it) { - return IObject(defined(it)); -}; - - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.isIE8 = isIE8; -exports.isIE9 = isIE9; -exports.isSafari = isSafari; -exports.isChrome = isChrome; -exports.isMobileBrowser = isMobileBrowser; - -var _isIE8 = !document.createTextNode('test').textContent; - -function isIE8() { - return _isIE8; -} - -var _isIE9 = !!document.documentMode; - -function isIE9() { - return _isIE9; -} - -var _isSafari = /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor); - -function isSafari() { - return _isSafari; -} - -var _isChrome = /Chrome/.test(navigator.userAgent) && /Google/.test(navigator.vendor); - -function isChrome() { - return _isChrome; -} - -function isMobileBrowser(userAgent) { - if (!userAgent) { - userAgent = navigator.userAgent; - } - - return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent) - ); -} - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.getRegisteredValidators = exports.getRegisteredValidatorNames = exports.hasValidator = exports.getValidator = exports.registerValidator = undefined; - -var _staticRegister2 = __webpack_require__(63); - -var _staticRegister3 = _interopRequireDefault(_staticRegister2); - -var _autocompleteValidator = __webpack_require__(227); - -var _autocompleteValidator2 = _interopRequireDefault(_autocompleteValidator); - -var _dateValidator = __webpack_require__(228); - -var _dateValidator2 = _interopRequireDefault(_dateValidator); - -var _numericValidator = __webpack_require__(229); - -var _numericValidator2 = _interopRequireDefault(_numericValidator); - -var _timeValidator = __webpack_require__(230); - -var _timeValidator2 = _interopRequireDefault(_timeValidator); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var _staticRegister = (0, _staticRegister3.default)('validators'), - register = _staticRegister.register, - getItem = _staticRegister.getItem, - hasItem = _staticRegister.hasItem, - getNames = _staticRegister.getNames, - getValues = _staticRegister.getValues; - -register('autocomplete', _autocompleteValidator2.default); -register('date', _dateValidator2.default); -register('numeric', _numericValidator2.default); -register('time', _timeValidator2.default); - -/** - * Retrieve validator function. - * - * @param {String} name Validator identification. - * @returns {Function} Returns validator function. - */ -function _getItem(name) { - if (typeof name === 'function') { - return name; - } - if (!hasItem(name)) { - throw Error('No registered validator found under "' + name + '" name'); - } - - return getItem(name); -} - -exports.registerValidator = register; -exports.getValidator = _getItem; -exports.hasValidator = hasItem; -exports.getRegisteredValidatorNames = getNames; -exports.getRegisteredValidators = getValues; - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(11); -var hide = __webpack_require__(29); -var has = __webpack_require__(24); -var SRC = __webpack_require__(42)('src'); -var TO_STRING = 'toString'; -var $toString = Function[TO_STRING]; -var TPL = ('' + $toString).split(TO_STRING); - -__webpack_require__(44).inspectSource = function (it) { - return $toString.call(it); -}; - -(module.exports = function (O, key, val, safe) { - var isFunction = typeof val == 'function'; - if (isFunction) has(val, 'name') || hide(val, 'name', key); - if (O[key] === val) return; - if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); - if (O === global) { - O[key] = val; - } else if (!safe) { - delete O[key]; - hide(O, key, val); - } else if (O[key]) { - O[key] = val; - } else { - hide(O, key, val); - } -// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative -})(Function.prototype, TO_STRING, function toString() { - return typeof this == 'function' && this[SRC] || $toString.call(this); -}); - - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(18); -var createDesc = __webpack_require__(43); -module.exports = __webpack_require__(20) ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; - - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -// optional / simple context binding -var aFunction = __webpack_require__(55); -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - - -/***/ }), -/* 31 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _object = __webpack_require__(1); - -var _array = __webpack_require__(2); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _core = __webpack_require__(159); - -var _core2 = _interopRequireDefault(_core); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var registeredOverlays = {}; - -/** - * Creates an overlay over the original Walkontable instance. The overlay renders the clone of the original Walkontable - * and (optionally) implements behavior needed for native horizontal and vertical scrolling. - * - * @class Overlay - */ - -var Overlay = function () { - _createClass(Overlay, null, [{ - key: 'registerOverlay', - - - /** - * Register overlay class. - * - * @param {String} type Overlay type, one of the CLONE_TYPES value - * @param {Overlay} overlayClass Overlay class extended from base overlay class {@link Overlay} - */ - value: function registerOverlay(type, overlayClass) { - if (Overlay.CLONE_TYPES.indexOf(type) === -1) { - throw new Error('Unsupported overlay (' + type + ').'); - } - registeredOverlays[type] = overlayClass; - } - - /** - * Create new instance of overlay type. - * - * @param {String} type Overlay type, one of the CLONE_TYPES value - * @param {Walkontable} wot Walkontable instance - */ - - }, { - key: 'createOverlay', - value: 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} - */ - - }, { - key: 'hasOverlay', - value: 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} - */ - - }, { - key: 'isOverlayTypeOf', - value: function isOverlayTypeOf(overlay, type) { - if (!overlay || !registeredOverlays[type]) { - return false; - } - - return overlay instanceof registeredOverlays[type]; - } - - /** - * @param {Walkontable} wotInstance - */ - - }, { - key: 'CLONE_TOP', - - /** - * @type {String} - */ - get: function get() { - return 'top'; - } - - /** - * @type {String} - */ - - }, { - key: 'CLONE_BOTTOM', - get: function get() { - return 'bottom'; - } - - /** - * @type {String} - */ - - }, { - key: 'CLONE_LEFT', - get: function get() { - return 'left'; - } - - /** - * @type {String} - */ - - }, { - key: 'CLONE_TOP_LEFT_CORNER', - get: function get() { - return 'top_left_corner'; - } - - /** - * @type {String} - */ - - }, { - key: 'CLONE_BOTTOM_LEFT_CORNER', - get: function get() { - return 'bottom_left_corner'; - } - - /** - * @type {String} - */ - - }, { - key: 'CLONE_DEBUG', - get: function get() { - return 'debug'; - } - - /** - * List of all availables clone types - * - * @type {Array} - */ - - }, { - key: 'CLONE_TYPES', - get: function get() { - return [Overlay.CLONE_TOP, Overlay.CLONE_BOTTOM, Overlay.CLONE_LEFT, Overlay.CLONE_TOP_LEFT_CORNER, Overlay.CLONE_BOTTOM_LEFT_CORNER, Overlay.CLONE_DEBUG]; - } - }]); - - function Overlay(wotInstance) { - _classCallCheck(this, Overlay); - - (0, _object.defineGetter)(this, 'wot', wotInstance, { - writable: false - }); - - // legacy support, deprecated in the future - this.instance = this.wot; - - this.type = ''; - this.mainTableScrollableElement = null; - this.TABLE = this.wot.wtTable.TABLE; - this.hider = this.wot.wtTable.hider; - this.spreader = this.wot.wtTable.spreader; - this.holder = this.wot.wtTable.holder; - this.wtRootElement = this.wot.wtTable.wtRootElement; - this.trimmingContainer = (0, _element.getTrimmingContainer)(this.hider.parentNode.parentNode); - this.areElementSizesAdjusted = false; - this.updateStateOfRendering(); - } - - /** - * Update internal state of object with an information about the need of full rendering of the overlay. - * - * @returns {Boolean} Returns `true` if the state has changed since the last check. - */ - - - _createClass(Overlay, [{ - key: 'updateStateOfRendering', - value: function updateStateOfRendering() { - var previousState = this.needFullRender; - - this.needFullRender = this.shouldBeRendered(); - - var changed = previousState !== this.needFullRender; - - if (changed && !this.needFullRender) { - this.reset(); - } - - return changed; - } - - /** - * Checks if overlay should be fully rendered - * - * @returns {Boolean} - */ - - }, { - key: 'shouldBeRendered', - value: function shouldBeRendered() { - return true; - } - - /** - * Update the trimming container. - */ - - }, { - key: 'updateTrimmingContainer', - value: function updateTrimmingContainer() { - this.trimmingContainer = (0, _element.getTrimmingContainer)(this.hider.parentNode.parentNode); - } - - /** - * Update the main scrollable element. - */ - - }, { - key: 'updateMainScrollableElement', - value: function updateMainScrollableElement() { - this.mainTableScrollableElement = (0, _element.getScrollableElement)(this.wot.wtTable.TABLE); - } - - /** - * Make a clone of table for overlay - * - * @param {String} direction Can be `Overlay.CLONE_TOP`, `Overlay.CLONE_LEFT`, - * `Overlay.CLONE_TOP_LEFT_CORNER`, `Overlay.CLONE_DEBUG` - * @returns {Walkontable} - */ - - }, { - key: 'makeClone', - value: function makeClone(direction) { - if (Overlay.CLONE_TYPES.indexOf(direction) === -1) { - throw new Error('Clone type "' + direction + '" is not supported.'); - } - var clone = document.createElement('DIV'); - var clonedTable = document.createElement('TABLE'); - - clone.className = 'ht_clone_' + direction + ' handsontable'; - clone.style.position = 'absolute'; - clone.style.top = 0; - clone.style.left = 0; - clone.style.overflow = 'hidden'; - - clonedTable.className = this.wot.wtTable.TABLE.className; - clone.appendChild(clonedTable); - - this.type = direction; - this.wot.wtTable.wtRootElement.parentNode.appendChild(clone); - - var preventOverflow = this.wot.getSetting('preventOverflow'); - - if (preventOverflow === true || preventOverflow === 'horizontal' && this.type === Overlay.CLONE_TOP || preventOverflow === 'vertical' && this.type === Overlay.CLONE_LEFT) { - this.mainTableScrollableElement = window; - } else { - this.mainTableScrollableElement = (0, _element.getScrollableElement)(this.wot.wtTable.TABLE); - } - - return new _core2.default({ - cloneSource: this.wot, - cloneOverlay: this, - table: clonedTable - }); - } - - /** - * Refresh/Redraw overlay - * - * @param {Boolean} [fastDraw=false] - */ - - }, { - key: 'refresh', - value: function refresh() { - var fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - // When hot settings are changed we allow to refresh overlay once before blocking - var nextCycleRenderFlag = this.shouldBeRendered(); - - if (this.clone && (this.needFullRender || nextCycleRenderFlag)) { - this.clone.draw(fastDraw); - } - this.needFullRender = nextCycleRenderFlag; - } - - /** - * Reset overlay styles to initial values. - */ - - }, { - key: 'reset', - value: function reset() { - if (!this.clone) { - return; - } - var holder = this.clone.wtTable.holder; - var hider = this.clone.wtTable.hider; - var holderStyle = holder.style; - var hidderStyle = hider.style; - var rootStyle = holder.parentNode.style; - - (0, _array.arrayEach)([holderStyle, hidderStyle, rootStyle], function (style) { - style.width = ''; - style.height = ''; - }); - } - - /** - * Destroy overlay instance - */ - - }, { - key: 'destroy', - value: function destroy() { - new _eventManager2.default(this.clone).destroy(); - } - }]); - - return Overlay; -}(); - -exports.default = Overlay; - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.toUpperCaseFirst = toUpperCaseFirst; -exports.equalsIgnoreCase = equalsIgnoreCase; -exports.randomString = randomString; -exports.isPercentValue = isPercentValue; -exports.substitute = substitute; -exports.stripTags = stripTags; - -var _mixed = __webpack_require__(22); - -var _number = __webpack_require__(6); - -/** - * Convert string to upper case first letter. - * - * @param {String} string String to convert. - * @returns {String} - */ -function toUpperCaseFirst(string) { - return string[0].toUpperCase() + string.substr(1); -} - -/** - * Compare strings case insensitively. - * - * @param {...String} strings Strings to compare. - * @returns {Boolean} - */ -function equalsIgnoreCase() { - var unique = []; - - for (var _len = arguments.length, strings = Array(_len), _key = 0; _key < _len; _key++) { - strings[_key] = arguments[_key]; - } - - var length = strings.length; - - while (length--) { - var string = (0, _mixed.stringify)(strings[length]).toLowerCase(); - - if (unique.indexOf(string) === -1) { - unique.push(string); - } - } - - return unique.length === 1; -} - -/** - * Generates a random hex string. Used as namespace for Handsontable instance events. - * - * @return {String} Returns 16-long character random string (eq. `'92b1bfc74ec4'`). - */ -function randomString() { - function s4() { - return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1); - } - - return s4() + s4() + s4() + s4(); -} - -/** - * Checks if value is valid percent. - * - * @param {String} value - * @returns {Boolean} - */ -function isPercentValue(value) { - return (/^([0-9][0-9]?%$)|(^100%$)/.test(value) - ); -} - -/** - * Substitute strings placed beetwen square brackets into value defined in `variables` object. String names defined in - * square brackets must be the same as property name of `variables` object. - * - * @param {String} template Template string. - * @param {Object} variables Object which contains all available values which can be injected into template. - * @returns {String} - */ -function substitute(template) { - var variables = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - return ('' + template).replace(/(?:\\)?\[([^[\]]+)]/g, function (match, name) { - if (match.charAt(0) === '\\') { - return match.substr(1, match.length - 1); - } - - return variables[name] === void 0 ? '' : variables[name]; - }); -} - -var STRIP_TAGS_REGEX = /<\/?\w+\/?>|<\w+[\s|/][^>]*>/gi; - -/** - * Strip any HTML tag from the string. - * - * @param {String} string String to cut HTML from. - * @return {String} - */ -function stripTags(string) { - string += ''; - - return string.replace(STRIP_TAGS_REGEX, ''); -} - -/***/ }), -/* 33 */ -/***/ (function(module, exports) { - -// 7.2.1 RequireObjectCoercible(argument) -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; - - -/***/ }), -/* 34 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.requestAnimationFrame = requestAnimationFrame; -exports.cancelAnimationFrame = cancelAnimationFrame; -exports.isTouchSupported = isTouchSupported; -exports.isWebComponentSupportedNatively = isWebComponentSupportedNatively; -exports.hasCaptionProblem = hasCaptionProblem; -exports.getComparisonFunction = getComparisonFunction; -// https://gist.github.com/paulirish/1579671 -var lastTime = 0; -var vendors = ['ms', 'moz', 'webkit', 'o']; -var _requestAnimationFrame = window.requestAnimationFrame; -var _cancelAnimationFrame = window.cancelAnimationFrame; - -for (var x = 0; x < vendors.length && !_requestAnimationFrame; ++x) { - _requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']; - _cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame']; -} - -if (!_requestAnimationFrame) { - _requestAnimationFrame = function _requestAnimationFrame(callback) { - var currTime = new Date().getTime(); - var timeToCall = Math.max(0, 16 - (currTime - lastTime)); - var id = window.setTimeout(function () { - callback(currTime + timeToCall); - }, timeToCall); - lastTime = currTime + timeToCall; - - return id; - }; -} - -if (!_cancelAnimationFrame) { - _cancelAnimationFrame = function _cancelAnimationFrame(id) { - clearTimeout(id); - }; -} - -/** - * Polyfill for requestAnimationFrame - * - * @param {Function} callback - * @returns {Number} - */ -function requestAnimationFrame(callback) { - return _requestAnimationFrame.call(window, callback); -} - -/** - * Polyfill for cancelAnimationFrame - * - * @param {Number} id - */ -function cancelAnimationFrame(id) { - _cancelAnimationFrame.call(window, id); -} - -function isTouchSupported() { - return 'ontouchstart' in window; -} - -/** - * Checks if browser is support web components natively - * - * @returns {Boolean} - */ -function isWebComponentSupportedNatively() { - var test = document.createElement('div'); - - return !!(test.createShadowRoot && test.createShadowRoot.toString().match(/\[native code\]/)); -} - -var _hasCaptionProblem; - -function detectCaptionProblem() { - var TABLE = document.createElement('TABLE'); - TABLE.style.borderSpacing = 0; - TABLE.style.borderWidth = 0; - TABLE.style.padding = 0; - var TBODY = document.createElement('TBODY'); - TABLE.appendChild(TBODY); - TBODY.appendChild(document.createElement('TR')); - TBODY.firstChild.appendChild(document.createElement('TD')); - TBODY.firstChild.firstChild.innerHTML = 't
t'; - - var CAPTION = document.createElement('CAPTION'); - CAPTION.innerHTML = 'c
c
c
c'; - CAPTION.style.padding = 0; - CAPTION.style.margin = 0; - TABLE.insertBefore(CAPTION, TBODY); - - document.body.appendChild(TABLE); - _hasCaptionProblem = TABLE.offsetHeight < 2 * TABLE.lastChild.offsetHeight; // boolean - document.body.removeChild(TABLE); -} - -function hasCaptionProblem() { - if (_hasCaptionProblem === void 0) { - detectCaptionProblem(); - } - - return _hasCaptionProblem; -} - -var comparisonFunction = void 0; - -/** - * Get string comparison function for sorting purposes. It supports multilingual string comparison base on Internationalization API. - * - * @param {String} [language] - * @param {Object} [options] - * @returns {*} - */ -function getComparisonFunction(language) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - if (comparisonFunction) { - return comparisonFunction; - } - - if ((typeof Intl === 'undefined' ? 'undefined' : _typeof(Intl)) === 'object') { - comparisonFunction = new Intl.Collator(language, options).compare; - } else if (typeof String.prototype.localeCompare === 'function') { - comparisonFunction = function comparisonFunction(a, b) { - return ('' + a).localeCompare(b); - }; - } else { - comparisonFunction = function comparisonFunction(a, b) { - if (a === b) { - return 0; - } - - return a > b ? -1 : 1; - }; - } - - return comparisonFunction; -} - -/***/ }), -/* 35 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.isFunction = isFunction; -exports.throttle = throttle; -exports.throttleAfterHits = throttleAfterHits; -exports.debounce = debounce; -exports.pipe = pipe; -exports.partial = partial; -exports.curry = curry; -exports.curryRight = curryRight; - -var _array = __webpack_require__(2); - -/** - * Checks if given variable is function. - * - * @param {*} func Variable to check. - * @returns {Boolean} - */ -function isFunction(func) { - return typeof func === 'function'; -} - -/** - * Creates throttle function that enforces a maximum number of times a function (`func`) can be called over time (`wait`). - * - * @param {Function} func Function to invoke. - * @param {Number} wait Delay in miliseconds. - * @returns {Function} - */ -function throttle(func) { - var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200; - - var lastCalled = 0; - var result = { - lastCallThrottled: true - }; - var lastTimer = null; - - function _throttle() { - var _this = this; - - var args = arguments; - var stamp = Date.now(); - var needCall = false; - - result.lastCallThrottled = true; - - if (!lastCalled) { - lastCalled = stamp; - needCall = true; - } - var remaining = wait - (stamp - lastCalled); - - if (needCall) { - result.lastCallThrottled = false; - func.apply(this, args); - } else { - if (lastTimer) { - clearTimeout(lastTimer); - } - lastTimer = setTimeout(function () { - result.lastCallThrottled = false; - func.apply(_this, args); - lastCalled = 0; - lastTimer = void 0; - }, remaining); - } - - return result; - } - - return _throttle; -} - -/** - * Creates throttle function that enforces a maximum number of times a function (`func`) can be called over - * time (`wait`) after specified hits. - * - * @param {Function} func Function to invoke. - * @param {Number} wait Delay in miliseconds. - * @param {Number} hits Number of hits after throttling will be applied. - * @returns {Function} - */ -function throttleAfterHits(func) { - var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200; - var hits = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10; - - var funcThrottle = throttle(func, wait); - var remainHits = hits; - - function _clearHits() { - remainHits = hits; - } - function _throttleAfterHits() { - if (remainHits) { - remainHits--; - - return func.apply(this, arguments); - } - - return funcThrottle.apply(this, arguments); - } - _throttleAfterHits.clearHits = _clearHits; - - return _throttleAfterHits; -} - -/** - * Creates debounce function that enforces a function (`func`) not be called again until a certain amount of time (`wait`) - * has passed without it being called. - * - * @param {Function} func Function to invoke. - * @param {Number} wait Delay in milliseconds. - * @returns {Function} - */ -function debounce(func) { - var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200; - - var lastTimer = null; - var result = void 0; - - function _debounce() { - var _this2 = this; - - var args = arguments; - - if (lastTimer) { - clearTimeout(lastTimer); - } - lastTimer = setTimeout(function () { - result = func.apply(_this2, args); - }, wait); - - return result; - } - - return _debounce; -} - -/** - * Creates the function that returns the result of calling the given functions. Result of the first function is passed to - * the second as an argument and so on. Only first function in the chain can handle multiple arguments. - * - * @param {Function} functions Functions to compose. - * @returns {Function} - */ -function pipe() { - for (var _len = arguments.length, functions = Array(_len), _key = 0; _key < _len; _key++) { - functions[_key] = arguments[_key]; - } - - var firstFunc = functions[0], - restFunc = functions.slice(1); - - - return function _pipe() { - return (0, _array.arrayReduce)(restFunc, function (acc, fn) { - return fn(acc); - }, firstFunc.apply(this, arguments)); - }; -} - -/** - * Creates the function that returns the function with cached arguments. - * - * @param {Function} func Function to partialization. - * @param {Array} params Function arguments to cache. - * @returns {Function} - */ -function partial(func) { - for (var _len2 = arguments.length, params = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - params[_key2 - 1] = arguments[_key2]; - } - - return function _partial() { - for (var _len3 = arguments.length, restParams = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - restParams[_key3] = arguments[_key3]; - } - - return func.apply(this, params.concat(restParams)); - }; -} - -/** - * Creates the functions that returns the function with cached arguments. If count if passed arguments will be matched - * to the arguments defined in `func` then function will be invoked. - * Arguments are added to the stack in direction from the left to the right. - * - * @example - * ``` - * var replace = curry(function(find, replace, string) { - * return string.replace(find, replace); - * }); - * - * // returns function with bounded first argument - * var replace = replace('foo') - * - * // returns replaced string - all arguments was passed so function was invoked - * replace('bar', 'Some test with foo...'); - * - * ``` - * - * @param {Function} func Function to currying. - * @returns {Function} - */ -function curry(func) { - var argsLength = func.length; - - function given(argsSoFar) { - return function _curry() { - for (var _len4 = arguments.length, params = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - params[_key4] = arguments[_key4]; - } - - var passedArgsSoFar = argsSoFar.concat(params); - var result = void 0; - - if (passedArgsSoFar.length >= argsLength) { - result = func.apply(this, passedArgsSoFar); - } else { - result = given(passedArgsSoFar); - } - - return result; - }; - } - - return given([]); -} - -/** - * Creates the functions that returns the function with cached arguments. If count if passed arguments will be matched - * to the arguments defined in `func` then function will be invoked. - * Arguments are added to the stack in direction from the right to the left. - * - * @example - * ``` - * var replace = curry(function(find, replace, string) { - * return string.replace(find, replace); - * }); - * - * // returns function with bounded first argument - * var replace = replace('Some test with foo...') - * - * // returns replaced string - all arguments was passed so function was invoked - * replace('bar', 'foo'); - * - * ``` - * - * @param {Function} func Function to currying. - * @returns {Function} - */ -function curryRight(func) { - var argsLength = func.length; - - function given(argsSoFar) { - return function _curry() { - for (var _len5 = arguments.length, params = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - params[_key5] = arguments[_key5]; - } - - var passedArgsSoFar = argsSoFar.concat(params.reverse()); - var result = void 0; - - if (passedArgsSoFar.length >= argsLength) { - result = func.apply(this, passedArgsSoFar); - } else { - result = given(passedArgsSoFar); - } - - return result; - }; - } - - return given([]); -} - -/***/ }), -/* 36 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = __webpack_require__(92); -var enumBugKeys = __webpack_require__(70); - -module.exports = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); -}; - - -/***/ }), -/* 37 */ -/***/ (function(module, exports) { - -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; - - -/***/ }), -/* 38 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.13 ToObject(argument) -var defined = __webpack_require__(33); -module.exports = function (it) { - return Object(defined(it)); -}; - - -/***/ }), -/* 39 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(14); -module.exports = function (it, TYPE) { - if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!'); - return it; -}; - - -/***/ }), -/* 40 */ -/***/ (function(module, exports, __webpack_require__) { - -// 22.1.3.31 Array.prototype[@@unscopables] -var UNSCOPABLES = __webpack_require__(10)('unscopables'); -var ArrayProto = Array.prototype; -if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(29)(ArrayProto, UNSCOPABLES, {}); -module.exports = function (key) { - ArrayProto[UNSCOPABLES][key] = true; -}; - - -/***/ }), -/* 41 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.EditorState = undefined; - -var _src = __webpack_require__(12); - -var _mixed = __webpack_require__(22); - -var EditorState = exports.EditorState = { - VIRGIN: 'STATE_VIRGIN', // before editing - EDITING: 'STATE_EDITING', - WAITING: 'STATE_WAITING', // waiting for async validation - FINISHED: 'STATE_FINISHED' -}; - -function BaseEditor(instance) { - this.instance = instance; - this.state = EditorState.VIRGIN; - - this._opened = false; - this._fullEditMode = false; - this._closeCallback = null; - - this.init(); -} - -BaseEditor.prototype._fireCallbacks = function (result) { - if (this._closeCallback) { - this._closeCallback(result); - this._closeCallback = null; - } -}; - -BaseEditor.prototype.init = function () {}; - -BaseEditor.prototype.getValue = function () { - throw Error('Editor getValue() method unimplemented'); -}; - -BaseEditor.prototype.setValue = function (newValue) { - throw Error('Editor setValue() method unimplemented'); -}; - -BaseEditor.prototype.open = function () { - throw Error('Editor open() method unimplemented'); -}; - -BaseEditor.prototype.close = function () { - throw Error('Editor close() method unimplemented'); -}; - -BaseEditor.prototype.prepare = function (row, col, prop, td, originalValue, cellProperties) { - this.TD = td; - this.row = row; - this.col = col; - this.prop = prop; - this.originalValue = originalValue; - this.cellProperties = cellProperties; - this.state = EditorState.VIRGIN; -}; - -BaseEditor.prototype.extend = function () { - var baseClass = this.constructor; - - function Editor() { - baseClass.apply(this, arguments); - } - - function inherit(Child, Parent) { - function Bridge() {} - Bridge.prototype = Parent.prototype; - Child.prototype = new Bridge(); - Child.prototype.constructor = Child; - - return Child; - } - - return inherit(Editor, baseClass); -}; - -BaseEditor.prototype.saveValue = function (value, ctrlDown) { - var selection = void 0; - var tmp = void 0; - - // if ctrl+enter and multiple cells selected, behave like Excel (finish editing and apply to all cells) - if (ctrlDown) { - selection = this.instance.getSelected(); - - if (selection[0] > selection[2]) { - tmp = selection[0]; - selection[0] = selection[2]; - selection[2] = tmp; - } - if (selection[1] > selection[3]) { - tmp = selection[1]; - selection[1] = selection[3]; - selection[3] = tmp; - } - } else { - selection = [this.row, this.col, null, null]; - } - - this.instance.populateFromArray(selection[0], selection[1], value, selection[2], selection[3], 'edit'); -}; - -BaseEditor.prototype.beginEditing = function (initialValue, event) { - if (this.state != EditorState.VIRGIN) { - return; - } - this.instance.view.scrollViewport(new _src.CellCoords(this.row, this.col)); - this.instance.view.render(); - this.state = EditorState.EDITING; - - initialValue = typeof initialValue == 'string' ? initialValue : this.originalValue; - this.setValue((0, _mixed.stringify)(initialValue)); - - this.open(event); - this._opened = true; - this.focus(); - - // only rerender the selections (FillHandle should disappear when beginediting is triggered) - this.instance.view.render(); - - this.instance.runHooks('afterBeginEditing', this.row, this.col); -}; - -BaseEditor.prototype.finishEditing = function (restoreOriginalValue, ctrlDown, callback) { - var _this = this, - val; - - if (callback) { - var previousCloseCallback = this._closeCallback; - - this._closeCallback = function (result) { - if (previousCloseCallback) { - previousCloseCallback(result); - } - - callback(result); - _this.instance.view.render(); - }; - } - - if (this.isWaiting()) { - return; - } - - if (this.state == EditorState.VIRGIN) { - this.instance._registerTimeout(setTimeout(function () { - _this._fireCallbacks(true); - }, 0)); - - return; - } - - if (this.state == EditorState.EDITING) { - if (restoreOriginalValue) { - this.cancelChanges(); - this.instance.view.render(); - - return; - } - - var value = this.getValue(); - - if (this.instance.getSettings().trimWhitespace) { - // We trim only string values - val = [[typeof value === 'string' ? String.prototype.trim.call(value || '') : value]]; - } else { - val = [[value]]; - } - - this.state = EditorState.WAITING; - this.saveValue(val, ctrlDown); - - if (this.instance.getCellValidator(this.cellProperties)) { - this.instance.addHookOnce('postAfterValidate', function (result) { - _this.state = EditorState.FINISHED; - _this.discardEditor(result); - }); - } else { - this.state = EditorState.FINISHED; - this.discardEditor(true); - } - } -}; - -BaseEditor.prototype.cancelChanges = function () { - this.state = EditorState.FINISHED; - this.discardEditor(); -}; - -BaseEditor.prototype.discardEditor = function (result) { - if (this.state !== EditorState.FINISHED) { - return; - } - // validator was defined and failed - if (result === false && this.cellProperties.allowInvalid !== true) { - this.instance.selectCell(this.row, this.col); - this.focus(); - this.state = EditorState.EDITING; - this._fireCallbacks(false); - } else { - this.close(); - this._opened = false; - this._fullEditMode = false; - this.state = EditorState.VIRGIN; - this._fireCallbacks(true); - } -}; - -/** - * Switch editor into full edit mode. In this state navigation keys don't close editor. This mode is activated - * automatically after hit ENTER or F2 key on the cell or while editing cell press F2 key. - */ -BaseEditor.prototype.enableFullEditMode = function () { - this._fullEditMode = true; -}; - -/** - * Checks if editor is in full edit mode. - * - * @returns {Boolean} - */ -BaseEditor.prototype.isInFullEditMode = function () { - return this._fullEditMode; -}; - -BaseEditor.prototype.isOpened = function () { - return this._opened; -}; - -BaseEditor.prototype.isWaiting = function () { - return this.state === EditorState.WAITING; -}; - -BaseEditor.prototype.checkEditorSection = function () { - var totalRows = this.instance.countRows(); - var section = ''; - - if (this.row < this.instance.getSettings().fixedRowsTop) { - if (this.col < this.instance.getSettings().fixedColumnsLeft) { - section = 'top-left-corner'; - } else { - section = 'top'; - } - } else if (this.instance.getSettings().fixedRowsBottom && this.row >= totalRows - this.instance.getSettings().fixedRowsBottom) { - if (this.col < this.instance.getSettings().fixedColumnsLeft) { - section = 'bottom-left-corner'; - } else { - section = 'bottom'; - } - } else if (this.col < this.instance.getSettings().fixedColumnsLeft) { - section = 'left'; - } - - return section; -}; - -exports.default = BaseEditor; - -/***/ }), -/* 42 */ -/***/ (function(module, exports) { - -var id = 0; -var px = Math.random(); -module.exports = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); -}; - - -/***/ }), -/* 43 */ -/***/ (function(module, exports) { - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - - -/***/ }), -/* 44 */ -/***/ (function(module, exports) { - -var core = module.exports = { version: '2.5.1' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef - - -/***/ }), -/* 45 */ -/***/ (function(module, exports) { - -module.exports = {}; - - -/***/ }), -/* 46 */ -/***/ (function(module, exports, __webpack_require__) { - -var def = __webpack_require__(18).f; -var has = __webpack_require__(24); -var TAG = __webpack_require__(10)('toStringTag'); - -module.exports = function (it, tag, stat) { - if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); -}; - - -/***/ }), -/* 47 */ -/***/ (function(module, exports, __webpack_require__) { - -var META = __webpack_require__(42)('meta'); -var isObject = __webpack_require__(14); -var has = __webpack_require__(24); -var setDesc = __webpack_require__(18).f; -var id = 0; -var isExtensible = Object.isExtensible || function () { - return true; -}; -var FREEZE = !__webpack_require__(23)(function () { - return isExtensible(Object.preventExtensions({})); -}); -var setMeta = function (it) { - setDesc(it, META, { value: { - i: 'O' + ++id, // object ID - w: {} // weak collections IDs - } }); -}; -var fastKey = function (it, create) { - // return primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return 'F'; - // not necessary to add metadata - if (!create) return 'E'; - // add missing metadata - setMeta(it); - // return object ID - } return it[META].i; -}; -var getWeak = function (it, create) { - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return true; - // not necessary to add metadata - if (!create) return false; - // add missing metadata - setMeta(it); - // return hash weak collections IDs - } return it[META].w; -}; -// add metadata on freeze-family methods calling -var onFreeze = function (it) { - if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); - return it; -}; -var meta = module.exports = { - KEY: META, - NEED: false, - fastKey: fastKey, - getWeak: getWeak, - onFreeze: onFreeze -}; - - -/***/ }), -/* 48 */ -/***/ (function(module, exports) { - -exports.f = {}.propertyIsEnumerable; - - -/***/ }), -/* 49 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * CellCoords holds cell coordinates (row, column) and few method to validate them and - * retrieve as an array or an object - * - * @class CellCoords - */ -var CellCoords = function () { - /** - * @param {Number} row Row index - * @param {Number} col Column index - */ - function CellCoords(row, col) { - _classCallCheck(this, CellCoords); - - if (typeof row !== 'undefined' && typeof col !== 'undefined') { - this.row = row; - this.col = col; - } else { - this.row = null; - this.col = null; - } - } - - /** - * Checks if given set of coordinates is valid in context of a given Walkontable instance - * - * @param {Walkontable} wotInstance - * @returns {Boolean} - */ - - - _createClass(CellCoords, [{ - key: 'isValid', - value: function isValid(wotInstance) { - // is it a valid cell index (0 or higher) - if (this.row < 0 || this.col < 0) { - return false; - } - // is selection within total rows and columns - if (this.row >= wotInstance.getSetting('totalRows') || this.col >= wotInstance.getSetting('totalColumns')) { - return false; - } - - return true; - } - - /** - * Checks if this cell coords are the same as cell coords given as a parameter - * - * @param {CellCoords} cellCoords - * @returns {Boolean} - */ - - }, { - key: 'isEqual', - value: function isEqual(cellCoords) { - if (cellCoords === this) { - return true; - } - - return this.row === cellCoords.row && this.col === cellCoords.col; - } - - /** - * Checks if tested coordinates are positioned in south-east from this cell coords - * - * @param {Object} testedCoords - * @returns {Boolean} - */ - - }, { - key: 'isSouthEastOf', - value: function isSouthEastOf(testedCoords) { - return this.row >= testedCoords.row && this.col >= testedCoords.col; - } - - /** - * Checks if tested coordinates are positioned in north-east from this cell coords - * - * @param {Object} testedCoords - * @returns {Boolean} - */ - - }, { - key: 'isNorthWestOf', - value: function isNorthWestOf(testedCoords) { - return this.row <= testedCoords.row && this.col <= testedCoords.col; - } - - /** - * Checks if tested coordinates are positioned in south-west from this cell coords - * - * @param {Object} testedCoords - * @returns {Boolean} - */ - - }, { - key: 'isSouthWestOf', - value: function isSouthWestOf(testedCoords) { - return this.row >= testedCoords.row && this.col <= testedCoords.col; - } - - /** - * Checks if tested coordinates are positioned in north-east from this cell coords - * - * @param {Object} testedCoords - * @returns {Boolean} - */ - - }, { - key: 'isNorthEastOf', - value: function isNorthEastOf(testedCoords) { - return this.row <= testedCoords.row && this.col >= testedCoords.col; - } - }]); - - return CellCoords; -}(); - -exports.default = CellCoords; - -/***/ }), -/* 50 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE_50__; - -/***/ }), -/* 51 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _element = __webpack_require__(0); - -var _autoResize = __webpack_require__(210); - -var _autoResize2 = _interopRequireDefault(_autoResize); - -var _baseEditor = __webpack_require__(41); - -var _baseEditor2 = _interopRequireDefault(_baseEditor); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _unicode = __webpack_require__(17); - -var _event = __webpack_require__(8); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var TextEditor = _baseEditor2.default.prototype.extend(); - -/** - * @private - * @editor TextEditor - * @class TextEditor - * @dependencies autoResize - */ -TextEditor.prototype.init = function () { - var that = this; - this.createElements(); - this.eventManager = new _eventManager2.default(this); - this.bindEvents(); - this.autoResize = (0, _autoResize2.default)(); - - this.instance.addHook('afterDestroy', function () { - that.destroy(); - }); -}; - -TextEditor.prototype.getValue = function () { - return this.TEXTAREA.value; -}; - -TextEditor.prototype.setValue = function (newValue) { - this.TEXTAREA.value = newValue; -}; - -var onBeforeKeyDown = function onBeforeKeyDown(event) { - var instance = this, - that = instance.getActiveEditor(), - ctrlDown; - - // catch CTRL but not right ALT (which in some systems triggers ALT+CTRL) - ctrlDown = (event.ctrlKey || event.metaKey) && !event.altKey; - - // Process only events that have been fired in the editor - if (event.target !== that.TEXTAREA || (0, _event.isImmediatePropagationStopped)(event)) { - return; - } - - if (event.keyCode === 17 || event.keyCode === 224 || event.keyCode === 91 || event.keyCode === 93) { - // when CTRL or its equivalent is pressed and cell is edited, don't prepare selectable text in textarea - (0, _event.stopImmediatePropagation)(event); - return; - } - - switch (event.keyCode) { - case _unicode.KEY_CODES.ARROW_RIGHT: - if (that.isInFullEditMode()) { - if (!that.isWaiting() && !that.allowKeyEventPropagation || !that.isWaiting() && that.allowKeyEventPropagation && !that.allowKeyEventPropagation(event.keyCode)) { - (0, _event.stopImmediatePropagation)(event); - } - } - break; - case _unicode.KEY_CODES.ARROW_LEFT: - if (that.isInFullEditMode()) { - if (!that.isWaiting() && !that.allowKeyEventPropagation || !that.isWaiting() && that.allowKeyEventPropagation && !that.allowKeyEventPropagation(event.keyCode)) { - (0, _event.stopImmediatePropagation)(event); - } - } - break; - case _unicode.KEY_CODES.ARROW_UP: - case _unicode.KEY_CODES.ARROW_DOWN: - if (that.isInFullEditMode()) { - if (!that.isWaiting() && !that.allowKeyEventPropagation || !that.isWaiting() && that.allowKeyEventPropagation && !that.allowKeyEventPropagation(event.keyCode)) { - (0, _event.stopImmediatePropagation)(event); - } - } - break; - - case _unicode.KEY_CODES.ENTER: - var selected = that.instance.getSelected(); - var isMultipleSelection = !(selected[0] === selected[2] && selected[1] === selected[3]); - if (ctrlDown && !isMultipleSelection || event.altKey) { - // if ctrl+enter or alt+enter, add new line - if (that.isOpened()) { - var caretPosition = (0, _element.getCaretPosition)(that.TEXTAREA), - value = that.getValue(); - - var newValue = value.slice(0, caretPosition) + '\n' + value.slice(caretPosition); - - that.setValue(newValue); - - (0, _element.setCaretPosition)(that.TEXTAREA, caretPosition + 1); - } else { - that.beginEditing(that.originalValue + '\n'); - } - (0, _event.stopImmediatePropagation)(event); - } - event.preventDefault(); // don't add newline to field - break; - - case _unicode.KEY_CODES.A: - case _unicode.KEY_CODES.X: - case _unicode.KEY_CODES.C: - case _unicode.KEY_CODES.V: - if (ctrlDown) { - (0, _event.stopImmediatePropagation)(event); // CTRL+A, CTRL+C, CTRL+V, CTRL+X should only work locally when cell is edited (not in table context) - } - break; - - case _unicode.KEY_CODES.BACKSPACE: - case _unicode.KEY_CODES.DELETE: - case _unicode.KEY_CODES.HOME: - case _unicode.KEY_CODES.END: - (0, _event.stopImmediatePropagation)(event); // backspace, delete, home, end should only work locally when cell is edited (not in table context) - break; - default: - break; - } - - if ([_unicode.KEY_CODES.ARROW_UP, _unicode.KEY_CODES.ARROW_RIGHT, _unicode.KEY_CODES.ARROW_DOWN, _unicode.KEY_CODES.ARROW_LEFT].indexOf(event.keyCode) === -1) { - that.autoResize.resize(String.fromCharCode(event.keyCode)); - } -}; - -TextEditor.prototype.open = function () { - this.refreshDimensions(); // need it instantly, to prevent https://github.com/handsontable/handsontable/issues/348 - - this.instance.addHook('beforeKeyDown', onBeforeKeyDown); -}; - -TextEditor.prototype.close = function (tdOutside) { - this.textareaParentStyle.display = 'none'; - - this.autoResize.unObserve(); - - if (document.activeElement === this.TEXTAREA) { - this.instance.listen(); // don't refocus the table if user focused some cell outside of HT on purpose - } - this.instance.removeHook('beforeKeyDown', onBeforeKeyDown); -}; - -TextEditor.prototype.focus = function () { - this.TEXTAREA.focus(); - (0, _element.setCaretPosition)(this.TEXTAREA, this.TEXTAREA.value.length); -}; - -TextEditor.prototype.createElements = function () { - // this.$body = $(document.body); - - this.TEXTAREA = document.createElement('TEXTAREA'); - - (0, _element.addClass)(this.TEXTAREA, 'handsontableInput'); - - this.textareaStyle = this.TEXTAREA.style; - this.textareaStyle.width = 0; - this.textareaStyle.height = 0; - - this.TEXTAREA_PARENT = document.createElement('DIV'); - (0, _element.addClass)(this.TEXTAREA_PARENT, 'handsontableInputHolder'); - - this.textareaParentStyle = this.TEXTAREA_PARENT.style; - this.textareaParentStyle.top = 0; - this.textareaParentStyle.left = 0; - this.textareaParentStyle.display = 'none'; - - this.TEXTAREA_PARENT.appendChild(this.TEXTAREA); - - this.instance.rootElement.appendChild(this.TEXTAREA_PARENT); - - var that = this; - this.instance._registerTimeout(setTimeout(function () { - that.refreshDimensions(); - }, 0)); -}; - -TextEditor.prototype.getEditedCell = function () { - var editorSection = this.checkEditorSection(), - editedCell; - - switch (editorSection) { - case 'top': - editedCell = this.instance.view.wt.wtOverlays.topOverlay.clone.wtTable.getCell({ - row: this.row, - col: this.col - }); - this.textareaParentStyle.zIndex = 101; - break; - case 'top-left-corner': - editedCell = this.instance.view.wt.wtOverlays.topLeftCornerOverlay.clone.wtTable.getCell({ - row: this.row, - col: this.col - }); - this.textareaParentStyle.zIndex = 103; - break; - case 'bottom-left-corner': - editedCell = this.instance.view.wt.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.getCell({ - row: this.row, - col: this.col - }); - this.textareaParentStyle.zIndex = 103; - break; - case 'left': - editedCell = this.instance.view.wt.wtOverlays.leftOverlay.clone.wtTable.getCell({ - row: this.row, - col: this.col - }); - this.textareaParentStyle.zIndex = 102; - break; - case 'bottom': - editedCell = this.instance.view.wt.wtOverlays.bottomOverlay.clone.wtTable.getCell({ - row: this.row, - col: this.col - }); - this.textareaParentStyle.zIndex = 102; - break; - default: - editedCell = this.instance.getCell(this.row, this.col); - this.textareaParentStyle.zIndex = ''; - break; - } - - return editedCell != -1 && editedCell != -2 ? editedCell : void 0; -}; - -TextEditor.prototype.refreshValue = function () { - var sourceData = this.instance.getSourceDataAtCell(this.row, this.prop); - this.originalValue = sourceData; - - this.setValue(sourceData); - this.refreshDimensions(); -}; - -TextEditor.prototype.refreshDimensions = function () { - if (this.state !== _baseEditor.EditorState.EDITING) { - return; - } - this.TD = this.getEditedCell(); - - // TD is outside of the viewport. - if (!this.TD) { - this.close(true); - - return; - } - var currentOffset = (0, _element.offset)(this.TD), - containerOffset = (0, _element.offset)(this.instance.rootElement), - scrollableContainer = (0, _element.getScrollableElement)(this.TD), - totalRowsCount = this.instance.countRows(), - - - // If colHeaders is disabled, cells in the first row have border-top - editTopModifier = currentOffset.top === containerOffset.top ? 0 : 1, - editTop = currentOffset.top - containerOffset.top - editTopModifier - (scrollableContainer.scrollTop || 0), - editLeft = currentOffset.left - containerOffset.left - 1 - (scrollableContainer.scrollLeft || 0), - settings = this.instance.getSettings(), - rowHeadersCount = this.instance.hasRowHeaders(), - colHeadersCount = this.instance.hasColHeaders(), - editorSection = this.checkEditorSection(), - backgroundColor = this.TD.style.backgroundColor, - cssTransformOffset; - - // TODO: Refactor this to the new instance.getCell method (from #ply-59), after 0.12.1 is released - switch (editorSection) { - case 'top': - cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.topOverlay.clone.wtTable.holder.parentNode); - break; - case 'left': - cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.leftOverlay.clone.wtTable.holder.parentNode); - break; - case 'top-left-corner': - cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.topLeftCornerOverlay.clone.wtTable.holder.parentNode); - break; - case 'bottom-left-corner': - cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.holder.parentNode); - break; - case 'bottom': - cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.bottomOverlay.clone.wtTable.holder.parentNode); - break; - default: - break; - } - - if (colHeadersCount && this.instance.getSelected()[0] === 0 || settings.fixedRowsBottom && this.instance.getSelected()[0] === totalRowsCount - settings.fixedRowsBottom) { - editTop += 1; - } - - if (this.instance.getSelected()[1] === 0) { - editLeft += 1; - } - - if (cssTransformOffset && cssTransformOffset != -1) { - this.textareaParentStyle[cssTransformOffset[0]] = cssTransformOffset[1]; - } else { - (0, _element.resetCssTransform)(this.TEXTAREA_PARENT); - } - - this.textareaParentStyle.top = editTop + 'px'; - this.textareaParentStyle.left = editLeft + 'px'; - - var firstRowOffset = this.instance.view.wt.wtViewport.rowsRenderCalculator.startPosition; - var firstColumnOffset = this.instance.view.wt.wtViewport.columnsRenderCalculator.startPosition; - var horizontalScrollPosition = this.instance.view.wt.wtOverlays.leftOverlay.getScrollPosition(); - var verticalScrollPosition = this.instance.view.wt.wtOverlays.topOverlay.getScrollPosition(); - var scrollbarWidth = (0, _element.getScrollbarWidth)(); - - var cellTopOffset = this.TD.offsetTop + firstRowOffset - verticalScrollPosition; - var cellLeftOffset = this.TD.offsetLeft + firstColumnOffset - horizontalScrollPosition; - - var width = (0, _element.innerWidth)(this.TD) - 8; - var actualVerticalScrollbarWidth = (0, _element.hasVerticalScrollbar)(scrollableContainer) ? scrollbarWidth : 0; - var actualHorizontalScrollbarWidth = (0, _element.hasHorizontalScrollbar)(scrollableContainer) ? scrollbarWidth : 0; - var maxWidth = this.instance.view.maximumVisibleElementWidth(cellLeftOffset) - 9 - actualVerticalScrollbarWidth; - var height = this.TD.scrollHeight + 1; - var maxHeight = Math.max(this.instance.view.maximumVisibleElementHeight(cellTopOffset) - actualHorizontalScrollbarWidth, 23); - - var cellComputedStyle = (0, _element.getComputedStyle)(this.TD); - - this.TEXTAREA.style.fontSize = cellComputedStyle.fontSize; - this.TEXTAREA.style.fontFamily = cellComputedStyle.fontFamily; - this.TEXTAREA.style.backgroundColor = ''; // RESET STYLE - this.TEXTAREA.style.backgroundColor = backgroundColor ? backgroundColor : (0, _element.getComputedStyle)(this.TEXTAREA).backgroundColor; - - this.autoResize.init(this.TEXTAREA, { - minHeight: Math.min(height, maxHeight), - maxHeight: maxHeight, // TEXTAREA should never be wider than visible part of the viewport (should not cover the scrollbar) - minWidth: Math.min(width, maxWidth), - maxWidth: maxWidth // TEXTAREA should never be wider than visible part of the viewport (should not cover the scrollbar) - }, true); - - this.textareaParentStyle.display = 'block'; -}; - -TextEditor.prototype.bindEvents = function () { - var editor = this; - - this.eventManager.addEventListener(this.TEXTAREA, 'cut', function (event) { - (0, _event.stopPropagation)(event); - }); - - this.eventManager.addEventListener(this.TEXTAREA, 'paste', function (event) { - (0, _event.stopPropagation)(event); - }); - - this.instance.addHook('afterScrollHorizontally', function () { - editor.refreshDimensions(); - }); - - this.instance.addHook('afterScrollVertically', function () { - editor.refreshDimensions(); - }); - - this.instance.addHook('afterColumnResize', function () { - editor.refreshDimensions(); - editor.focus(); - }); - - this.instance.addHook('afterRowResize', function () { - editor.refreshDimensions(); - editor.focus(); - }); - - this.instance.addHook('afterDestroy', function () { - editor.eventManager.destroy(); - }); -}; - -TextEditor.prototype.destroy = function () { - this.eventManager.destroy(); -}; - -exports.default = TextEditor; - -/***/ }), -/* 52 */ -/***/ (function(module, exports) { - -// 7.1.4 ToInteger -var ceil = Math.ceil; -var floor = Math.floor; -module.exports = function (it) { - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); -}; - - -/***/ }), -/* 53 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(52); -var max = Math.max; -var min = Math.min; -module.exports = function (index, length) { - index = toInteger(index); - return index < 0 ? max(index + length, 0) : min(index, length); -}; - - -/***/ }), -/* 54 */ -/***/ (function(module, exports, __webpack_require__) { - -var redefine = __webpack_require__(28); -module.exports = function (target, src, safe) { - for (var key in src) redefine(target, key, src[key], safe); - return target; -}; - - -/***/ }), -/* 55 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - if (typeof it != 'function') throw TypeError(it + ' is not a function!'); - return it; -}; - - -/***/ }), -/* 56 */ -/***/ (function(module, exports) { - -module.exports = function (it, Constructor, name, forbiddenField) { - if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) { - throw TypeError(name + ': incorrect invocation!'); - } return it; -}; - - -/***/ }), -/* 57 */ -/***/ (function(module, exports, __webpack_require__) { - -var ctx = __webpack_require__(30); -var call = __webpack_require__(95); -var isArrayIter = __webpack_require__(96); -var anObject = __webpack_require__(16); -var toLength = __webpack_require__(21); -var getIterFn = __webpack_require__(97); -var BREAK = {}; -var RETURN = {}; -var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { - var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable); - var f = ctx(fn, that, entries ? 2 : 1); - var index = 0; - var length, step, iterator, result; - if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); - // fast case for arrays with default iterator - if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { - result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); - if (result === BREAK || result === RETURN) return result; - } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { - result = call(iterator, f, step.value, entries); - if (result === BREAK || result === RETURN) return result; - } -}; -exports.BREAK = BREAK; -exports.RETURN = RETURN; - - -/***/ }), -/* 58 */ -/***/ (function(module, exports) { - -module.exports = false; - - -/***/ }), -/* 59 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var global = __webpack_require__(11); -var $export = __webpack_require__(3); -var redefine = __webpack_require__(28); -var redefineAll = __webpack_require__(54); -var meta = __webpack_require__(47); -var forOf = __webpack_require__(57); -var anInstance = __webpack_require__(56); -var isObject = __webpack_require__(14); -var fails = __webpack_require__(23); -var $iterDetect = __webpack_require__(71); -var setToStringTag = __webpack_require__(46); -var inheritIfRequired = __webpack_require__(184); - -module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { - var Base = global[NAME]; - var C = Base; - var ADDER = IS_MAP ? 'set' : 'add'; - var proto = C && C.prototype; - var O = {}; - var fixMethod = function (KEY) { - var fn = proto[KEY]; - redefine(proto, KEY, - KEY == 'delete' ? function (a) { - return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); - } : KEY == 'has' ? function has(a) { - return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); - } : KEY == 'get' ? function get(a) { - return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a); - } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; } - : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; } - ); - }; - if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () { - new C().entries().next(); - }))) { - // create collection constructor - C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); - redefineAll(C.prototype, methods); - meta.NEED = true; - } else { - var instance = new C(); - // early implementations not supports chaining - var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; - // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false - var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); - // most early implementations doesn't supports iterables, most modern - not close it correctly - var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new - // for early implementations -0 and +0 not the same - var BUGGY_ZERO = !IS_WEAK && fails(function () { - // V8 ~ Chromium 42- fails only with 5+ elements - var $instance = new C(); - var index = 5; - while (index--) $instance[ADDER](index, index); - return !$instance.has(-0); - }); - if (!ACCEPT_ITERABLES) { - C = wrapper(function (target, iterable) { - anInstance(target, C, NAME); - var that = inheritIfRequired(new Base(), target, C); - if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); - return that; - }); - C.prototype = proto; - proto.constructor = C; - } - if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { - fixMethod('delete'); - fixMethod('has'); - IS_MAP && fixMethod('get'); - } - if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); - // weak collections should not contains .clear method - if (IS_WEAK && proto.clear) delete proto.clear; - } - - setToStringTag(C, NAME); - - O[NAME] = C; - $export($export.G + $export.W + $export.F * (C != Base), O); - - if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP); - - return C; -}; - - -/***/ }), -/* 60 */ -/***/ (function(module, exports, __webpack_require__) { - -// 0 -> Array#forEach -// 1 -> Array#map -// 2 -> Array#filter -// 3 -> Array#some -// 4 -> Array#every -// 5 -> Array#find -// 6 -> Array#findIndex -var ctx = __webpack_require__(30); -var IObject = __webpack_require__(67); -var toObject = __webpack_require__(38); -var toLength = __webpack_require__(21); -var asc = __webpack_require__(185); -module.exports = function (TYPE, $create) { - var IS_MAP = TYPE == 1; - var IS_FILTER = TYPE == 2; - var IS_SOME = TYPE == 3; - var IS_EVERY = TYPE == 4; - var IS_FIND_INDEX = TYPE == 6; - var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - var create = $create || asc; - return function ($this, callbackfn, that) { - var O = toObject($this); - var self = IObject(O); - var f = ctx(callbackfn, that, 3); - var length = toLength(self.length); - var index = 0; - var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; - var val, res; - for (;length > index; index++) if (NO_HOLES || index in self) { - val = self[index]; - res = f(val, index, O); - if (TYPE) { - if (IS_MAP) result[index] = res; // map - else if (res) switch (TYPE) { - case 3: return true; // some - case 5: return val; // find - case 6: return index; // findIndex - case 2: result.push(val); // filter - } else if (IS_EVERY) return false; // every - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; - }; -}; - - -/***/ }), -/* 61 */ -/***/ (function(module, exports) { - -exports.f = Object.getOwnPropertySymbols; - - -/***/ }), -/* 62 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var hide = __webpack_require__(29); -var redefine = __webpack_require__(28); -var fails = __webpack_require__(23); -var defined = __webpack_require__(33); -var wks = __webpack_require__(10); - -module.exports = function (KEY, length, exec) { - var SYMBOL = wks(KEY); - var fns = exec(defined, SYMBOL, ''[KEY]); - var strfn = fns[0]; - var rxfn = fns[1]; - if (fails(function () { - var O = {}; - O[SYMBOL] = function () { return 7; }; - return ''[KEY](O) != 7; - })) { - redefine(String.prototype, KEY, strfn); - hide(RegExp.prototype, SYMBOL, length == 2 - // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) - // 21.2.5.11 RegExp.prototype[@@split](string, limit) - ? function (string, arg) { return rxfn.call(string, this, arg); } - // 21.2.5.6 RegExp.prototype[@@match](string) - // 21.2.5.9 RegExp.prototype[@@search](string) - : function (string) { return rxfn.call(string, this); } - ); - } -}; - - -/***/ }), -/* 63 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = staticRegister; - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - -var collection = exports.collection = new Map(); - -function staticRegister() { - var namespace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'common'; - - if (!collection.has(namespace)) { - collection.set(namespace, new Map()); - } - var 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 specyfied 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 [].concat(_toConsumableArray(subCollection.keys())); - } - - /** - * Retrieve all registered values from the collection. - * - * @returns {Array} Returns an array with all values stored in the collection. - */ - function getValues() { - return [].concat(_toConsumableArray(subCollection.values())); - } - - return { - register: register, - getItem: getItem, - hasItem: hasItem, - getNames: getNames, - getValues: getValues - }; -} - -/***/ }), -/* 64 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(14); -var document = __webpack_require__(11).document; -// typeof document.createElement is 'object' in old IE -var is = isObject(document) && isObject(document.createElement); -module.exports = function (it) { - return is ? document.createElement(it) : {}; -}; - - -/***/ }), -/* 65 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.1 ToPrimitive(input [, PreferredType]) -var isObject = __webpack_require__(14); -// instead of the ES6 spec version, we didn't implement @@toPrimitive case -// and the second argument - flag - preferred type is a string -module.exports = function (it, S) { - if (!isObject(it)) return it; - var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - throw TypeError("Can't convert object to primitive value"); -}; - - -/***/ }), -/* 66 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -var anObject = __webpack_require__(16); -var dPs = __webpack_require__(181); -var enumBugKeys = __webpack_require__(70); -var IE_PROTO = __webpack_require__(68)('IE_PROTO'); -var Empty = function () { /* empty */ }; -var PROTOTYPE = 'prototype'; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = __webpack_require__(64)('iframe'); - var i = enumBugKeys.length; - var lt = '<'; - var gt = '>'; - var iframeDocument; - iframe.style.display = 'none'; - __webpack_require__(94).appendChild(iframe); - iframe.src = 'javascript:'; // eslint-disable-line no-script-url - // createDict = iframe.contentWindow.Object; - // html.removeChild(iframe); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; - return createDict(); -}; - -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : dPs(result, Properties); -}; - - -/***/ }), -/* 67 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var cof = __webpack_require__(37); -// eslint-disable-next-line no-prototype-builtins -module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); -}; - - -/***/ }), -/* 68 */ -/***/ (function(module, exports, __webpack_require__) { - -var shared = __webpack_require__(69)('keys'); -var uid = __webpack_require__(42); -module.exports = function (key) { - return shared[key] || (shared[key] = uid(key)); -}; - - -/***/ }), -/* 69 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(11); -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || (global[SHARED] = {}); -module.exports = function (key) { - return store[key] || (store[key] = {}); -}; - - -/***/ }), -/* 70 */ -/***/ (function(module, exports) { - -// IE 8- don't enum bug keys -module.exports = ( - 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' -).split(','); - - -/***/ }), -/* 71 */ -/***/ (function(module, exports, __webpack_require__) { - -var ITERATOR = __webpack_require__(10)('iterator'); -var SAFE_CLOSING = false; - -try { - var riter = [7][ITERATOR](); - riter['return'] = function () { SAFE_CLOSING = true; }; - // eslint-disable-next-line no-throw-literal - Array.from(riter, function () { throw 2; }); -} catch (e) { /* empty */ } - -module.exports = function (exec, skipClosing) { - if (!skipClosing && !SAFE_CLOSING) return false; - var safe = false; - try { - var arr = [7]; - var iter = arr[ITERATOR](); - iter.next = function () { return { done: safe = true }; }; - arr[ITERATOR] = function () { return iter; }; - exec(arr); - } catch (e) { /* empty */ } - return safe; -}; - - -/***/ }), -/* 72 */ -/***/ (function(module, exports, __webpack_require__) { - -var pIE = __webpack_require__(48); -var createDesc = __webpack_require__(43); -var toIObject = __webpack_require__(25); -var toPrimitive = __webpack_require__(65); -var has = __webpack_require__(24); -var IE8_DOM_DEFINE = __webpack_require__(91); -var gOPD = Object.getOwnPropertyDescriptor; - -exports.f = __webpack_require__(20) ? gOPD : function getOwnPropertyDescriptor(O, P) { - O = toIObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return gOPD(O, P); - } catch (e) { /* empty */ } - if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); -}; - - -/***/ }), -/* 73 */ -/***/ (function(module, exports, __webpack_require__) { - -var ctx = __webpack_require__(30); -var invoke = __webpack_require__(188); -var html = __webpack_require__(94); -var cel = __webpack_require__(64); -var global = __webpack_require__(11); -var process = global.process; -var setTask = global.setImmediate; -var clearTask = global.clearImmediate; -var MessageChannel = global.MessageChannel; -var Dispatch = global.Dispatch; -var counter = 0; -var queue = {}; -var ONREADYSTATECHANGE = 'onreadystatechange'; -var defer, channel, port; -var run = function () { - var id = +this; - // eslint-disable-next-line no-prototype-builtins - if (queue.hasOwnProperty(id)) { - var fn = queue[id]; - delete queue[id]; - fn(); - } -}; -var listener = function (event) { - run.call(event.data); -}; -// Node.js 0.9+ & IE10+ has setImmediate, otherwise: -if (!setTask || !clearTask) { - setTask = function setImmediate(fn) { - var args = []; - var i = 1; - while (arguments.length > i) args.push(arguments[i++]); - queue[++counter] = function () { - // eslint-disable-next-line no-new-func - invoke(typeof fn == 'function' ? fn : Function(fn), args); - }; - defer(counter); - return counter; - }; - clearTask = function clearImmediate(id) { - delete queue[id]; - }; - // Node.js 0.8- - if (__webpack_require__(37)(process) == 'process') { - defer = function (id) { - process.nextTick(ctx(run, id, 1)); - }; - // Sphere (JS game engine) Dispatch API - } else if (Dispatch && Dispatch.now) { - defer = function (id) { - Dispatch.now(ctx(run, id, 1)); - }; - // Browsers with MessageChannel, includes WebWorkers - } else if (MessageChannel) { - channel = new MessageChannel(); - port = channel.port2; - channel.port1.onmessage = listener; - defer = ctx(port.postMessage, port, 1); - // Browsers with postMessage, skip WebWorkers - // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' - } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) { - defer = function (id) { - global.postMessage(id + '', '*'); - }; - global.addEventListener('message', listener, false); - // IE8- - } else if (ONREADYSTATECHANGE in cel('script')) { - defer = function (id) { - html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { - html.removeChild(this); - run.call(id); - }; - }; - // Rest old browsers - } else { - defer = function (id) { - setTimeout(ctx(run, id, 1), 0); - }; - } -} -module.exports = { - set: setTask, - clear: clearTask -}; - - -/***/ }), -/* 74 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) -var $keys = __webpack_require__(92); -var hiddenKeys = __webpack_require__(70).concat('length', 'prototype'); - -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); -}; - - -/***/ }), -/* 75 */ -/***/ (function(module, exports, __webpack_require__) { - -// helper for String#{startsWith, endsWith, includes} -var isRegExp = __webpack_require__(123); -var defined = __webpack_require__(33); - -module.exports = function (that, searchString, NAME) { - if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!"); - return String(defined(that)); -}; - - -/***/ }), -/* 76 */ -/***/ (function(module, exports, __webpack_require__) { - -var MATCH = __webpack_require__(10)('match'); -module.exports = function (KEY) { - var re = /./; - try { - '/./'[KEY](re); - } catch (e) { - try { - re[MATCH] = false; - return !'/./'[KEY](re); - } catch (f) { /* empty */ } - } return true; -}; - - -/***/ }), -/* 77 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $defineProperty = __webpack_require__(18); -var createDesc = __webpack_require__(43); - -module.exports = function (object, index, value) { - if (index in object) $defineProperty.f(object, index, createDesc(0, value)); - else object[index] = value; -}; - - -/***/ }), -/* 78 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var addToUnscopables = __webpack_require__(40); -var step = __webpack_require__(100); -var Iterators = __webpack_require__(45); -var toIObject = __webpack_require__(25); - -// 22.1.3.4 Array.prototype.entries() -// 22.1.3.13 Array.prototype.keys() -// 22.1.3.29 Array.prototype.values() -// 22.1.3.30 Array.prototype[@@iterator]() -module.exports = __webpack_require__(99)(Array, 'Array', function (iterated, kind) { - this._t = toIObject(iterated); // target - this._i = 0; // next index - this._k = kind; // kind -// 22.1.5.2.1 %ArrayIteratorPrototype%.next() -}, function () { - var O = this._t; - var kind = this._k; - var index = this._i++; - if (!O || index >= O.length) { - this._t = undefined; - return step(1); - } - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); -}, 'values'); - -// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) -Iterators.Arguments = Iterators.Array; - -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); - - -/***/ }), -/* 79 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _coords = __webpack_require__(49); - -var _coords2 = _interopRequireDefault(_coords); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * A cell range is a set of exactly two CellCoords (that can be the same or different) - * - * @class CellRange - */ -var CellRange = function () { - /** - * @param {CellCoords} highlight Used to draw bold border around a cell where selection was - * started and to edit the cell when you press Enter - * @param {CellCoords} from Usually the same as highlight, but in Excel there is distinction - one can change - * highlight within a selection - * @param {CellCoords} to End selection - */ - function CellRange(highlight, from, to) { - _classCallCheck(this, CellRange); - - this.highlight = highlight; - this.from = from; - this.to = to; - } - - /** - * Checks if given coords are valid in context of a given Walkontable instance - * - * @param {Walkontable} wotInstance - * @returns {Boolean} - */ - - - _createClass(CellRange, [{ - key: 'isValid', - value: function isValid(wotInstance) { - return this.from.isValid(wotInstance) && this.to.isValid(wotInstance); - } - - /** - * Checks if this cell range is restricted to one cell - * - * @returns {Boolean} - */ - - }, { - key: 'isSingle', - value: function isSingle() { - return this.from.row === this.to.row && this.from.col === this.to.col; - } - - /** - * Returns selected range height (in number of rows) - * - * @returns {Number} - */ - - }, { - key: 'getHeight', - value: function getHeight() { - return Math.max(this.from.row, this.to.row) - Math.min(this.from.row, this.to.row) + 1; - } - - /** - * Returns selected range width (in number of columns) - * - * @returns {Number} - */ - - }, { - key: 'getWidth', - value: function getWidth() { - return Math.max(this.from.col, this.to.col) - Math.min(this.from.col, this.to.col) + 1; - } - - /** - * Checks if given cell coords is within `from` and `to` cell coords of this range - * - * @param {CellCoords} cellCoords - * @returns {Boolean} - */ - - }, { - key: 'includes', - value: function includes(cellCoords) { - var row = cellCoords.row, - col = cellCoords.col; - - var topLeft = this.getTopLeftCorner(); - var bottomRight = this.getBottomRightCorner(); - - return topLeft.row <= row && bottomRight.row >= row && topLeft.col <= col && bottomRight.col >= col; - } - - /** - * Checks if given range is within of this range - * - * @param {CellRange} testedRange - * @returns {Boolean} - */ - - }, { - key: 'includesRange', - value: function includesRange(testedRange) { - return this.includes(testedRange.getTopLeftCorner()) && this.includes(testedRange.getBottomRightCorner()); - } - - /** - * Checks if given range is equal to this range - * - * @param {CellRange} testedRange - * @returns {Boolean} - */ - - }, { - key: 'isEqual', - value: function isEqual(testedRange) { - return Math.min(this.from.row, this.to.row) == Math.min(testedRange.from.row, testedRange.to.row) && Math.max(this.from.row, this.to.row) == Math.max(testedRange.from.row, testedRange.to.row) && Math.min(this.from.col, this.to.col) == Math.min(testedRange.from.col, testedRange.to.col) && Math.max(this.from.col, this.to.col) == Math.max(testedRange.from.col, testedRange.to.col); - } - - /** - * Checks if tested range overlaps with the range. - * Range A is considered to to be overlapping with range B if intersection of A and B or B and A is not empty. - * - * @param {CellRange} testedRange - * @returns {Boolean} - */ - - }, { - key: 'overlaps', - value: function overlaps(testedRange) { - return testedRange.isSouthEastOf(this.getTopLeftCorner()) && testedRange.isNorthWestOf(this.getBottomRightCorner()); - } - - /** - * @param {CellRange} testedCoords - * @returns {Boolean} - */ - - }, { - key: 'isSouthEastOf', - value: function isSouthEastOf(testedCoords) { - return this.getTopLeftCorner().isSouthEastOf(testedCoords) || this.getBottomRightCorner().isSouthEastOf(testedCoords); - } - - /** - * @param {CellRange} testedCoords - * @returns {Boolean} - */ - - }, { - key: 'isNorthWestOf', - value: function isNorthWestOf(testedCoords) { - return this.getTopLeftCorner().isNorthWestOf(testedCoords) || this.getBottomRightCorner().isNorthWestOf(testedCoords); - } - - /** - * Adds a cell to a range (only if exceeds corners of the range). Returns information if range was expanded - * - * @param {CellCoords} cellCoords - * @returns {Boolean} - */ - - }, { - key: 'expand', - value: function expand(cellCoords) { - var topLeft = this.getTopLeftCorner(); - var bottomRight = this.getBottomRightCorner(); - - if (cellCoords.row < topLeft.row || cellCoords.col < topLeft.col || cellCoords.row > bottomRight.row || cellCoords.col > bottomRight.col) { - this.from = new _coords2.default(Math.min(topLeft.row, cellCoords.row), Math.min(topLeft.col, cellCoords.col)); - this.to = new _coords2.default(Math.max(bottomRight.row, cellCoords.row), Math.max(bottomRight.col, cellCoords.col)); - - return true; - } - - return false; - } - - /** - * @param {CellRange} expandingRange - * @returns {Boolean} - */ - - }, { - key: 'expandByRange', - value: function expandByRange(expandingRange) { - if (this.includesRange(expandingRange) || !this.overlaps(expandingRange)) { - return false; - } - - var topLeft = this.getTopLeftCorner(); - var bottomRight = this.getBottomRightCorner(); - var topRight = this.getTopRightCorner(); - var bottomLeft = this.getBottomLeftCorner(); - - var expandingTopLeft = expandingRange.getTopLeftCorner(); - var expandingBottomRight = expandingRange.getBottomRightCorner(); - - var resultTopRow = Math.min(topLeft.row, expandingTopLeft.row); - var resultTopCol = Math.min(topLeft.col, expandingTopLeft.col); - var resultBottomRow = Math.max(bottomRight.row, expandingBottomRight.row); - var resultBottomCol = Math.max(bottomRight.col, expandingBottomRight.col); - - var finalFrom = new _coords2.default(resultTopRow, resultTopCol), - finalTo = new _coords2.default(resultBottomRow, resultBottomCol); - var isCorner = new CellRange(finalFrom, finalFrom, finalTo).isCorner(this.from, expandingRange), - onlyMerge = expandingRange.isEqual(new CellRange(finalFrom, finalFrom, finalTo)); - - if (isCorner && !onlyMerge) { - if (this.from.col > finalFrom.col) { - finalFrom.col = resultBottomCol; - finalTo.col = resultTopCol; - } - if (this.from.row > finalFrom.row) { - finalFrom.row = resultBottomRow; - finalTo.row = resultTopRow; - } - } - this.from = finalFrom; - this.to = finalTo; - - return true; - } - - /** - * @returns {String} - */ - - }, { - key: 'getDirection', - value: function getDirection() { - if (this.from.isNorthWestOf(this.to)) { - // NorthWest - SouthEast - return 'NW-SE'; - } else if (this.from.isNorthEastOf(this.to)) { - // NorthEast - SouthWest - return 'NE-SW'; - } else if (this.from.isSouthEastOf(this.to)) { - // SouthEast - NorthWest - return 'SE-NW'; - } else if (this.from.isSouthWestOf(this.to)) { - // SouthWest - NorthEast - return 'SW-NE'; - } - } - - /** - * @param {String} direction - */ - - }, { - key: 'setDirection', - value: function setDirection(direction) { - switch (direction) { - case 'NW-SE': - var _ref = [this.getTopLeftCorner(), this.getBottomRightCorner()]; - this.from = _ref[0]; - this.to = _ref[1]; - - break; - case 'NE-SW': - var _ref2 = [this.getTopRightCorner(), this.getBottomLeftCorner()]; - this.from = _ref2[0]; - this.to = _ref2[1]; - - break; - case 'SE-NW': - var _ref3 = [this.getBottomRightCorner(), this.getTopLeftCorner()]; - this.from = _ref3[0]; - this.to = _ref3[1]; - - break; - case 'SW-NE': - var _ref4 = [this.getBottomLeftCorner(), this.getTopRightCorner()]; - this.from = _ref4[0]; - this.to = _ref4[1]; - - break; - default: - break; - } - } - - /** - * Get top left corner of this range - * - * @returns {CellCoords} - */ - - }, { - key: 'getTopLeftCorner', - value: function getTopLeftCorner() { - return new _coords2.default(Math.min(this.from.row, this.to.row), Math.min(this.from.col, this.to.col)); - } - - /** - * Get bottom right corner of this range - * - * @returns {CellCoords} - */ - - }, { - key: 'getBottomRightCorner', - value: function getBottomRightCorner() { - return new _coords2.default(Math.max(this.from.row, this.to.row), Math.max(this.from.col, this.to.col)); - } - - /** - * Get top right corner of this range - * - * @returns {CellCoords} - */ - - }, { - key: 'getTopRightCorner', - value: function getTopRightCorner() { - return new _coords2.default(Math.min(this.from.row, this.to.row), Math.max(this.from.col, this.to.col)); - } - - /** - * Get bottom left corner of this range - * - * @returns {CellCoords} - */ - - }, { - key: 'getBottomLeftCorner', - value: function getBottomLeftCorner() { - return new _coords2.default(Math.max(this.from.row, this.to.row), Math.min(this.from.col, this.to.col)); - } - - /** - * @param {CellCoords} coords - * @param {CellRange} expandedRange - * @returns {*} - */ - - }, { - key: 'isCorner', - value: function isCorner(coords, expandedRange) { - if (expandedRange) { - if (expandedRange.includes(coords)) { - if (this.getTopLeftCorner().isEqual(new _coords2.default(expandedRange.from.row, expandedRange.from.col)) || this.getTopRightCorner().isEqual(new _coords2.default(expandedRange.from.row, expandedRange.to.col)) || this.getBottomLeftCorner().isEqual(new _coords2.default(expandedRange.to.row, expandedRange.from.col)) || this.getBottomRightCorner().isEqual(new _coords2.default(expandedRange.to.row, expandedRange.to.col))) { - return true; - } - } - } - - return coords.isEqual(this.getTopLeftCorner()) || coords.isEqual(this.getTopRightCorner()) || coords.isEqual(this.getBottomLeftCorner()) || coords.isEqual(this.getBottomRightCorner()); - } - - /** - * @param {CellCoords} coords - * @param {CellRange} expandedRange - * @returns {CellCoords} - */ - - }, { - key: 'getOppositeCorner', - value: function getOppositeCorner(coords, expandedRange) { - if (!(coords instanceof _coords2.default)) { - return false; - } - - if (expandedRange) { - if (expandedRange.includes(coords)) { - if (this.getTopLeftCorner().isEqual(new _coords2.default(expandedRange.from.row, expandedRange.from.col))) { - return this.getBottomRightCorner(); - } - if (this.getTopRightCorner().isEqual(new _coords2.default(expandedRange.from.row, expandedRange.to.col))) { - return this.getBottomLeftCorner(); - } - if (this.getBottomLeftCorner().isEqual(new _coords2.default(expandedRange.to.row, expandedRange.from.col))) { - return this.getTopRightCorner(); - } - if (this.getBottomRightCorner().isEqual(new _coords2.default(expandedRange.to.row, expandedRange.to.col))) { - return this.getTopLeftCorner(); - } - } - } - - if (coords.isEqual(this.getBottomRightCorner())) { - return this.getTopLeftCorner(); - } else if (coords.isEqual(this.getTopLeftCorner())) { - return this.getBottomRightCorner(); - } else if (coords.isEqual(this.getTopRightCorner())) { - return this.getBottomLeftCorner(); - } else if (coords.isEqual(this.getBottomLeftCorner())) { - return this.getTopRightCorner(); - } - } - - /** - * @param {CellRange} range - * @returns {Array} - */ - - }, { - key: 'getBordersSharedWith', - value: function getBordersSharedWith(range) { - if (!this.includesRange(range)) { - return []; - } - - var thisBorders = { - top: Math.min(this.from.row, this.to.row), - bottom: Math.max(this.from.row, this.to.row), - left: Math.min(this.from.col, this.to.col), - right: Math.max(this.from.col, this.to.col) - }; - var rangeBorders = { - top: Math.min(range.from.row, range.to.row), - bottom: Math.max(range.from.row, range.to.row), - left: Math.min(range.from.col, range.to.col), - right: Math.max(range.from.col, range.to.col) - }; - var result = []; - - if (thisBorders.top == rangeBorders.top) { - result.push('top'); - } - if (thisBorders.right == rangeBorders.right) { - result.push('right'); - } - if (thisBorders.bottom == rangeBorders.bottom) { - result.push('bottom'); - } - if (thisBorders.left == rangeBorders.left) { - result.push('left'); - } - - return result; - } - - /** - * Get inner selected cell coords defined by this range - * - * @returns {Array} - */ - - }, { - key: 'getInner', - value: function getInner() { - var topLeft = this.getTopLeftCorner(); - var bottomRight = this.getBottomRightCorner(); - var out = []; - - for (var r = topLeft.row; r <= bottomRight.row; r++) { - for (var c = topLeft.col; c <= bottomRight.col; c++) { - if (!(this.from.row === r && this.from.col === c) && !(this.to.row === r && this.to.col === c)) { - out.push(new _coords2.default(r, c)); - } - } - } - return out; - } - - /** - * Get all selected cell coords defined by this range - * - * @returns {Array} - */ - - }, { - key: 'getAll', - value: function getAll() { - var topLeft = this.getTopLeftCorner(); - var bottomRight = this.getBottomRightCorner(); - var out = []; - - for (var r = topLeft.row; r <= bottomRight.row; r++) { - for (var c = topLeft.col; c <= bottomRight.col; c++) { - if (topLeft.row === r && topLeft.col === c) { - out.push(topLeft); - } else if (bottomRight.row === r && bottomRight.col === c) { - out.push(bottomRight); - } else { - out.push(new _coords2.default(r, c)); - } - } - } - - return out; - } - - /** - * Runs a callback function against all cells in the range. You can break the iteration by returning - * `false` in the callback function - * - * @param callback {Function} - */ - - }, { - key: 'forAll', - value: function forAll(callback) { - var topLeft = this.getTopLeftCorner(); - var bottomRight = this.getBottomRightCorner(); - - for (var r = topLeft.row; r <= bottomRight.row; r++) { - for (var c = topLeft.col; c <= bottomRight.col; c++) { - var breakIteration = callback(r, c); - - if (breakIteration === false) { - return; - } - } - } - } - }]); - - return CellRange; -}(); - -exports.default = CellRange; - -/***/ }), -/* 80 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE_80__; - -/***/ }), -/* 81 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.getRegisteredCellTypes = exports.getRegisteredCellTypeNames = exports.hasCellType = exports.getCellType = exports.registerCellType = undefined; - -var _staticRegister2 = __webpack_require__(63); - -var _staticRegister3 = _interopRequireDefault(_staticRegister2); - -var _editors = __webpack_require__(15); - -var _renderers = __webpack_require__(9); - -var _validators = __webpack_require__(27); - -var _autocompleteType = __webpack_require__(231); - -var _autocompleteType2 = _interopRequireDefault(_autocompleteType); - -var _checkboxType = __webpack_require__(232); - -var _checkboxType2 = _interopRequireDefault(_checkboxType); - -var _dateType = __webpack_require__(233); - -var _dateType2 = _interopRequireDefault(_dateType); - -var _dropdownType = __webpack_require__(234); - -var _dropdownType2 = _interopRequireDefault(_dropdownType); - -var _handsontableType = __webpack_require__(235); - -var _handsontableType2 = _interopRequireDefault(_handsontableType); - -var _numericType = __webpack_require__(236); - -var _numericType2 = _interopRequireDefault(_numericType); - -var _passwordType = __webpack_require__(237); - -var _passwordType2 = _interopRequireDefault(_passwordType); - -var _textType = __webpack_require__(238); - -var _textType2 = _interopRequireDefault(_textType); - -var _timeType = __webpack_require__(239); - -var _timeType2 = _interopRequireDefault(_timeType); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var _staticRegister = (0, _staticRegister3.default)('cellTypes'), - register = _staticRegister.register, - getItem = _staticRegister.getItem, - hasItem = _staticRegister.hasItem, - getNames = _staticRegister.getNames, - getValues = _staticRegister.getValues; - -_register('autocomplete', _autocompleteType2.default); -_register('checkbox', _checkboxType2.default); -_register('date', _dateType2.default); -_register('dropdown', _dropdownType2.default); -_register('handsontable', _handsontableType2.default); -_register('numeric', _numericType2.default); -_register('password', _passwordType2.default); -_register('text', _textType2.default); -_register('time', _timeType2.default); - -/** - * Retrieve cell type object. - * - * @param {String} name Cell type identification. - * @returns {Object} Returns cell type object. - */ -function _getItem(name) { - if (!hasItem(name)) { - throw Error('You declared cell type "' + name + '" as a string that is not mapped to a known object.\n Cell type must be an object or a string mapped to an object registered by "Handsontable.cellTypes.registerCellType" method'); - } - - return getItem(name); -} - -/** - * Register cell type under specified name. - * - * @param {String} name Cell type identification. - * @param {Object} type An object with contains keys (eq: `editor`, `renderer`, `validator`) which describes specified behaviour of the cell. - */ -function _register(name, type) { - var editor = type.editor, - renderer = type.renderer, - validator = type.validator; - - - if (editor) { - (0, _editors.registerEditor)(name, editor); - } - if (renderer) { - (0, _renderers.registerRenderer)(name, renderer); - } - if (validator) { - (0, _validators.registerValidator)(name, validator); - } - - register(name, type); -} - -exports.registerCellType = _register; -exports.getCellType = _getItem; -exports.hasCellType = hasItem; -exports.getRegisteredCellTypeNames = getNames; -exports.getRegisteredCellTypes = getValues; - -/***/ }), -/* 82 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.default = Core; - -var _numbro = __webpack_require__(80); - -var _numbro2 = _interopRequireDefault(_numbro); - -var _element = __webpack_require__(0); - -var _setting = __webpack_require__(83); - -var _function = __webpack_require__(35); - -var _mixed = __webpack_require__(22); - -var _browser = __webpack_require__(26); - -var _dataMap = __webpack_require__(240); - -var _dataMap2 = _interopRequireDefault(_dataMap); - -var _editorManager = __webpack_require__(243); - -var _editorManager2 = _interopRequireDefault(_editorManager); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _object = __webpack_require__(1); - -var _array = __webpack_require__(2); - -var _plugins = __webpack_require__(5); - -var _renderers = __webpack_require__(9); - -var _validators = __webpack_require__(27); - -var _string = __webpack_require__(32); - -var _number = __webpack_require__(6); - -var _tableView = __webpack_require__(244); - -var _tableView2 = _interopRequireDefault(_tableView); - -var _dataSource = __webpack_require__(245); - -var _dataSource2 = _interopRequireDefault(_dataSource); - -var _data = __webpack_require__(84); - -var _recordTranslator = __webpack_require__(172); - -var _rootInstance = __webpack_require__(173); - -var _src = __webpack_require__(12); - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _defaultSettings = __webpack_require__(174); - -var _defaultSettings2 = _interopRequireDefault(_defaultSettings); - -var _cellTypes = __webpack_require__(81); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - -var activeGuid = null; - -/** - * Handsontable constructor - * - * @core - * @dependencies numbro - * @constructor Core - * @description - * - * After Handsontable is constructed, you can modify the grid behavior using the available public methods. - * - * --- - * ## How to call methods - * - * These are 2 equal ways to call a Handsontable method: - * - * ```js - * // all following examples assume that you constructed Handsontable like this - * var ht = new Handsontable(document.getElementById('example1'), options); - * - * // now, to use setDataAtCell method, you can either: - * ht.setDataAtCell(0, 0, 'new value'); - * ``` - * - * Alternatively, you can call the method using jQuery wrapper (__obsolete__, requires initialization using our jQuery guide - * ```js - * $('#example1').handsontable('setDataAtCell', 0, 0, 'new value'); - * ``` - * --- - */ -function Core(rootElement, userSettings) { - var rootInstanceSymbol = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var priv, - datamap, - dataSource, - grid, - selection, - editorManager, - instance = this, - GridSettings = function GridSettings() {}, - eventManager = new _eventManager2.default(instance); - - (0, _object.extend)(GridSettings.prototype, _defaultSettings2.default.prototype); // create grid settings as a copy of default settings - (0, _object.extend)(GridSettings.prototype, userSettings); // overwrite defaults with user settings - (0, _object.extend)(GridSettings.prototype, expandType(userSettings)); - - if ((0, _rootInstance.hasValidParameter)(rootInstanceSymbol)) { - (0, _rootInstance.registerAsRootInstance)(this); - } - - this.rootElement = rootElement; - this.isHotTableEnv = (0, _element.isChildOfWebComponentTable)(this.rootElement); - _eventManager2.default.isHotTableEnv = this.isHotTableEnv; - - this.container = document.createElement('div'); - this.renderCall = false; - - rootElement.insertBefore(this.container, rootElement.firstChild); - - if (false) { - (0, _mixed._injectProductInfo)(userSettings.licenseKey, rootElement); - } - - this.guid = 'ht_' + (0, _string.randomString)(); // this is the namespace for global events - - var recordTranslator = (0, _recordTranslator.getTranslator)(instance); - - dataSource = new _dataSource2.default(instance); - - if (!this.rootElement.id || this.rootElement.id.substring(0, 3) === 'ht_') { - this.rootElement.id = this.guid; // if root element does not have an id, assign a random id - } - priv = { - cellSettings: [], - columnSettings: [], - columnsSettingConflicts: ['data', 'width'], - settings: new GridSettings(), // current settings instance - selRange: null, // exposed by public method `getSelectedRange` - isPopulated: null, - scrollable: null, - firstRun: true - }; - - grid = { - /** - * Inserts or removes rows and columns - * - * @memberof Core# - * @function alter - * @private - * @param {String} action Possible values: "insert_row", "insert_col", "remove_row", "remove_col" - * @param {Number} index - * @param {Number} amount - * @param {String} [source] Optional. Source of hook runner. - * @param {Boolean} [keepEmptyRows] Optional. Flag for preventing deletion of empty rows. - */ - alter: function alter(action, index, amount, source, keepEmptyRows) { - var delta; - - amount = amount || 1; - - function spliceWith(data, index, count, toInject) { - var valueFactory = function valueFactory() { - var result = void 0; - - if (toInject === 'array') { - result = []; - } else if (toInject === 'object') { - result = {}; - } - - return result; - }; - var spliceArgs = (0, _array.arrayMap)(new Array(count), function () { - return valueFactory(); - }); - - spliceArgs.unshift(index, 0); - data.splice.apply(data, _toConsumableArray(spliceArgs)); - } - - /* eslint-disable no-case-declarations */ - switch (action) { - case 'insert_row': - - var numberOfSourceRows = instance.countSourceRows(); - - if (instance.getSettings().maxRows === numberOfSourceRows) { - return; - } - - index = (0, _mixed.isDefined)(index) ? index : numberOfSourceRows; - - delta = datamap.createRow(index, amount, source); - spliceWith(priv.cellSettings, index, amount, 'array'); - - if (delta) { - if (selection.isSelected() && priv.selRange.from.row >= index) { - priv.selRange.from.row += delta; - selection.transformEnd(delta, 0); // will call render() internally - } else { - selection.refreshBorders(); // it will call render and prepare methods - } - } - break; - - case 'insert_col': - delta = datamap.createCol(index, amount, source); - - for (var row = 0, len = instance.countSourceRows(); row < len; row++) { - if (priv.cellSettings[row]) { - spliceWith(priv.cellSettings[row], index, amount); - } - } - - if (delta) { - if (Array.isArray(instance.getSettings().colHeaders)) { - var spliceArray = [index, 0]; - spliceArray.length += delta; // inserts empty (undefined) elements at the end of an array - Array.prototype.splice.apply(instance.getSettings().colHeaders, spliceArray); // inserts empty (undefined) elements into the colHeader array - } - - if (selection.isSelected() && priv.selRange.from.col >= index) { - priv.selRange.from.col += delta; - selection.transformEnd(0, delta); // will call render() internally - } else { - selection.refreshBorders(); // it will call render and prepare methods - } - } - break; - - case 'remove_row': - datamap.removeRow(index, amount, source); - priv.cellSettings.splice(index, amount); - - var totalRows = instance.countRows(); - var fixedRowsTop = instance.getSettings().fixedRowsTop; - if (fixedRowsTop >= index + 1) { - instance.getSettings().fixedRowsTop -= Math.min(amount, fixedRowsTop - index); - } - - var fixedRowsBottom = instance.getSettings().fixedRowsBottom; - if (fixedRowsBottom && index >= totalRows - fixedRowsBottom) { - instance.getSettings().fixedRowsBottom -= Math.min(amount, fixedRowsBottom); - } - - grid.adjustRowsAndCols(); - selection.refreshBorders(); // it will call render and prepare methods - break; - - case 'remove_col': - var visualColumnIndex = recordTranslator.toPhysicalColumn(index); - - datamap.removeCol(index, amount, source); - - for (var _row = 0, _len = instance.countSourceRows(); _row < _len; _row++) { - if (priv.cellSettings[_row]) { - // if row hasn't been rendered it wouldn't have cellSettings - priv.cellSettings[_row].splice(visualColumnIndex, amount); - } - } - var fixedColumnsLeft = instance.getSettings().fixedColumnsLeft; - - if (fixedColumnsLeft >= index + 1) { - instance.getSettings().fixedColumnsLeft -= Math.min(amount, fixedColumnsLeft - index); - } - - if (Array.isArray(instance.getSettings().colHeaders)) { - if (typeof visualColumnIndex === 'undefined') { - visualColumnIndex = -1; - } - instance.getSettings().colHeaders.splice(visualColumnIndex, amount); - } - - grid.adjustRowsAndCols(); - selection.refreshBorders(); // it will call render and prepare methods - - break; - default: - throw new Error('There is no such action "' + action + '"'); - } - - if (!keepEmptyRows) { - grid.adjustRowsAndCols(); // makes sure that we did not add rows that will be removed in next refresh - } - }, - - - /** - * Makes sure there are empty rows at the bottom of the table - */ - adjustRowsAndCols: function adjustRowsAndCols() { - if (priv.settings.minRows) { - // should I add empty rows to data source to meet minRows? - var rows = instance.countRows(); - - if (rows < priv.settings.minRows) { - for (var r = 0, minRows = priv.settings.minRows; r < minRows - rows; r++) { - datamap.createRow(instance.countRows(), 1, 'auto'); - } - } - } - if (priv.settings.minSpareRows) { - var emptyRows = instance.countEmptyRows(true); - - // should I add empty rows to meet minSpareRows? - if (emptyRows < priv.settings.minSpareRows) { - for (; emptyRows < priv.settings.minSpareRows && instance.countSourceRows() < priv.settings.maxRows; emptyRows++) { - datamap.createRow(instance.countRows(), 1, 'auto'); - } - } - } - { - var emptyCols = void 0; - - // count currently empty cols - if (priv.settings.minCols || priv.settings.minSpareCols) { - emptyCols = instance.countEmptyCols(true); - } - - // should I add empty cols to meet minCols? - if (priv.settings.minCols && !priv.settings.columns && instance.countCols() < priv.settings.minCols) { - for (; instance.countCols() < priv.settings.minCols; emptyCols++) { - datamap.createCol(instance.countCols(), 1, 'auto'); - } - } - // should I add empty cols to meet minSpareCols? - if (priv.settings.minSpareCols && !priv.settings.columns && instance.dataType === 'array' && emptyCols < priv.settings.minSpareCols) { - for (; emptyCols < priv.settings.minSpareCols && instance.countCols() < priv.settings.maxCols; emptyCols++) { - datamap.createCol(instance.countCols(), 1, 'auto'); - } - } - } - var rowCount = instance.countRows(); - var colCount = instance.countCols(); - - if (rowCount === 0 || colCount === 0) { - selection.deselect(); - } - - if (selection.isSelected()) { - var selectionChanged = false; - var fromRow = priv.selRange.from.row; - var fromCol = priv.selRange.from.col; - var toRow = priv.selRange.to.row; - var toCol = priv.selRange.to.col; - - // if selection is outside, move selection to last row - if (fromRow > rowCount - 1) { - fromRow = rowCount - 1; - selectionChanged = true; - - if (toRow > fromRow) { - toRow = fromRow; - } - } else if (toRow > rowCount - 1) { - toRow = rowCount - 1; - selectionChanged = true; - - if (fromRow > toRow) { - fromRow = toRow; - } - } - // if selection is outside, move selection to last row - if (fromCol > colCount - 1) { - fromCol = colCount - 1; - selectionChanged = true; - - if (toCol > fromCol) { - toCol = fromCol; - } - } else if (toCol > colCount - 1) { - toCol = colCount - 1; - selectionChanged = true; - - if (fromCol > toCol) { - fromCol = toCol; - } - } - - if (selectionChanged) { - instance.selectCell(fromRow, fromCol, toRow, toCol); - } - } - if (instance.view) { - instance.view.wt.wtOverlays.adjustElementsSize(); - } - }, - - - /** - * Populate the data from the provided 2d array from the given cell coordinates. - * - * @private - * @param {Object} start Start selection position. Visual indexes. - * @param {Array} input 2d data array. - * @param {Object} [end] End selection position (only for drag-down mode). Visual indexes. - * @param {String} [source="populateFromArray"] Source information string. - * @param {String} [method="overwrite"] Populate method. Possible options: `shift_down`, `shift_right`, `overwrite`. - * @param {String} direction (left|right|up|down) String specifying the direction. - * @param {Array} deltas The deltas array. A difference between values of adjacent cells. - * Useful **only** when the type of handled cells is `numeric`. - * @returns {Object|undefined} ending td in pasted area (only if any cell was changed). - */ - populateFromArray: function populateFromArray(start, input, end, source, method, direction, deltas) { - // TODO: either remove or implement the `direction` argument. Currently it's not working at all. - var r, - rlen, - c, - clen, - setData = [], - current = {}; - - rlen = input.length; - - if (rlen === 0) { - return false; - } - - var repeatCol, - repeatRow, - cmax, - rmax, - baseEnd = { - row: end === null ? null : end.row, - col: end === null ? null : end.col - }; - - /* eslint-disable no-case-declarations */ - // insert data with specified pasteMode method - switch (method) { - case 'shift_down': - repeatCol = end ? end.col - start.col + 1 : 0; - repeatRow = end ? end.row - start.row + 1 : 0; - input = (0, _data.translateRowsToColumns)(input); - for (c = 0, clen = input.length, cmax = Math.max(clen, repeatCol); c < cmax; c++) { - if (c < clen) { - var _instance; - - for (r = 0, rlen = input[c].length; r < repeatRow - rlen; r++) { - input[c].push(input[c][r % rlen]); - } - input[c].unshift(start.col + c, start.row, 0); - (_instance = instance).spliceCol.apply(_instance, _toConsumableArray(input[c])); - } else { - var _instance2; - - input[c % clen][0] = start.col + c; - (_instance2 = instance).spliceCol.apply(_instance2, _toConsumableArray(input[c % clen])); - } - } - break; - - case 'shift_right': - repeatCol = end ? end.col - start.col + 1 : 0; - repeatRow = end ? end.row - start.row + 1 : 0; - for (r = 0, rlen = input.length, rmax = Math.max(rlen, repeatRow); r < rmax; r++) { - if (r < rlen) { - var _instance3; - - for (c = 0, clen = input[r].length; c < repeatCol - clen; c++) { - input[r].push(input[r][c % clen]); - } - input[r].unshift(start.row + r, start.col, 0); - (_instance3 = instance).spliceRow.apply(_instance3, _toConsumableArray(input[r])); - } else { - var _instance4; - - input[r % rlen][0] = start.row + r; - (_instance4 = instance).spliceRow.apply(_instance4, _toConsumableArray(input[r % rlen])); - } - } - break; - - case 'overwrite': - default: - // overwrite and other not specified options - current.row = start.row; - current.col = start.col; - - var selected = { // selected range - row: end && start ? end.row - start.row + 1 : 1, - col: end && start ? end.col - start.col + 1 : 1 - }; - var skippedRow = 0; - var skippedColumn = 0; - var pushData = true; - var cellMeta = void 0; - - var getInputValue = function getInputValue(row) { - var col = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - var rowValue = input[row % input.length]; - - if (col !== null) { - return rowValue[col % rowValue.length]; - } - - return rowValue; - }; - var rowInputLength = input.length; - var rowSelectionLength = end ? end.row - start.row + 1 : 0; - - if (end) { - rlen = rowSelectionLength; - } else { - rlen = Math.max(rowInputLength, rowSelectionLength); - } - for (r = 0; r < rlen; r++) { - if (end && current.row > end.row && rowSelectionLength > rowInputLength || !priv.settings.allowInsertRow && current.row > instance.countRows() - 1 || current.row >= priv.settings.maxRows) { - break; - } - var visualRow = r - skippedRow; - var colInputLength = getInputValue(visualRow).length; - var colSelectionLength = end ? end.col - start.col + 1 : 0; - - if (end) { - clen = colSelectionLength; - } else { - clen = Math.max(colInputLength, colSelectionLength); - } - current.col = start.col; - cellMeta = instance.getCellMeta(current.row, current.col); - - if ((source === 'CopyPaste.paste' || source === 'Autofill.autofill') && cellMeta.skipRowOnPaste) { - skippedRow++; - current.row++; - rlen++; - /* eslint-disable no-continue */ - continue; - } - skippedColumn = 0; - - for (c = 0; c < clen; c++) { - if (end && current.col > end.col && colSelectionLength > colInputLength || !priv.settings.allowInsertColumn && current.col > instance.countCols() - 1 || current.col >= priv.settings.maxCols) { - break; - } - cellMeta = instance.getCellMeta(current.row, current.col); - - if ((source === 'CopyPaste.paste' || source === 'Autofill.fill') && cellMeta.skipColumnOnPaste) { - skippedColumn++; - current.col++; - clen++; - continue; - } - if (cellMeta.readOnly) { - current.col++; - /* eslint-disable no-continue */ - continue; - } - var visualColumn = c - skippedColumn; - var value = getInputValue(visualRow, visualColumn); - var orgValue = instance.getDataAtCell(current.row, current.col); - var index = { - row: visualRow, - col: visualColumn - }; - - if (source === 'Autofill.fill') { - var result = instance.runHooks('beforeAutofillInsidePopulate', index, direction, input, deltas, {}, selected); - - if (result) { - value = (0, _mixed.isUndefined)(result.value) ? value : result.value; - } - } - if (value !== null && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') { - if (orgValue === null || (typeof orgValue === 'undefined' ? 'undefined' : _typeof(orgValue)) !== 'object') { - pushData = false; - } else { - var orgValueSchema = (0, _object.duckSchema)(orgValue[0] || orgValue); - var valueSchema = (0, _object.duckSchema)(value[0] || value); - - /* eslint-disable max-depth */ - if ((0, _object.isObjectEquals)(orgValueSchema, valueSchema)) { - value = (0, _object.deepClone)(value); - } else { - pushData = false; - } - } - } else if (orgValue !== null && (typeof orgValue === 'undefined' ? 'undefined' : _typeof(orgValue)) === 'object') { - pushData = false; - } - if (pushData) { - setData.push([current.row, current.col, value]); - } - pushData = true; - current.col++; - } - current.row++; - } - instance.setDataAtCell(setData, null, null, source || 'populateFromArray'); - break; - } - } - }; - - /* eslint-disable no-multi-assign */ - this.selection = selection = { // this public assignment is only temporary - inProgress: false, - - selectedHeader: { - cols: false, - rows: false - }, - - /** - * @param {Boolean} [rows=false] - * @param {Boolean} [cols=false] - * @param {Boolean} [corner=false] - */ - setSelectedHeaders: function setSelectedHeaders() { - var rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var cols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var corner = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - instance.selection.selectedHeader.rows = rows; - instance.selection.selectedHeader.cols = cols; - instance.selection.selectedHeader.corner = corner; - }, - - - /** - * Sets inProgress to `true`. This enables onSelectionEnd and onSelectionEndByProp to function as desired. - */ - begin: function begin() { - instance.selection.inProgress = true; - }, - - - /** - * Sets inProgress to `false`. Triggers onSelectionEnd and onSelectionEndByProp. - */ - finish: function finish() { - var sel = instance.getSelected(); - instance.runHooks('afterSelectionEnd', sel[0], sel[1], sel[2], sel[3]); - instance.runHooks('afterSelectionEndByProp', sel[0], instance.colToProp(sel[1]), sel[2], instance.colToProp(sel[3])); - instance.selection.inProgress = false; - }, - - - /** - * @returns {Boolean} - */ - isInProgress: function isInProgress() { - return instance.selection.inProgress; - }, - - - /** - * Starts selection range on given td object. - * - * @param {CellCoords} coords Visual coords. - * @param keepEditorOpened - */ - setRangeStart: function setRangeStart(coords, keepEditorOpened) { - instance.runHooks('beforeSetRangeStart', coords); - priv.selRange = new _src.CellRange(coords, coords, coords); - selection.setRangeEnd(coords, null, keepEditorOpened); - }, - - - /** - * Starts selection range on given td object. - * - * @param {CellCoords} coords Visual coords. - * @param keepEditorOpened - */ - setRangeStartOnly: function setRangeStartOnly(coords) { - instance.runHooks('beforeSetRangeStartOnly', coords); - priv.selRange = new _src.CellRange(coords, coords, coords); - }, - - - /** - * Ends selection range on given td object. - * - * @param {CellCoords} coords Visual coords. - * @param {Boolean} [scrollToCell=true] If `true`, viewport will be scrolled to range end - * @param {Boolean} [keepEditorOpened] If `true`, cell editor will be still opened after changing selection range - */ - setRangeEnd: function setRangeEnd(coords, scrollToCell, keepEditorOpened) { - if (priv.selRange === null) { - return; - } - var disableVisualSelection, - isHeaderSelected = false, - areCoordsPositive = true; - - var firstVisibleRow = instance.view.wt.wtTable.getFirstVisibleRow(); - var firstVisibleColumn = instance.view.wt.wtTable.getFirstVisibleColumn(); - var newRangeCoords = { - row: null, - col: null - }; - - // trigger handlers - instance.runHooks('beforeSetRangeEnd', coords); - instance.selection.begin(); - - newRangeCoords.row = coords.row < 0 ? firstVisibleRow : coords.row; - newRangeCoords.col = coords.col < 0 ? firstVisibleColumn : coords.col; - - priv.selRange.to = new _src.CellCoords(newRangeCoords.row, newRangeCoords.col); - - if (!priv.settings.multiSelect) { - priv.selRange.from = coords; - } - // set up current selection - instance.view.wt.selections.current.clear(); - - disableVisualSelection = instance.getCellMeta(priv.selRange.highlight.row, priv.selRange.highlight.col).disableVisualSelection; - - if (typeof disableVisualSelection === 'string') { - disableVisualSelection = [disableVisualSelection]; - } - - if (disableVisualSelection === false || Array.isArray(disableVisualSelection) && disableVisualSelection.indexOf('current') === -1) { - instance.view.wt.selections.current.add(priv.selRange.highlight); - } - // set up area selection - instance.view.wt.selections.area.clear(); - - if ((disableVisualSelection === false || Array.isArray(disableVisualSelection) && disableVisualSelection.indexOf('area') === -1) && selection.isMultiple()) { - instance.view.wt.selections.area.add(priv.selRange.from); - instance.view.wt.selections.area.add(priv.selRange.to); - } - // set up highlight - if (priv.settings.currentHeaderClassName || priv.settings.currentRowClassName || priv.settings.currentColClassName) { - instance.view.wt.selections.highlight.clear(); - instance.view.wt.selections.highlight.add(priv.selRange.from); - instance.view.wt.selections.highlight.add(priv.selRange.to); - } - - var preventScrolling = (0, _object.createObjectPropListener)('value'); - - // trigger handlers - instance.runHooks('afterSelection', priv.selRange.from.row, priv.selRange.from.col, priv.selRange.to.row, priv.selRange.to.col, preventScrolling); - instance.runHooks('afterSelectionByProp', priv.selRange.from.row, datamap.colToProp(priv.selRange.from.col), priv.selRange.to.row, datamap.colToProp(priv.selRange.to.col), preventScrolling); - - if (priv.selRange.from.row === 0 && priv.selRange.to.row === instance.countRows() - 1 && instance.countRows() > 1 || priv.selRange.from.col === 0 && priv.selRange.to.col === instance.countCols() - 1 && instance.countCols() > 1) { - isHeaderSelected = true; - } - - if (coords.row < 0 || coords.col < 0) { - areCoordsPositive = false; - } - - if (preventScrolling.isTouched()) { - scrollToCell = !preventScrolling.value; - } - - if (scrollToCell !== false && !isHeaderSelected && areCoordsPositive) { - if (priv.selRange.from && !selection.isMultiple()) { - instance.view.scrollViewport(priv.selRange.from); - } else { - instance.view.scrollViewport(coords); - } - } - - if (selection.selectedHeader.rows && selection.selectedHeader.cols) { - (0, _element.addClass)(instance.rootElement, ['ht__selection--rows', 'ht__selection--columns']); - } else if (selection.selectedHeader.rows) { - (0, _element.removeClass)(instance.rootElement, 'ht__selection--columns'); - (0, _element.addClass)(instance.rootElement, 'ht__selection--rows'); - } else if (selection.selectedHeader.cols) { - (0, _element.removeClass)(instance.rootElement, 'ht__selection--rows'); - (0, _element.addClass)(instance.rootElement, 'ht__selection--columns'); - } else { - (0, _element.removeClass)(instance.rootElement, ['ht__selection--rows', 'ht__selection--columns']); - } - - selection.refreshBorders(null, keepEditorOpened); - }, - - - /** - * Destroys editor, redraws borders around cells, prepares editor. - * - * @param {Boolean} [revertOriginal] - * @param {Boolean} [keepEditor] - */ - refreshBorders: function refreshBorders(revertOriginal, keepEditor) { - if (!keepEditor) { - editorManager.destroyEditor(revertOriginal); - } - instance.view.render(); - - if (selection.isSelected() && !keepEditor) { - editorManager.prepareEditor(); - } - }, - - - /** - * Returns information if we have a multiselection. - * - * @returns {Boolean} - */ - isMultiple: function isMultiple() { - var isMultiple = !(priv.selRange.to.col === priv.selRange.from.col && priv.selRange.to.row === priv.selRange.from.row), - modifier = instance.runHooks('afterIsMultipleSelection', isMultiple); - - if (isMultiple) { - return modifier; - } - }, - - - /** - * Selects cell relative to current cell (if possible). - */ - transformStart: function transformStart(rowDelta, colDelta, force, keepEditorOpened) { - var delta = new _src.CellCoords(rowDelta, colDelta), - rowTransformDir = 0, - colTransformDir = 0, - totalRows, - totalCols, - coords, - fixedRowsBottom; - - instance.runHooks('modifyTransformStart', delta); - totalRows = instance.countRows(); - totalCols = instance.countCols(); - fixedRowsBottom = instance.getSettings().fixedRowsBottom; - - if (priv.selRange.highlight.row + rowDelta > totalRows - 1) { - if (force && priv.settings.minSpareRows > 0 && !(fixedRowsBottom && priv.selRange.highlight.row >= totalRows - fixedRowsBottom - 1)) { - instance.alter('insert_row', totalRows); - totalRows = instance.countRows(); - } else if (priv.settings.autoWrapCol) { - delta.row = 1 - totalRows; - delta.col = priv.selRange.highlight.col + delta.col == totalCols - 1 ? 1 - totalCols : 1; - } - } else if (priv.settings.autoWrapCol && priv.selRange.highlight.row + delta.row < 0 && priv.selRange.highlight.col + delta.col >= 0) { - delta.row = totalRows - 1; - delta.col = priv.selRange.highlight.col + delta.col == 0 ? totalCols - 1 : -1; - } - - if (priv.selRange.highlight.col + delta.col > totalCols - 1) { - if (force && priv.settings.minSpareCols > 0) { - instance.alter('insert_col', totalCols); - totalCols = instance.countCols(); - } else if (priv.settings.autoWrapRow) { - delta.row = priv.selRange.highlight.row + delta.row == totalRows - 1 ? 1 - totalRows : 1; - delta.col = 1 - totalCols; - } - } else if (priv.settings.autoWrapRow && priv.selRange.highlight.col + delta.col < 0 && priv.selRange.highlight.row + delta.row >= 0) { - delta.row = priv.selRange.highlight.row + delta.row == 0 ? totalRows - 1 : -1; - delta.col = totalCols - 1; - } - - coords = new _src.CellCoords(priv.selRange.highlight.row + delta.row, priv.selRange.highlight.col + delta.col); - - if (coords.row < 0) { - rowTransformDir = -1; - coords.row = 0; - } else if (coords.row > 0 && coords.row >= totalRows) { - rowTransformDir = 1; - coords.row = totalRows - 1; - } - - if (coords.col < 0) { - colTransformDir = -1; - coords.col = 0; - } else if (coords.col > 0 && coords.col >= totalCols) { - colTransformDir = 1; - coords.col = totalCols - 1; - } - instance.runHooks('afterModifyTransformStart', coords, rowTransformDir, colTransformDir); - selection.setRangeStart(coords, keepEditorOpened); - }, - - - /** - * Sets selection end cell relative to current selection end cell (if possible). - */ - transformEnd: function transformEnd(rowDelta, colDelta) { - var delta = new _src.CellCoords(rowDelta, colDelta), - rowTransformDir = 0, - colTransformDir = 0, - totalRows, - totalCols, - coords; - - instance.runHooks('modifyTransformEnd', delta); - - totalRows = instance.countRows(); - totalCols = instance.countCols(); - coords = new _src.CellCoords(priv.selRange.to.row + delta.row, priv.selRange.to.col + delta.col); - - if (coords.row < 0) { - rowTransformDir = -1; - coords.row = 0; - } else if (coords.row > 0 && coords.row >= totalRows) { - rowTransformDir = 1; - coords.row = totalRows - 1; - } - - if (coords.col < 0) { - colTransformDir = -1; - coords.col = 0; - } else if (coords.col > 0 && coords.col >= totalCols) { - colTransformDir = 1; - coords.col = totalCols - 1; - } - instance.runHooks('afterModifyTransformEnd', coords, rowTransformDir, colTransformDir); - selection.setRangeEnd(coords, true); - }, - - - /** - * Returns `true` if currently there is a selection on screen, `false` otherwise. - * - * @returns {Boolean} - */ - isSelected: function isSelected() { - return priv.selRange !== null; - }, - - - /** - * Returns `true` if coords is within current selection coords. - * - * @param {CellCoords} coords - * @returns {Boolean} - */ - inInSelection: function inInSelection(coords) { - if (!selection.isSelected()) { - return false; - } - - return priv.selRange.includes(coords); - }, - - - /** - * Deselects all selected cells - */ - deselect: function deselect() { - if (!selection.isSelected()) { - return; - } - instance.selection.inProgress = false; // needed by HT inception - priv.selRange = null; - instance.view.wt.selections.current.clear(); - instance.view.wt.selections.area.clear(); - if (priv.settings.currentHeaderClassName || priv.settings.currentRowClassName || priv.settings.currentColClassName) { - instance.view.wt.selections.highlight.clear(); - } - editorManager.destroyEditor(); - selection.refreshBorders(); - (0, _element.removeClass)(instance.rootElement, ['ht__selection--rows', 'ht__selection--columns']); - instance.runHooks('afterDeselect'); - }, - - - /** - * Select all cells - */ - selectAll: function selectAll() { - if (!priv.settings.multiSelect) { - return; - } - selection.setSelectedHeaders(true, true, true); - selection.setRangeStart(new _src.CellCoords(0, 0)); - selection.setRangeEnd(new _src.CellCoords(instance.countRows() - 1, instance.countCols() - 1), false); - }, - - - /** - * Deletes data from selected cells - */ - empty: function empty() { - if (!selection.isSelected()) { - return; - } - var topLeft = priv.selRange.getTopLeftCorner(); - var bottomRight = priv.selRange.getBottomRightCorner(); - var r, - c, - changes = []; - - for (r = topLeft.row; r <= bottomRight.row; r++) { - for (c = topLeft.col; c <= bottomRight.col; c++) { - if (!instance.getCellMeta(r, c).readOnly) { - changes.push([r, c, '']); - } - } - } - instance.setDataAtCell(changes); - } - }; - - this.init = function () { - dataSource.setData(priv.settings.data); - instance.runHooks('beforeInit'); - - if ((0, _browser.isMobileBrowser)()) { - (0, _element.addClass)(instance.rootElement, 'mobile'); - } - - this.updateSettings(priv.settings, true); - - this.view = new _tableView2.default(this); - editorManager = new _editorManager2.default(instance, priv, selection, datamap); - - this.forceFullRender = true; // used when data was changed - - instance.runHooks('init'); - this.view.render(); - - if (_typeof(priv.firstRun) === 'object') { - instance.runHooks('afterChange', priv.firstRun[0], priv.firstRun[1]); - priv.firstRun = false; - } - instance.runHooks('afterInit'); - }; - - function ValidatorsQueue() { - // moved this one level up so it can be used in any function here. Probably this should be moved to a separate file - var resolved = false; - - return { - validatorsInQueue: 0, - valid: true, - addValidatorToQueue: function addValidatorToQueue() { - this.validatorsInQueue++; - resolved = false; - }, - removeValidatorFormQueue: function removeValidatorFormQueue() { - this.validatorsInQueue = this.validatorsInQueue - 1 < 0 ? 0 : this.validatorsInQueue - 1; - this.checkIfQueueIsEmpty(); - }, - onQueueEmpty: function onQueueEmpty(valid) {}, - checkIfQueueIsEmpty: function checkIfQueueIsEmpty() { - if (this.validatorsInQueue == 0 && resolved == false) { - resolved = true; - this.onQueueEmpty(this.valid); - } - } - }; - } - - function validateChanges(changes, source, callback) { - var waitingForValidator = new ValidatorsQueue(); - waitingForValidator.onQueueEmpty = resolve; - - for (var i = changes.length - 1; i >= 0; i--) { - if (changes[i] === null) { - changes.splice(i, 1); - } else { - var row = changes[i][0]; - var col = datamap.propToCol(changes[i][1]); - - var cellProperties = instance.getCellMeta(row, col); - - if (cellProperties.type === 'numeric' && typeof changes[i][3] === 'string') { - if (changes[i][3].length > 0 && (/^-?[\d\s]*(\.|,)?\d*$/.test(changes[i][3]) || cellProperties.format)) { - var len = changes[i][3].length; - - if ((0, _mixed.isUndefined)(cellProperties.language)) { - _numbro2.default.culture('en-US'); - } else if (changes[i][3].indexOf('.') === len - 3 && changes[i][3].indexOf(',') === -1) { - // this input in format XXXX.XX is likely to come from paste. Let's parse it using international rules - _numbro2.default.culture('en-US'); - } else { - - _numbro2.default.culture(cellProperties.language); - } - - var _numbro$cultureData = _numbro2.default.cultureData(_numbro2.default.culture()), - delimiters = _numbro$cultureData.delimiters; - - // try to parse to float - https://github.com/foretagsplatsen/numbro/pull/183 - - - if (_numbro2.default.validate(changes[i][3]) && !isNaN(changes[i][3])) { - changes[i][3] = parseFloat(changes[i][3]); - } else { - changes[i][3] = (0, _numbro2.default)().unformat(changes[i][3]) || changes[i][3]; - } - } - } - - /* eslint-disable no-loop-func */ - if (instance.getCellValidator(cellProperties)) { - waitingForValidator.addValidatorToQueue(); - instance.validateCell(changes[i][3], cellProperties, function (i, cellProperties) { - return function (result) { - if (typeof result !== 'boolean') { - throw new Error('Validation error: result is not boolean'); - } - if (result === false && cellProperties.allowInvalid === false) { - changes.splice(i, 1); // cancel the change - cellProperties.valid = true; // we cancelled the change, so cell value is still valid - var cell = instance.getCell(cellProperties.visualRow, cellProperties.visualCol); - (0, _element.removeClass)(cell, instance.getSettings().invalidCellClassName); - --i; - } - waitingForValidator.removeValidatorFormQueue(); - }; - }(i, cellProperties), source); - } - } - } - waitingForValidator.checkIfQueueIsEmpty(); - - function resolve() { - var beforeChangeResult; - - if (changes.length) { - beforeChangeResult = instance.runHooks('beforeChange', changes, source); - if ((0, _function.isFunction)(beforeChangeResult)) { - console.warn('Your beforeChange callback returns a function. It\'s not supported since Handsontable 0.12.1 (and the returned function will not be executed).'); - } else if (beforeChangeResult === false) { - changes.splice(0, changes.length); // invalidate all changes (remove everything from array) - } - } - callback(); // called when async validators are resolved and beforeChange was not async - } - } - - /** - * Internal function to apply changes. Called after validateChanges - * - * @private - * @param {Array} changes Array in form of [row, prop, oldValue, newValue] - * @param {String} source String that identifies how this change will be described in changes array (useful in onChange callback) - * @fires Hooks#beforeChangeRender - * @fires Hooks#afterChange - */ - function applyChanges(changes, source) { - var i = changes.length - 1; - - if (i < 0) { - return; - } - - for (; i >= 0; i--) { - var skipThisChange = false; - - if (changes[i] === null) { - changes.splice(i, 1); - /* eslint-disable no-continue */ - continue; - } - - if (changes[i][2] == null && changes[i][3] == null) { - /* eslint-disable no-continue */ - continue; - } - - if (priv.settings.allowInsertRow) { - while (changes[i][0] > instance.countRows() - 1) { - var numberOfCreatedRows = datamap.createRow(void 0, void 0, source); - - if (numberOfCreatedRows === 0) { - skipThisChange = true; - break; - } - } - } - - if (skipThisChange) { - /* eslint-disable no-continue */ - continue; - } - - if (instance.dataType === 'array' && (!priv.settings.columns || priv.settings.columns.length === 0) && priv.settings.allowInsertColumn) { - while (datamap.propToCol(changes[i][1]) > instance.countCols() - 1) { - datamap.createCol(void 0, void 0, source); - } - } - - datamap.set(changes[i][0], changes[i][1], changes[i][3]); - } - - instance.forceFullRender = true; // used when data was changed - grid.adjustRowsAndCols(); - instance.runHooks('beforeChangeRender', changes, source); - selection.refreshBorders(null, true); - instance.view.wt.wtOverlays.adjustElementsSize(); - instance.runHooks('afterChange', changes, source || 'edit'); - - var activeEditor = instance.getActiveEditor(); - - if (activeEditor && (0, _mixed.isDefined)(activeEditor.refreshValue)) { - activeEditor.refreshValue(); - } - } - - this.validateCell = function (value, cellProperties, callback, source) { - var validator = instance.getCellValidator(cellProperties); - - function done(valid) { - var col = cellProperties.visualCol, - row = cellProperties.visualRow, - td = instance.getCell(row, col, true); - - if (td && td.nodeName != 'TH') { - instance.view.wt.wtSettings.settings.cellRenderer(row, col, td); - } - callback(valid); - } - - if ((0, _mixed.isRegExp)(validator)) { - validator = function (validator) { - return function (value, callback) { - callback(validator.test(value)); - }; - }(validator); - } - - if ((0, _function.isFunction)(validator)) { - - value = instance.runHooks('beforeValidate', value, cellProperties.visualRow, cellProperties.prop, source); - - // To provide consistent behaviour, validation should be always asynchronous - instance._registerTimeout(setTimeout(function () { - validator.call(cellProperties, value, function (valid) { - valid = instance.runHooks('afterValidate', valid, value, cellProperties.visualRow, cellProperties.prop, source); - cellProperties.valid = valid; - - done(valid); - instance.runHooks('postAfterValidate', valid, value, cellProperties.visualRow, cellProperties.prop, source); - }); - }, 0)); - } else { - // resolve callback even if validator function was not found - instance._registerTimeout(setTimeout(function () { - cellProperties.valid = true; - done(cellProperties.valid); - }, 0)); - } - }; - - function setDataInputToArray(row, propOrCol, value) { - if ((typeof row === 'undefined' ? 'undefined' : _typeof(row)) === 'object') { - // is it an array of changes - return row; - } - return [[row, propOrCol, value]]; - } - - /** - * @description - * Set new value to a cell. To change many cells at once, pass an array of `changes` in format `[[row, col, value], ...]` as - * the only parameter. `col` is the index of a __visible__ column (note that if columns were reordered, - * the current visible order will be used). `source` is a flag for before/afterChange events. If you pass only array of - * changes then `source` could be set as second parameter. - * - * @memberof Core# - * @function setDataAtCell - * @param {Number|Array} row Visual row index or array of changes in format `[[row, col, value], ...]`. - * @param {Number} col Visual column index. - * @param {String} value New value. - * @param {String} [source] String that identifies how this change will be described in the changes array (useful in onAfterChange or onBeforeChange callback). - */ - this.setDataAtCell = function (row, col, value, source) { - var input = setDataInputToArray(row, col, value), - i, - ilen, - changes = [], - prop; - - for (i = 0, ilen = input.length; i < ilen; i++) { - if (_typeof(input[i]) !== 'object') { - throw new Error('Method `setDataAtCell` accepts row number or changes array of arrays as its first parameter'); - } - if (typeof input[i][1] !== 'number') { - throw new Error('Method `setDataAtCell` accepts row and column number as its parameters. If you want to use object property name, use method `setDataAtRowProp`'); - } - prop = datamap.colToProp(input[i][1]); - changes.push([input[i][0], prop, dataSource.getAtCell(recordTranslator.toPhysicalRow(input[i][0]), input[i][1]), input[i][2]]); - } - - if (!source && (typeof row === 'undefined' ? 'undefined' : _typeof(row)) === 'object') { - source = col; - } - - instance.runHooks('afterSetDataAtCell', changes, source); - - validateChanges(changes, source, function () { - applyChanges(changes, source); - }); - }; - - /** - * @description - * Set new value to a cell. To change many cells at once, pass an array of `changes` in format `[[row, prop, value], ...]` as - * the only parameter. `prop` is the name of the object property (e.g. `first.name`). `source` is a flag for before/afterChange events. - * If you pass only array of changes then `source` could be set as second parameter. - * - * @memberof Core# - * @function setDataAtRowProp - * @param {Number|Array} row Visual row index or array of changes in format `[[row, prop, value], ...]`. - * @param {String} prop Property name or the source string. - * @param {String} value Value to be set. - * @param {String} [source] String that identifies how this change will be described in changes array (useful in onChange callback). - */ - this.setDataAtRowProp = function (row, prop, value, source) { - var input = setDataInputToArray(row, prop, value), - i, - ilen, - changes = []; - - for (i = 0, ilen = input.length; i < ilen; i++) { - changes.push([input[i][0], input[i][1], dataSource.getAtCell(recordTranslator.toPhysicalRow(input[i][0]), input[i][1]), input[i][2]]); - } - - if (!source && (typeof row === 'undefined' ? 'undefined' : _typeof(row)) === 'object') { - source = prop; - } - - instance.runHooks('afterSetDataAtRowProp', changes, source); - - validateChanges(changes, source, function () { - applyChanges(changes, source); - }); - }; - - /** - * Listen to the keyboard input on document body. - * - * @memberof Core# - * @function listen - * @since 0.11 - */ - this.listen = function () { - var invalidActiveElement = !document.activeElement || document.activeElement && document.activeElement.nodeName === void 0; - - if (document.activeElement && document.activeElement !== document.body && !invalidActiveElement) { - document.activeElement.blur(); - } else if (invalidActiveElement) { - // IE - document.body.focus(); - } - - activeGuid = instance.guid; - }; - - /** - * Stop listening to keyboard input on the document body. - * - * @memberof Core# - * @function unlisten - * @since 0.11 - */ - this.unlisten = function () { - if (this.isListening()) { - activeGuid = null; - } - }; - - /** - * Returns `true` if the current Handsontable instance is listening to keyboard input on document body. - * - * @memberof Core# - * @function isListening - * @since 0.11 - * @returns {Boolean} `true` if the instance is listening, `false` otherwise. - */ - this.isListening = function () { - return activeGuid === instance.guid; - }; - - /** - * Destroys the current editor, renders and selects the current cell. - * - * @memberof Core# - * @function destroyEditor - * @param {Boolean} [revertOriginal] If != `true`, edited data is saved. Otherwise the previous value is restored. - */ - this.destroyEditor = function (revertOriginal) { - selection.refreshBorders(revertOriginal); - }; - - /** - * Populate cells at position with 2D input array (e.g. `[[1, 2], [3, 4]]`). - * Use `endRow`, `endCol` when you want to cut input when a certain row is reached. - * Optional `source` parameter (default value "populateFromArray") is used to identify this call in the resulting events (beforeChange, afterChange). - * Optional `populateMethod` parameter (default value "overwrite", possible values "shift_down" and "shift_right") - * has the same effect as pasteMode option {@link Options#pasteMode} - * - * @memberof Core# - * @function populateFromArray - * @since 0.9.0 - * @param {Number} row Start visual row index. - * @param {Number} col Start visual column index. - * @param {Array} input 2d array - * @param {Number} [endRow] End visual row index (use when you want to cut input when certain row is reached). - * @param {Number} [endCol] End visual column index (use when you want to cut input when certain column is reached). - * @param {String} [source="populateFromArray"] Source string. - * @param {String} [method="overwrite"] Populate method. Possible options: `shift_down`, `shift_right`, `overwrite`. - * @param {String} direction Populate direction. (left|right|up|down) - * @param {Array} deltas Deltas array. - * @returns {Object|undefined} The ending TD element in pasted area (only if any cells were changed). - */ - this.populateFromArray = function (row, col, input, endRow, endCol, source, method, direction, deltas) { - var c; - - if (!((typeof input === 'undefined' ? 'undefined' : _typeof(input)) === 'object' && _typeof(input[0]) === 'object')) { - throw new Error('populateFromArray parameter `input` must be an array of arrays'); // API changed in 0.9-beta2, let's check if you use it correctly - } - c = typeof endRow === 'number' ? new _src.CellCoords(endRow, endCol) : null; - - return grid.populateFromArray(new _src.CellCoords(row, col), input, c, source, method, direction, deltas); - }; - - /** - * Adds/removes data from the column. This function is modelled after Array.splice. - * Parameter `col` is the index of the column in which do you want to do splice. - * Parameter `index` is the row index at which to start changing the array. - * If negative, will begin that many elements from the end. Parameter `amount`, is the number of the old array elements to remove. - * If the amount is 0, no elements are removed. Fourth and further parameters are the `elements` to add to the array. - * If you don't specify any elements, spliceCol simply removes elements from the array. - * {@link DataMap#spliceCol} - * - * @memberof Core# - * @function spliceCol - * @since 0.9-beta2 - * @param {Number} col Index of the column in which do you want to do splice. - * @param {Number} index Index at which to start changing the array. If negative, will begin that many elements from the end. - * @param {Number} amount An integer indicating the number of old array elements to remove. If amount is 0, no elements are removed. - * @param {*} [elements] The elements to add to the array. If you don't specify any elements, spliceCol simply removes elements from the array. - */ - this.spliceCol = function (col, index, amount /* , elements... */) { - var _datamap; - - return (_datamap = datamap).spliceCol.apply(_datamap, arguments); - }; - - /** - * Adds/removes data from the row. This function works is modelled after Array.splice. - * Parameter `row` is the index of row in which do you want to do splice. - * Parameter `index` is the column index at which to start changing the array. - * If negative, will begin that many elements from the end. Parameter `amount`, is the number of old array elements to remove. - * If the amount is 0, no elements are removed. Fourth and further parameters are the `elements` to add to the array. - * If you don't specify any elements, spliceCol simply removes elements from the array. - * {@link DataMap#spliceRow} - * - * @memberof Core# - * @function spliceRow - * @since 0.11 - * @param {Number} row Index of column in which do you want to do splice. - * @param {Number} index Index at which to start changing the array. If negative, will begin that many elements from the end. - * @param {Number} amount An integer indicating the number of old array elements to remove. If amount is 0, no elements are removed. - * @param {*} [elements] The elements to add to the array. If you don't specify any elements, spliceCol simply removes elements from the array. - */ - this.spliceRow = function (row, index, amount /* , elements... */) { - var _datamap2; - - return (_datamap2 = datamap).spliceRow.apply(_datamap2, arguments); - }; - - /** - * Returns indexes of the currently selected cells as an array `[startRow, startCol, endRow, endCol]`. - * - * Start row and start col are the coordinates of the active cell (where the selection was started). - * - * @memberof Core# - * @function getSelected - * @returns {Array} Array of the selection's indexes. - */ - this.getSelected = function () { - // https://github.com/handsontable/handsontable/issues/44 //cjl - if (selection.isSelected()) { - return [priv.selRange.from.row, priv.selRange.from.col, priv.selRange.to.row, priv.selRange.to.col]; - } - }; - - /** - * Returns the current selection as a CellRange object. - * - * @memberof Core# - * @function getSelectedRange - * @since 0.11 - * @returns {CellRange} Selected range object or undefined` if there is no selection. - */ - this.getSelectedRange = function () { - // https://github.com/handsontable/handsontable/issues/44 //cjl - if (selection.isSelected()) { - return priv.selRange; - } - }; - - /** - * Rerender the table. - * - * @memberof Core# - * @function render - */ - this.render = function () { - if (instance.view) { - instance.renderCall = true; - instance.forceFullRender = true; // used when data was changed - selection.refreshBorders(null, true); - } - }; - - /** - * Reset all cells in the grid to contain data from the data array. - * - * @memberof Core# - * @function loadData - * @param {Array} data Array of arrays or array of objects containing data. - * @fires Hooks#afterLoadData - * @fires Hooks#afterChange - */ - this.loadData = function (data) { - if (Array.isArray(priv.settings.dataSchema)) { - instance.dataType = 'array'; - } else if ((0, _function.isFunction)(priv.settings.dataSchema)) { - instance.dataType = 'function'; - } else { - instance.dataType = 'object'; - } - - if (datamap) { - datamap.destroy(); - } - datamap = new _dataMap2.default(instance, priv, GridSettings); - - if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object' && data !== null) { - if (!(data.push && data.splice)) { - // check if data is array. Must use duck-type check so Backbone Collections also pass it - // when data is not an array, attempt to make a single-row array of it - data = [data]; - } - } else if (data === null) { - data = []; - var row; - var r = 0; - var rlen = 0; - var dataSchema = datamap.getSchema(); - - for (r = 0, rlen = priv.settings.startRows; r < rlen; r++) { - if ((instance.dataType === 'object' || instance.dataType === 'function') && priv.settings.dataSchema) { - row = (0, _object.deepClone)(dataSchema); - data.push(row); - } else if (instance.dataType === 'array') { - row = (0, _object.deepClone)(dataSchema[0]); - data.push(row); - } else { - row = []; - - for (var c = 0, clen = priv.settings.startCols; c < clen; c++) { - row.push(null); - } - - data.push(row); - } - } - } else { - throw new Error('loadData only accepts array of objects or array of arrays (' + (typeof data === 'undefined' ? 'undefined' : _typeof(data)) + ' given)'); - } - - priv.isPopulated = false; - GridSettings.prototype.data = data; - - if (Array.isArray(data[0])) { - instance.dataType = 'array'; - } - - datamap.dataSource = data; - dataSource.data = data; - dataSource.dataType = instance.dataType; - dataSource.colToProp = datamap.colToProp.bind(datamap); - dataSource.propToCol = datamap.propToCol.bind(datamap); - - clearCellSettingCache(); - - grid.adjustRowsAndCols(); - instance.runHooks('afterLoadData', priv.firstRun); - - if (priv.firstRun) { - priv.firstRun = [null, 'loadData']; - } else { - instance.runHooks('afterChange', null, 'loadData'); - instance.render(); - } - priv.isPopulated = true; - - function clearCellSettingCache() { - priv.cellSettings.length = 0; - } - }; - - /** - * Returns the current data object (the same one that was passed by `data` configuration option or `loadData` method, - * unless the `modifyRow` hook was used to trim some of the rows. If that's the case - use the {@link Core#getSourceData} method.). - * Optionally you can provide cell range by defining `row`, `col`, `row2`, `col2` to get only a fragment of grid data. - * - * Note: getData functionality changed with the release of version 0.20. If you're looking for the previous functionality, - * you should use the {@link Core#getSourceData} method. - * - * @memberof Core# - * @function getData - * @param {Number} [r] From visual row index. - * @param {Number} [c] From visual column index. - * @param {Number} [r2] To visual row index. - * @param {Number} [c2] To visual column index. - * @returns {Array} Array with the data. - */ - this.getData = function (r, c, r2, c2) { - if ((0, _mixed.isUndefined)(r)) { - return datamap.getAll(); - } - return datamap.getRange(new _src.CellCoords(r, c), new _src.CellCoords(r2, c2), datamap.DESTINATION_RENDERER); - }; - - /** - * Returns a string value of the selected range. Each column is separated by tab, each row is separated by a new line character. - * {@link DataMap#getCopyableText} - * - * @memberof Core# - * @function getCopyableText - * @since 0.11 - * @param {Number} startRow From visual row index. - * @param {Number} startCol From visual column index. - * @param {Number} endRow To visual row index. - * @param {Number} endCol To visual column index. - * @returns {String} - */ - this.getCopyableText = function (startRow, startCol, endRow, endCol) { - return datamap.getCopyableText(new _src.CellCoords(startRow, startCol), new _src.CellCoords(endRow, endCol)); - }; - - /** - * Returns the data's copyable value at specified row and column index ({@link DataMap#getCopyable}). - * - * @memberof Core# - * @function getCopyableData - * @since 0.19.0 - * @param {Number} row Visual row index. - * @param {Number} column Visual column index. - * @returns {String} - */ - this.getCopyableData = function (row, column) { - return datamap.getCopyable(row, datamap.colToProp(column)); - }; - - /** - * Returns schema provided by constructor settings. If it doesn't exist then it returns the schema based on the data - * structure in the first row. - * - * @memberof Core# - * @function getSchema - * @since 0.13.2 - * @returns {Object} Schema object. - */ - this.getSchema = function () { - return datamap.getSchema(); - }; - - /** - * Use it if you need to change configuration after initialization. The `settings` parameter is an object containing the new - * settings, declared the same way as in the initial settings object. - * Note, that although the `updateSettings` method doesn't overwrite the previously declared settings, it might reset - * the settings made post-initialization. (for example - ignore changes made using the columnResize feature). - * - * @memberof Core# - * @function updateSettings - * @param {Object} settings New settings object. - * @param {Boolean} init Calls this method in the initialization mode. Internal use only. - * Used by API could be cause of the unexpected behaviour of the Handsontable. - * @example - * ```js - * hot.updateSettings({ - * contextMenu: true, - * colHeaders: true, - * fixedRowsTop: 2 - * }); - * ``` - * @fires Hooks#afterCellMetaReset - * @fires Hooks#afterUpdateSettings - */ - this.updateSettings = function (settings, init) { - var columnsAsFunc = false; - var i = void 0; - var j = void 0; - var clen = void 0; - - if ((0, _mixed.isDefined)(settings.rows)) { - throw new Error('"rows" setting is no longer supported. do you mean startRows, minRows or maxRows?'); - } - if ((0, _mixed.isDefined)(settings.cols)) { - throw new Error('"cols" setting is no longer supported. do you mean startCols, minCols or maxCols?'); - } - - for (i in settings) { - if (i === 'data') { - /* eslint-disable no-continue */ - continue; // loadData will be triggered later - } else if (_pluginHooks2.default.getSingleton().getRegistered().indexOf(i) > -1) { - if ((0, _function.isFunction)(settings[i]) || Array.isArray(settings[i])) { - settings[i].initialHook = true; - instance.addHook(i, settings[i]); - } - } else if (!init && (0, _object.hasOwnProperty)(settings, i)) { - // Update settings - GridSettings.prototype[i] = settings[i]; - } - } - - // Load data or create data map - if (settings.data === void 0 && priv.settings.data === void 0) { - instance.loadData(null); // data source created just now - } else if (settings.data !== void 0) { - instance.loadData(settings.data); // data source given as option - } else if (settings.columns !== void 0) { - datamap.createMap(); - } - - clen = instance.countCols(); - - var columnSetting = settings.columns || GridSettings.prototype.columns; - - // Init columns constructors configuration - if (columnSetting && (0, _function.isFunction)(columnSetting)) { - clen = instance.countSourceCols(); - columnsAsFunc = true; - } - - // Clear cellSettings cache - if (settings.cell !== void 0 || settings.cells !== void 0 || settings.columns !== void 0) { - priv.cellSettings.length = 0; - } - - if (clen > 0) { - var proto = void 0; - var column = void 0; - - for (i = 0, j = 0; i < clen; i++) { - if (columnsAsFunc && !columnSetting(i)) { - /* eslint-disable no-continue */ - continue; - } - priv.columnSettings[j] = (0, _setting.columnFactory)(GridSettings, priv.columnsSettingConflicts); - - // shortcut for prototype - proto = priv.columnSettings[j].prototype; - - // Use settings provided by user - if (columnSetting) { - if (columnsAsFunc) { - column = columnSetting(i); - } else { - column = columnSetting[j]; - } - - if (column) { - (0, _object.extend)(proto, column); - (0, _object.extend)(proto, expandType(column)); - } - } - - j++; - } - } - - if ((0, _mixed.isDefined)(settings.cell)) { - for (var key in settings.cell) { - if ((0, _object.hasOwnProperty)(settings.cell, key)) { - var cell = settings.cell[key]; - - instance.setCellMetaObject(cell.row, cell.col, cell); - } - } - } - - instance.runHooks('afterCellMetaReset'); - - if ((0, _mixed.isDefined)(settings.className)) { - if (GridSettings.prototype.className) { - (0, _element.removeClass)(instance.rootElement, GridSettings.prototype.className); - } - if (settings.className) { - (0, _element.addClass)(instance.rootElement, settings.className); - } - } - - var currentHeight = instance.rootElement.style.height; - if (currentHeight !== '') { - currentHeight = parseInt(instance.rootElement.style.height, 10); - } - - var height = settings.height; - if ((0, _function.isFunction)(height)) { - height = height(); - } - - if (init) { - var initialStyle = instance.rootElement.getAttribute('style'); - - if (initialStyle) { - instance.rootElement.setAttribute('data-initialstyle', instance.rootElement.getAttribute('style')); - } - } - - if (height === null) { - var _initialStyle = instance.rootElement.getAttribute('data-initialstyle'); - - if (_initialStyle && (_initialStyle.indexOf('height') > -1 || _initialStyle.indexOf('overflow') > -1)) { - instance.rootElement.setAttribute('style', _initialStyle); - } else { - instance.rootElement.style.height = ''; - instance.rootElement.style.overflow = ''; - } - } else if (height !== void 0) { - instance.rootElement.style.height = height + 'px'; - instance.rootElement.style.overflow = 'hidden'; - } - - if (typeof settings.width !== 'undefined') { - var width = settings.width; - - if ((0, _function.isFunction)(width)) { - width = width(); - } - - instance.rootElement.style.width = width + 'px'; - } - - if (!init) { - datamap.clearLengthCache(); // force clear cache length on updateSettings() #3416 - - if (instance.view) { - instance.view.wt.wtViewport.resetHasOversizedColumnHeadersMarked(); - } - - instance.runHooks('afterUpdateSettings', settings); - } - - grid.adjustRowsAndCols(); - if (instance.view && !priv.firstRun) { - instance.forceFullRender = true; // used when data was changed - selection.refreshBorders(null, true); - } - - if (!init && instance.view && (currentHeight === '' || height === '' || height === void 0) && currentHeight !== height) { - instance.view.wt.wtOverlays.updateMainScrollableElements(); - } - }; - - /** - * Get value from the selected cell. - * - * @memberof Core# - * @function getValue - * @since 0.11 - * @returns {*} Value of selected cell. - */ - this.getValue = function () { - var sel = instance.getSelected(); - if (GridSettings.prototype.getValue) { - if ((0, _function.isFunction)(GridSettings.prototype.getValue)) { - return GridSettings.prototype.getValue.call(instance); - } else if (sel) { - return instance.getData()[sel[0]][GridSettings.prototype.getValue]; - } - } else if (sel) { - return instance.getDataAtCell(sel[0], sel[1]); - } - }; - - function expandType(obj) { - if (!(0, _object.hasOwnProperty)(obj, 'type')) { - // ignore obj.prototype.type - return; - } - - var type, - expandedType = {}; - - if (_typeof(obj.type) === 'object') { - type = obj.type; - } else if (typeof obj.type === 'string') { - type = (0, _cellTypes.getCellType)(obj.type); - } - - for (var i in type) { - if ((0, _object.hasOwnProperty)(type, i) && !(0, _object.hasOwnProperty)(obj, i)) { - expandedType[i] = type[i]; - } - } - - return expandedType; - } - - /** - * Returns the object settings. - * - * @memberof Core# - * @function getSettings - * @returns {Object} Object containing the current grid settings. - */ - this.getSettings = function () { - return priv.settings; - }; - - /** - * Clears the data from the grid. (The table settings remain intact.) - * - * @memberof Core# - * @function clear - * @since 0.11 - */ - this.clear = function () { - selection.selectAll(); - selection.empty(); - }; - - /** - * @memberof Core# - * @function alter - * @param {String} action See grid.alter for possible values: `"insert_row"`, `"insert_col"`, `"remove_row"`, `"remove_col"` - * @param {Number} index Visual index of the row/column before which the new row/column will be inserted/removed. - * @param {Number} [amount = 1] Amound of rows/columns to be inserted/removed. - * @param {String} [source] Source indicator. - * @param {Boolean} [keepEmptyRows] Flag for preventing deletion of empty rows. - * @description - * - * Allows altering the table structure by either inserting/removing rows or inserting/removing columns: - * - * Insert new row(s) above the row with a given `index`. If index is `null` or `undefined`, the new row will be - * added after the last row. - * ```js - * var hot = new Handsontable(document.getElementById('example')); - * hot.alter('insert_row', 10); - * ``` - * - * Insert new column(s) before the column with a given `index`. If index is `null` or `undefined`, the new column - * will be added after the last column. - * ```js - * var hot = new Handsontable(document.getElementById('example')); - * hot.alter('insert_col', 10); - * ``` - * - * Remove the row(s) at the given `index`. - * ```js - * var hot = new Handsontable(document.getElementById('example')); - * hot.alter('remove_row', 10); - * ``` - * - * Remove the column(s) at the given `index`. - * ```js - * var hot = new Handsontable(document.getElementById('example')); - * hot.alter('remove_col', 10); - * ``` - */ - this.alter = function (action, index, amount, source, keepEmptyRows) { - grid.alter(action, index, amount, source, keepEmptyRows); - }; - - /** - * Returns a TD element for the given `row` and `col` arguments, if it is rendered on screen. - * Returns `null` if the TD is not rendered on screen (probably because that part of the table is not visible). - * - * @memberof Core# - * @function getCell - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {Boolean} topmost If set to true, it returns the TD element from the topmost overlay. For example, - * if the wanted cell is in the range of fixed rows, it will return a TD element from the `top` overlay. - * @returns {Element} The cell's TD element. - */ - this.getCell = function (row, col, topmost) { - return instance.view.getCellAtCoords(new _src.CellCoords(row, col), topmost); - }; - - /** - * Returns the coordinates of the cell, provided as a HTML Element. - * - * @memberof Core# - * @function getCoords - * @param {Element} elem The HTML Element representing the cell. - * @returns {CellCoords} Visual coordinates object. - */ - this.getCoords = function (elem) { - return this.view.wt.wtTable.getCoords.call(this.view.wt.wtTable, elem); - }; - - /** - * Returns the property name that corresponds with the given column index. {@link DataMap#colToProp} - * If the data source is an array of arrays, it returns the columns index. - * - * @memberof Core# - * @function colToProp - * @param {Number} col Visual column index. - * @returns {String|Number} Column property or physical column index. - */ - this.colToProp = function (col) { - return datamap.colToProp(col); - }; - - /** - * Returns column index that corresponds with the given property. {@link DataMap#propToCol} - * - * @memberof Core# - * @function propToCol - * @param {String|Number} prop Property name or physical column index. - * @returns {Number} Visual column index. - */ - this.propToCol = function (prop) { - return datamap.propToCol(prop); - }; - - /** - * Translate physical row index into visual. - * - * @since 0.29.0 - * @memberof Core# - * @function toVisualRow - * @param {Number} row Physical row index. - * @returns {Number} Returns visual row index. - */ - this.toVisualRow = function (row) { - return recordTranslator.toVisualRow(row); - }; - - /** - * Translate physical column index into visual. - * - * @since 0.29.0 - * @memberof Core# - * @function toVisualColumn - * @param {Number} column Physical column index. - * @returns {Number} Returns visual column index. - */ - this.toVisualColumn = function (column) { - return recordTranslator.toVisualColumn(column); - }; - - /** - * Translate visual row index into physical. - * If displayed rows order is different than the order of rows stored in memory (i.e. sorting is applied) - * to retrieve valid physical row index you can use this method. - * - * @since 0.29.0 - * @memberof Core# - * @function toPhysicalRow - * @param {Number} row Visual row index. - * @returns {Number} Returns physical row index. - */ - this.toPhysicalRow = function (row) { - return recordTranslator.toPhysicalRow(row); - }; - - /** - * Translate visual column index into physical. - * If displayed columns order is different than the order of columns stored in memory (i.e. manual column move is applied) - * to retrieve valid physical column index you can use this method. - * - * @since 0.29.0 - * @memberof Core# - * @function toPhysicalColumn - * @param {Number} column Visual column index. - * @returns {Number} Returns physical column index. - */ - this.toPhysicalColumn = function (column) { - return recordTranslator.toPhysicalColumn(column); - }; - - /** - * @description - * Returns the cell value at `row`, `col`. `row` and `col` are the __visible__ indexes (note, that if columns were reordered or sorted, - * the currently visible order will be used). - * - * @memberof Core# - * @function getDataAtCell - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @returns {String|Boolean|null} Data at cell. - */ - this.getDataAtCell = function (row, col) { - return datamap.get(row, datamap.colToProp(col)); - }; - - /** - * Return value at `row`, `prop`. (Uses {@link DataMap#get}) - * - * @memberof Core# - * @function getDataAtRowProp - * @param {Number} row Visual row index. - * @param {String} prop Property name. - * @returns {*} Cell value. - */ - this.getDataAtRowProp = function (row, prop) { - return datamap.get(row, prop); - }; - - /** - * @description - * Returns array of column values from the data source. `col` is the __visible__ index of the column. - * Note, that if columns were reordered or sorted, the currently visible order will be used. - * - * @memberof Core# - * @function getDataAtCol - * @since 0.9-beta2 - * @param {Number} col Visual column index. - * @returns {Array} Array of cell values. - */ - this.getDataAtCol = function (col) { - var out = []; - return out.concat.apply(out, _toConsumableArray(datamap.getRange(new _src.CellCoords(0, col), new _src.CellCoords(priv.settings.data.length - 1, col), datamap.DESTINATION_RENDERER))); - }; - - /** - * Given the object property name (e.g. `'first.name'`), returns an array of column's values from the data source. - * You can also provide a column index as the first argument. - * - * @memberof Core# - * @function getDataAtProp - * @since 0.9-beta2 - * @param {String|Number} prop Property name / physical column index. - * @returns {Array} Array of cell values. - */ - // TODO: Getting data from `datamap` should work on visual indexes. - this.getDataAtProp = function (prop) { - var out = [], - range; - - range = datamap.getRange(new _src.CellCoords(0, datamap.propToCol(prop)), new _src.CellCoords(priv.settings.data.length - 1, datamap.propToCol(prop)), datamap.DESTINATION_RENDERER); - - return out.concat.apply(out, _toConsumableArray(range)); - }; - - /** - * Returns the source data object (the same that was passed by `data` configuration option or `loadData` method). - * Optionally you can provide a cell range by using the `row`, `col`, `row2`, `col2` arguments, to get only a fragment of grid data. - * - * @memberof Core# - * @function getSourceData - * @since 0.20.0 - * @param {Number} [r] From physical row index. - * @param {Number} [c] From physical column index (or visual index, if data type is an array of objects). - * @param {Number} [r2] To physical row index. - * @param {Number} [c2] To physical column index (or visual index, if data type is an array of objects). - * @returns {Array} Array of grid data. - */ - this.getSourceData = function (r, c, r2, c2) { - var data = void 0; - - if (r === void 0) { - data = dataSource.getData(); - } else { - data = dataSource.getByRange(new _src.CellCoords(r, c), new _src.CellCoords(r2, c2)); - } - - return data; - }; - - /** - * Returns the source data object as an arrays of arrays format even when source data was provided in another format. - * Optionally you can provide a cell range by using the `row`, `col`, `row2`, `col2` arguments, to get only a fragment of grid data. - * - * @memberof Core# - * @function getSourceDataArray - * @since 0.28.0 - * @param {Number} [r] From physical row index. - * @param {Number} [c] From physical column index (or visual index, if data type is an array of objects). - * @param {Number} [r2] To physical row index. - * @param {Number} [c2] To physical column index (or visual index, if data type is an array of objects). - * @returns {Array} An array of arrays. - */ - this.getSourceDataArray = function (r, c, r2, c2) { - var data = void 0; - - if (r === void 0) { - data = dataSource.getData(true); - } else { - data = dataSource.getByRange(new _src.CellCoords(r, c), new _src.CellCoords(r2, c2), true); - } - - return data; - }; - - /** - * Returns an array of column values from the data source. `col` is the index of the row in the data source. - * - * @memberof Core# - * @function getSourceDataAtCol - * @since 0.11.0-beta3 - * @param {Number} column Visual column index. - * @returns {Array} Array of the column's cell values. - */ - // TODO: Getting data from `sourceData` should work always on physical indexes. - this.getSourceDataAtCol = function (column) { - return dataSource.getAtColumn(column); - }; - - /** - * Returns a single row of the data (array or object, depending on what you have). `row` is the index of the row in the data source. - * - * @memberof Core# - * @function getSourceDataAtRow - * @since 0.11.0-beta3 - * @param {Number} row Physical row index. - * @returns {Array|Object} Single row of data. - */ - this.getSourceDataAtRow = function (row) { - return dataSource.getAtRow(row); - }; - - /** - * Returns a single value from the data source. - * - * @memberof Core# - * @function getSourceDataAtCell - * @param {Number} row Physical row index. - * @param {Number} column Visual column index. - * @returns {*} Cell data. - * @since 0.20.0 - */ - // TODO: Getting data from `sourceData` should work always on physical indexes. - this.getSourceDataAtCell = function (row, column) { - return dataSource.getAtCell(row, column); - }; - - /** - * @description - * Returns a single row of the data. The `row` argument is the __visible__ index of the row. - * - * @memberof Core# - * @function getDataAtRow - * @param {Number} row Visual row index. - * @returns {Array} Array of row's cell data. - * @since 0.9-beta2 - */ - this.getDataAtRow = function (row) { - var data = datamap.getRange(new _src.CellCoords(row, 0), new _src.CellCoords(row, this.countCols() - 1), datamap.DESTINATION_RENDERER); - - return data[0] || []; - }; - - /** - * @description - * Returns a data type defined in the Handsontable settings under the `type` key ([Options#type](http://docs.handsontable.com/Options.html#type)). - * If there are cells with different types in the selected range, it returns `'mixed'`. - * - * @since 0.18.1 - * @memberof Core# - * @function getDataType - * @param {Number} rowFrom From visual row index. - * @param {Number} columnFrom From visual column index. - * @param {Number} rowTo To visual row index. - * @param {Number} columnTo To visual column index. - * @returns {String} Cell type (e.q: `'mixed'`, `'text'`, `'numeric'`, `'autocomplete'`). - */ - this.getDataType = function (rowFrom, columnFrom, rowTo, columnTo) { - var _this = this; - - var previousType = null; - var currentType = null; - - if (rowFrom === void 0) { - rowFrom = 0; - rowTo = this.countRows(); - columnFrom = 0; - columnTo = this.countCols(); - } - if (rowTo === void 0) { - rowTo = rowFrom; - } - if (columnTo === void 0) { - columnTo = columnFrom; - } - var type = 'mixed'; - - (0, _number.rangeEach)(Math.min(rowFrom, rowTo), Math.max(rowFrom, rowTo), function (row) { - var isTypeEqual = true; - - (0, _number.rangeEach)(Math.min(columnFrom, columnTo), Math.max(columnFrom, columnTo), function (column) { - var cellType = _this.getCellMeta(row, column); - - currentType = cellType.type; - - if (previousType) { - isTypeEqual = previousType === currentType; - } else { - previousType = currentType; - } - - return isTypeEqual; - }); - type = isTypeEqual ? currentType : 'mixed'; - - return isTypeEqual; - }); - - return type; - }; - - /** - * Remove a property defined by the `key` argument from the cell meta object for the provided `row` and `col` coordinates. - * - * @memberof Core# - * @function removeCellMeta - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {String} key Property name. - * @fires Hooks#beforeRemoveCellMeta - * @fires Hooks#afterRemoveCellMeta - */ - this.removeCellMeta = function (row, col, key) { - var _recordTranslator$toP = recordTranslator.toPhysical(row, col), - _recordTranslator$toP2 = _slicedToArray(_recordTranslator$toP, 2), - physicalRow = _recordTranslator$toP2[0], - physicalColumn = _recordTranslator$toP2[1]; - - var cachedValue = priv.cellSettings[physicalRow][physicalColumn][key]; - - var hookResult = instance.runHooks('beforeRemoveCellMeta', row, col, key, cachedValue); - - if (hookResult !== false) { - delete priv.cellSettings[physicalRow][physicalColumn][key]; - - instance.runHooks('afterRemoveCellMeta', row, col, key, cachedValue); - } - - cachedValue = null; - }; - - /** - * Remove one or more rows from the cell meta object. - * - * @since 0.30.0 - * @param {Number} index An integer that specifies at what position to add/remove items, Use negative values to specify the position from the end of the array. - * @param {Number} deleteAmount The number of items to be removed. If set to 0, no items will be removed. - * @param {Array} items The new items to be added to the array. - */ - this.spliceCellsMeta = function (index, deleteAmount) { - var _priv$cellSettings; - - for (var _len2 = arguments.length, items = Array(_len2 > 2 ? _len2 - 2 : 0), _key = 2; _key < _len2; _key++) { - items[_key - 2] = arguments[_key]; - } - - (_priv$cellSettings = priv.cellSettings).splice.apply(_priv$cellSettings, [index, deleteAmount].concat(items)); - }; - - /** - * Set cell meta data object defined by `prop` to the corresponding params `row` and `col`. - * - * @memberof Core# - * @function setCellMetaObject - * @since 0.11 - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {Object} prop Meta object. - */ - this.setCellMetaObject = function (row, col, prop) { - if ((typeof prop === 'undefined' ? 'undefined' : _typeof(prop)) === 'object') { - for (var key in prop) { - if ((0, _object.hasOwnProperty)(prop, key)) { - var value = prop[key]; - this.setCellMeta(row, col, key, value); - } - } - } - }; - - /** - * Sets a property defined by the `key` object to the meta object of a cell corresponding to params `row` and `col`. - * - * @memberof Core# - * @function setCellMeta - * @since 0.11 - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {String} key Property name. - * @param {String} val Property value. - * @fires Hooks#afterSetCellMeta - */ - this.setCellMeta = function (row, col, key, val) { - var _recordTranslator$toP3 = recordTranslator.toPhysical(row, col), - _recordTranslator$toP4 = _slicedToArray(_recordTranslator$toP3, 2), - physicalRow = _recordTranslator$toP4[0], - physicalColumn = _recordTranslator$toP4[1]; - - if (!priv.columnSettings[physicalColumn]) { - priv.columnSettings[physicalColumn] = (0, _setting.columnFactory)(GridSettings, priv.columnsSettingConflicts); - } - - if (!priv.cellSettings[physicalRow]) { - priv.cellSettings[physicalRow] = []; - } - if (!priv.cellSettings[physicalRow][physicalColumn]) { - priv.cellSettings[physicalRow][physicalColumn] = new priv.columnSettings[physicalColumn](); - } - priv.cellSettings[physicalRow][physicalColumn][key] = val; - instance.runHooks('afterSetCellMeta', row, col, key, val); - }; - - /** - * Get all the cells meta settings at least once generated in the table (in order of cell initialization). - * - * @since 0.19.0 - * @returns {Array} Returns Array of ColumnSettings object. - */ - this.getCellsMeta = function () { - return (0, _array.arrayFlatten)(priv.cellSettings); - }; - - /** - * Returns the cell properties object for the given `row` and `col` coordinates. - * - * @memberof Core# - * @function getCellMeta - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @returns {Object} The cell properties object. - * @fires Hooks#beforeGetCellMeta - * @fires Hooks#afterGetCellMeta - */ - this.getCellMeta = function (row, col) { - var prop = datamap.colToProp(col); - var cellProperties = void 0; - - var _recordTranslator$toP5 = recordTranslator.toPhysical(row, col), - _recordTranslator$toP6 = _slicedToArray(_recordTranslator$toP5, 2), - physicalRow = _recordTranslator$toP6[0], - physicalColumn = _recordTranslator$toP6[1]; - - if (!priv.columnSettings[physicalColumn]) { - priv.columnSettings[physicalColumn] = (0, _setting.columnFactory)(GridSettings, priv.columnsSettingConflicts); - } - - if (!priv.cellSettings[physicalRow]) { - priv.cellSettings[physicalRow] = []; - } - if (!priv.cellSettings[physicalRow][physicalColumn]) { - priv.cellSettings[physicalRow][physicalColumn] = new priv.columnSettings[physicalColumn](); - } - - cellProperties = priv.cellSettings[physicalRow][physicalColumn]; // retrieve cellProperties from cache - - cellProperties.row = physicalRow; - cellProperties.col = physicalColumn; - cellProperties.visualRow = row; - cellProperties.visualCol = col; - cellProperties.prop = prop; - cellProperties.instance = instance; - - instance.runHooks('beforeGetCellMeta', row, col, cellProperties); - (0, _object.extend)(cellProperties, expandType(cellProperties)); // for `type` added in beforeGetCellMeta - - if (cellProperties.cells) { - var settings = cellProperties.cells.call(cellProperties, physicalRow, physicalColumn, prop); - - if (settings) { - (0, _object.extend)(cellProperties, settings); - (0, _object.extend)(cellProperties, expandType(settings)); // for `type` added in cells - } - } - - instance.runHooks('afterGetCellMeta', row, col, cellProperties); - - return cellProperties; - }; - - /** - * Returns a row off the cell meta array. - * - * @memberof Core# - * @function getCellMetaAtRow - * @since 0.30.0 - * @param {Number} row Physical index of the row to return cell meta for. - * @returns {Array} - */ - this.getCellMetaAtRow = function (row) { - return priv.cellSettings[row]; - }; - - /** - * Checks if the data format and config allows user to modify the column structure. - * @returns {boolean} - */ - this.isColumnModificationAllowed = function () { - return !(instance.dataType === 'object' || instance.getSettings().columns); - }; - - var rendererLookup = (0, _data.cellMethodLookupFactory)('renderer'); - - /** - * Returns the cell renderer function by given `row` and `col` arguments. - * - * @memberof Core# - * @function getCellRenderer - * @since 0.11 - * @param {Number|Object} row Visual row index or cell meta object. - * @param {Number} [col] Visual column index. - * @returns {Function} The renderer function. - */ - this.getCellRenderer = function (row, col) { - return (0, _renderers.getRenderer)(rendererLookup.call(this, row, col)); - }; - - /** - * Returns the cell editor by the provided `row` and `col` arguments. - * - * @memberof Core# - * @function getCellEditor - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @returns {Object} The Editor object. - */ - this.getCellEditor = (0, _data.cellMethodLookupFactory)('editor'); - - var validatorLookup = (0, _data.cellMethodLookupFactory)('validator'); - - /** - * Returns the cell validator by `row` and `col`, provided a validator is defined. If not - it doesn't return anything. - * - * @memberof Core# - * @function getCellValidator - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @returns {Function|RegExp|undefined} The validator function. - */ - this.getCellValidator = function (row, col) { - var validator = validatorLookup.call(this, row, col); - - if (typeof validator === 'string') { - validator = (0, _validators.getValidator)(validator); - } - - return validator; - }; - - /** - * Validates all cells using their validator functions and calls callback when finished. - * - * If one of the cells is invalid, the callback will be fired with `'valid'` arguments as `false` - otherwise it would equal `true`. - * - * @memberof Core# - * @function validateCells - * @param {Function} [callback] The callback function. - */ - this.validateCells = function (callback) { - var waitingForValidator = new ValidatorsQueue(); - - if (callback) { - waitingForValidator.onQueueEmpty = callback; - } - - var i = instance.countRows() - 1; - - while (i >= 0) { - var j = instance.countCols() - 1; - - while (j >= 0) { - waitingForValidator.addValidatorToQueue(); - - instance.validateCell(instance.getDataAtCell(i, j), instance.getCellMeta(i, j), function (result) { - if (typeof result !== 'boolean') { - throw new Error('Validation error: result is not boolean'); - } - if (result === false) { - waitingForValidator.valid = false; - } - waitingForValidator.removeValidatorFormQueue(); - }, 'validateCells'); - j--; - } - i--; - } - waitingForValidator.checkIfQueueIsEmpty(); - }; - - /** - * Returns an array of row headers' values (if they are enabled). If param `row` was given, it returns the header of the given row as a string. - * - * @memberof Core# - * @function getRowHeader - * @param {Number} [row] Visual row index. - * @fires Hooks#modifyRowHeader - * @returns {Array|String} Array of header values / single header value. - */ - this.getRowHeader = function (row) { - var rowHeader = priv.settings.rowHeaders; - - if (row !== void 0) { - row = instance.runHooks('modifyRowHeader', row); - } - if (row === void 0) { - rowHeader = []; - (0, _number.rangeEach)(instance.countRows() - 1, function (i) { - rowHeader.push(instance.getRowHeader(i)); - }); - } else if (Array.isArray(rowHeader) && rowHeader[row] !== void 0) { - rowHeader = rowHeader[row]; - } else if ((0, _function.isFunction)(rowHeader)) { - rowHeader = rowHeader(row); - } else if (rowHeader && typeof rowHeader !== 'string' && typeof rowHeader !== 'number') { - rowHeader = row + 1; - } - - return rowHeader; - }; - - /** - * Returns information about if this table is configured to display row headers. - * - * @memberof Core# - * @function hasRowHeaders - * @returns {Boolean} `true` if the instance has the row headers enabled, `false` otherwise. - * @since 0.11 - */ - this.hasRowHeaders = function () { - return !!priv.settings.rowHeaders; - }; - - /** - * Returns information about if this table is configured to display column headers. - * - * @memberof Core# - * @function hasColHeaders - * @since 0.11 - * @returns {Boolean} `True` if the instance has the column headers enabled, `false` otherwise. - */ - this.hasColHeaders = function () { - if (priv.settings.colHeaders !== void 0 && priv.settings.colHeaders !== null) { - // Polymer has empty value = null - return !!priv.settings.colHeaders; - } - for (var i = 0, ilen = instance.countCols(); i < ilen; i++) { - if (instance.getColHeader(i)) { - return true; - } - } - - return false; - }; - - /** - * Returns an array of column headers (in string format, if they are enabled). If param `col` is given, it returns the header at the given column as a string. - * - * @memberof Core# - * @function getColHeader - * @param {Number} [col] Visual column index. - * @fires Hooks#modifyColHeader - * @returns {Array|String} The column header(s). - */ - this.getColHeader = function (col) { - var columnsAsFunc = priv.settings.columns && (0, _function.isFunction)(priv.settings.columns); - var result = priv.settings.colHeaders; - - col = instance.runHooks('modifyColHeader', col); - - if (col === void 0) { - var out = []; - var ilen = columnsAsFunc ? instance.countSourceCols() : instance.countCols(); - - for (var i = 0; i < ilen; i++) { - out.push(instance.getColHeader(i)); - } - - result = out; - } else { - var translateVisualIndexToColumns = function translateVisualIndexToColumns(col) { - var arr = []; - var columnsLen = instance.countSourceCols(); - var index = 0; - - for (; index < columnsLen; index++) { - if ((0, _function.isFunction)(instance.getSettings().columns) && instance.getSettings().columns(index)) { - arr.push(index); - } - } - - return arr[col]; - }; - var baseCol = col; - col = instance.runHooks('modifyCol', col); - - var prop = translateVisualIndexToColumns(col); - - if (priv.settings.columns && (0, _function.isFunction)(priv.settings.columns) && priv.settings.columns(prop) && priv.settings.columns(prop).title) { - result = priv.settings.columns(prop).title; - } else if (priv.settings.columns && priv.settings.columns[col] && priv.settings.columns[col].title) { - result = priv.settings.columns[col].title; - } else if (Array.isArray(priv.settings.colHeaders) && priv.settings.colHeaders[col] !== void 0) { - result = priv.settings.colHeaders[col]; - } else if ((0, _function.isFunction)(priv.settings.colHeaders)) { - result = priv.settings.colHeaders(col); - } else if (priv.settings.colHeaders && typeof priv.settings.colHeaders !== 'string' && typeof priv.settings.colHeaders !== 'number') { - result = (0, _data.spreadsheetColumnLabel)(baseCol); // see #1458 - } - } - - return result; - }; - - /** - * Return column width from settings (no guessing). Private use intended. - * - * @private - * @memberof Core# - * @function _getColWidthFromSettings - * @param {Number} col Visual col index. - * @returns {Number} - */ - this._getColWidthFromSettings = function (col) { - var cellProperties = instance.getCellMeta(0, col); - var width = cellProperties.width; - - if (width === void 0 || width === priv.settings.width) { - width = cellProperties.colWidths; - } - if (width !== void 0 && width !== null) { - switch (typeof width === 'undefined' ? 'undefined' : _typeof(width)) { - case 'object': - // array - width = width[col]; - break; - - case 'function': - width = width(col); - break; - default: - break; - } - if (typeof width === 'string') { - width = parseInt(width, 10); - } - } - - return width; - }; - - /** - * Returns the width of the requested column. - * - * @memberof Core# - * @function getColWidth - * @since 0.11 - * @param {Number} col Visual column index. - * @returns {Number} Column width. - * @fires Hooks#modifyColWidth - */ - this.getColWidth = function (col) { - var width = instance._getColWidthFromSettings(col); - - width = instance.runHooks('modifyColWidth', width, col); - - if (width === void 0) { - width = _src.ViewportColumnsCalculator.DEFAULT_WIDTH; - } - - return width; - }; - - /** - * Return row height from settings (no guessing). Private use intended. - * - * @private - * @memberof Core# - * @function _getRowHeightFromSettings - * @param {Number} row Visual row index. - * @returns {Number} - */ - this._getRowHeightFromSettings = function (row) { - // let cellProperties = instance.getCellMeta(row, 0); - // let height = cellProperties.height; - // - // if (height === void 0 || height === priv.settings.height) { - // height = cellProperties.rowHeights; - // } - var height = priv.settings.rowHeights; - - if (height !== void 0 && height !== null) { - switch (typeof height === 'undefined' ? 'undefined' : _typeof(height)) { - case 'object': - // array - height = height[row]; - break; - - case 'function': - height = height(row); - break; - default: - break; - } - if (typeof height === 'string') { - height = parseInt(height, 10); - } - } - - return height; - }; - - /** - * Returns the row height. - * - * @memberof Core# - * @function getRowHeight - * @since 0.11 - * @param {Number} row Visual row index. - * @returns {Number} The given row's height. - * @fires Hooks#modifyRowHeight - */ - this.getRowHeight = function (row) { - var height = instance._getRowHeightFromSettings(row); - - height = instance.runHooks('modifyRowHeight', height, row); - - return height; - }; - - /** - * Returns the total number of rows in the data source. - * - * @memberof Core# - * @function countSourceRows - * @since 0.20.0 - * @returns {Number} Total number in rows in data source. - */ - this.countSourceRows = function () { - var sourceLength = instance.runHooks('modifySourceLength'); - return sourceLength || (instance.getSourceData() ? instance.getSourceData().length : 0); - }; - - /** - * Returns the total number of columns in the data source. - * - * @memberof Core# - * @function countSourceCols - * @since 0.26.1 - * @returns {Number} Total number in columns in data source. - */ - this.countSourceCols = function () { - var len = 0; - var obj = instance.getSourceData() && instance.getSourceData()[0] ? instance.getSourceData()[0] : []; - - if ((0, _object.isObject)(obj)) { - len = (0, _object.deepObjectSize)(obj); - } else { - len = obj.length || 0; - } - - return len; - }; - - /** - * Returns the total number of rows in the grid. - * - * @memberof Core# - * @function countRows - * @returns {Number} Total number in rows the grid. - */ - this.countRows = function () { - return datamap.getLength(); - }; - - /** - * Returns the total number of columns in the grid. - * - * @memberof Core# - * @function countCols - * @returns {Number} Total number of columns. - */ - this.countCols = function () { - var maxCols = this.getSettings().maxCols; - var dataHasLength = false; - var dataLen = 0; - - if (instance.dataType === 'array') { - dataHasLength = priv.settings.data && priv.settings.data[0] && priv.settings.data[0].length; - } - - if (dataHasLength) { - dataLen = priv.settings.data[0].length; - } - - if (priv.settings.columns) { - var columnsIsFunction = (0, _function.isFunction)(priv.settings.columns); - - if (columnsIsFunction) { - if (instance.dataType === 'array') { - var columnLen = 0; - - for (var i = 0; i < dataLen; i++) { - if (priv.settings.columns(i)) { - columnLen++; - } - } - - dataLen = columnLen; - } else if (instance.dataType === 'object' || instance.dataType === 'function') { - dataLen = datamap.colToPropCache.length; - } - } else { - dataLen = priv.settings.columns.length; - } - } else if (instance.dataType === 'object' || instance.dataType === 'function') { - dataLen = datamap.colToPropCache.length; - } - - return Math.min(maxCols, dataLen); - }; - - /** - * Returns an visual index of the first rendered row. - * - * @memberof Core# - * @function rowOffset - * @returns {Number} Visual index of first rendered row. - */ - this.rowOffset = function () { - return instance.view.wt.wtTable.getFirstRenderedRow(); - }; - - /** - * Returns the visual index of the first rendered column. - * - * @memberof Core# - * @function colOffset - * @returns {Number} Visual index of the first visible column. - */ - this.colOffset = function () { - return instance.view.wt.wtTable.getFirstRenderedColumn(); - }; - - /** - * Returns the number of rendered rows (including rows partially or fully rendered outside viewport). - * - * @memberof Core# - * @function countRenderedRows - * @returns {Number} Returns -1 if table is not visible. - */ - this.countRenderedRows = function () { - return instance.view.wt.drawn ? instance.view.wt.wtTable.getRenderedRowsCount() : -1; - }; - - /** - * Returns the number of visible rows (rendered rows that fully fit inside viewport). - * - * @memberof Core# - * @function countVisibleRows - * @returns {Number} Number of visible rows or -1. - */ - this.countVisibleRows = function () { - return instance.view.wt.drawn ? instance.view.wt.wtTable.getVisibleRowsCount() : -1; - }; - - /** - * Returns the number of rendered columns (including columns partially or fully rendered outside viewport). - * - * @memberof Core# - * @function countRenderedCols - * @returns {Number} Returns -1 if table is not visible. - */ - this.countRenderedCols = function () { - return instance.view.wt.drawn ? instance.view.wt.wtTable.getRenderedColumnsCount() : -1; - }; - - /** - * Returns the number of visible columns. Returns -1 if table is not visible - * - * @memberof Core# - * @function countVisibleCols - * @return {Number} Number of visible columns or -1. - */ - this.countVisibleCols = function () { - return instance.view.wt.drawn ? instance.view.wt.wtTable.getVisibleColumnsCount() : -1; - }; - - /** - * Returns the number of empty rows. If the optional ending parameter is `true`, returns the - * number of empty rows at the bottom of the table. - * - * @memberof Core# - * @function countEmptyRows - * @param {Boolean} [ending] If `true`, will only count empty rows at the end of the data source. - * @returns {Number} Count empty rows - * @fires Hooks#modifyRow - */ - this.countEmptyRows = function (ending) { - var i = instance.countRows() - 1, - empty = 0, - row; - - while (i >= 0) { - row = instance.runHooks('modifyRow', i); - - if (instance.isEmptyRow(row)) { - empty++; - } else if (ending) { - break; - } - i--; - } - - return empty; - }; - - /** - * Returns the number of empty columns. If the optional ending parameter is `true`, returns the number of empty - * columns at right hand edge of the table. - * - * @memberof Core# - * @function countEmptyCols - * @param {Boolean} [ending] If `true`, will only count empty columns at the end of the data source row. - * @returns {Number} Count empty cols - */ - this.countEmptyCols = function (ending) { - if (instance.countRows() < 1) { - return 0; - } - var i = instance.countCols() - 1, - empty = 0; - - while (i >= 0) { - if (instance.isEmptyCol(i)) { - empty++; - } else if (ending) { - break; - } - i--; - } - - return empty; - }; - - /** - * Check if all cells in the row declared by the `row` argument are empty. - * - * @memberof Core# - * @function isEmptyRow - * @param {Number} row Row index. - * @returns {Boolean} `true` if the row at the given `row` is empty, `false` otherwise. - */ - this.isEmptyRow = function (row) { - return priv.settings.isEmptyRow.call(instance, row); - }; - - /** - * Check if all cells in the the column declared by the `col` argument are empty. - * - * @memberof Core# - * @function isEmptyCol - * @param {Number} col Column index. - * @returns {Boolean} `true` if the column at the given `col` is empty, `false` otherwise. - */ - this.isEmptyCol = function (col) { - return priv.settings.isEmptyCol.call(instance, col); - }; - - /** - * Select cell specified by `row` and `col` values or a range of cells finishing at `endRow`, `endCol`. - * By default, viewport will be scrolled to selection. - * After the `selectCell` method had finished, the instance will be listening to keyboard input on the document. - * - * @memberof Core# - * @function selectCell - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {Number} [endRow] Visual end row index (if selecting a range). - * @param {Number} [endCol] Visual end column index (if selecting a range). - * @param {Boolean} [scrollToCell=true] If `true`, the viewport will be scrolled to the selection. - * @param {Boolean} [changeListener=true] If `false`, Handsontable will not change keyboard events listener to himself. - * @returns {Boolean} `true` if selection was successful, `false` otherwise. - */ - this.selectCell = function (row, col, endRow, endCol, scrollToCell, changeListener) { - var coords; - - changeListener = (0, _mixed.isUndefined)(changeListener) || changeListener === true; - - if (typeof row !== 'number' || row < 0 || row >= instance.countRows()) { - return false; - } - if (typeof col !== 'number' || col < 0 || col >= instance.countCols()) { - return false; - } - if ((0, _mixed.isDefined)(endRow)) { - if (typeof endRow !== 'number' || endRow < 0 || endRow >= instance.countRows()) { - return false; - } - if (typeof endCol !== 'number' || endCol < 0 || endCol >= instance.countCols()) { - return false; - } - } - coords = new _src.CellCoords(row, col); - priv.selRange = new _src.CellRange(coords, coords, coords); - - if (changeListener) { - instance.listen(); - } - - if ((0, _mixed.isUndefined)(endRow)) { - selection.setRangeEnd(priv.selRange.from, scrollToCell); - } else { - selection.setRangeEnd(new _src.CellCoords(endRow, endCol), scrollToCell); - } - instance.selection.finish(); - - return true; - }; - - /** - * Select the cell specified by the `row` and `prop` arguments, or a range finishing at `endRow`, `endProp`. - * By default, viewport will be scrolled to selection. - * - * @memberof Core# - * @function selectCellByProp - * @param {Number} row Visual row index. - * @param {String} prop Property name. - * @param {Number} [endRow] visual end row index (if selecting a range). - * @param {String} [endProp] End property name (if selecting a range). - * @param {Boolean} [scrollToCell=true] If `true`, viewport will be scrolled to the selection. - * @returns {Boolean} `true` if selection was successful, `false` otherwise. - */ - this.selectCellByProp = function (row, prop, endRow, endProp, scrollToCell) { - var _instance5; - - arguments[1] = datamap.propToCol(arguments[1]); - - if ((0, _mixed.isDefined)(arguments[3])) { - arguments[3] = datamap.propToCol(arguments[3]); - } - - return (_instance5 = instance).selectCell.apply(_instance5, arguments); - }; - - /** - * Deselects the current cell selection on grid. - * - * @memberof Core# - * @function deselectCell - */ - this.deselectCell = function () { - selection.deselect(); - }; - - /** - * Scroll viewport to coords specified by the `row` and `column` arguments. - * - * @since 0.24.3 - * @memberof Core# - * @function scrollViewportTo - * @param {Number} [row] Visual row index. - * @param {Number} [column] Visual column index. - * @param {Boolean} [snapToBottom = false] If `true`, viewport is scrolled to show the cell on the bottom of the table. - * @param {Boolean} [snapToRight = false] If `true`, viewport is scrolled to show the cell on the right side of the table. - * @returns {Boolean} `true` if scroll was successful, `false` otherwise. - */ - this.scrollViewportTo = function (row, column) { - var snapToBottom = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var snapToRight = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - - if (row !== void 0 && (row < 0 || row >= instance.countRows())) { - return false; - } - if (column !== void 0 && (column < 0 || column >= instance.countCols())) { - return false; - } - - var result = false; - - if (row !== void 0 && column !== void 0) { - instance.view.wt.wtOverlays.topOverlay.scrollTo(row, snapToBottom); - instance.view.wt.wtOverlays.leftOverlay.scrollTo(column, snapToRight); - - result = true; - } - if (typeof row === 'number' && typeof column !== 'number') { - instance.view.wt.wtOverlays.topOverlay.scrollTo(row, snapToBottom); - - result = true; - } - if (typeof column === 'number' && typeof row !== 'number') { - instance.view.wt.wtOverlays.leftOverlay.scrollTo(column, snapToRight); - - result = true; - } - - return result; - }; - - /** - * Removes grid from the DOM. - * - * @memberof Core# - * @function destroy - * @fires Hooks#afterDestroy - */ - this.destroy = function () { - - instance._clearTimeouts(); - if (instance.view) { - // in case HT is destroyed before initialization has finished - instance.view.destroy(); - } - if (dataSource) { - dataSource.destroy(); - } - dataSource = null; - - if (false) { - var licenseInfo = document.querySelector('#hot-display-license-info'); - - if (licenseInfo) { - licenseInfo.parentNode.removeChild(licenseInfo); - } - } - (0, _element.empty)(instance.rootElement); - eventManager.destroy(); - - instance.runHooks('afterDestroy'); - _pluginHooks2.default.getSingleton().destroy(instance); - - for (var i in instance) { - if ((0, _object.hasOwnProperty)(instance, i)) { - // replace instance methods with post mortem - if ((0, _function.isFunction)(instance[i])) { - instance[i] = postMortem; - } else if (i !== 'guid') { - // replace instance properties with null (restores memory) - // it should not be necessary but this prevents a memory leak side effects that show itself in Jasmine tests - instance[i] = null; - } - } - } - - // replace private properties with null (restores memory) - // it should not be necessary but this prevents a memory leak side effects that show itself in Jasmine tests - if (datamap) { - datamap.destroy(); - } - datamap = null; - priv = null; - grid = null; - selection = null; - editorManager = null; - instance = null; - GridSettings = null; - }; - - /** - * Replacement for all methods after Handsotnable was destroyed. - * - * @private - */ - function postMortem() { - throw new Error('This method cannot be called because this Handsontable instance has been destroyed'); - } - - /** - * Returns the active editor object. - * - * @memberof Core# - * @function getActiveEditor - * @returns {Object} The active editor object. - */ - this.getActiveEditor = function () { - return editorManager.getActiveEditor(); - }; - - /** - * Returns plugin instance using the plugin name provided. - * - * @memberof Core# - * @function getPlugin - * @param {String} pluginName The plugin name. - * @returns {*} The plugin instance. - * @since 0.15.0 - */ - this.getPlugin = function (pluginName) { - return (0, _plugins.getPlugin)(this, pluginName); - }; - - /** - * Returns the Handsontable instance. - * - * @memberof Core# - * @function getInstance - * @returns {Handsontable} The Handsontable instance. - */ - this.getInstance = function () { - return instance; - }; - - /** - * Adds listener to the specified hook name (only for this Handsontable instance). - * - * @memberof Core# - * @function addHook - * @see Hooks#add - * @param {String} key Hook name. - * @param {Function|Array} callback Function or array of Functions. - * - * @example - * ```js - * hot.addHook('beforeInit', myCallback); - * ``` - */ - this.addHook = function (key, callback) { - _pluginHooks2.default.getSingleton().add(key, callback, instance); - }; - - /** - * Check if for a specified hook name there are added listeners (only for this Handsontable instance). - * - * @memberof Core# - * @function hasHook - * @see Hooks#has - * @param {String} key Hook name - * @return {Boolean} - * - * @example - * ```js - * var hasBeforeInitListeners = hot.hasHook('beforeInit'); - * ``` - */ - this.hasHook = function (key) { - return _pluginHooks2.default.getSingleton().has(key, instance); - }; - - /** - * Adds listener to specified hook name (only for this Handsontable instance). - * After the listener is triggered, it will be automatically removed. - * - * @memberof Core# - * @function addHookOnce - * @see Hooks#once - * @param {String} key Hook name. - * @param {Function|Array} callback Function or array of Functions. - * - * @example - * ```js - * hot.addHookOnce('beforeInit', myCallback); - * ``` - */ - this.addHookOnce = function (key, callback) { - _pluginHooks2.default.getSingleton().once(key, callback, instance); - }; - - /** - * Removes the hook listener previously registered with {@link Core#addHook}. - * - * @memberof Core# - * @function removeHook - * @see Hooks#remove - * @param {String} key Hook name. - * @param {Function} callback Function which have been registered via {@link Core#addHook}. - * - * @example - * ```js - * hot.removeHook('beforeInit', myCallback); - * ``` - */ - this.removeHook = function (key, callback) { - _pluginHooks2.default.getSingleton().remove(key, callback, instance); - }; - - /** - * Run the callbacks for the hook provided in the `key` argument using the parameters given in the other arguments. - * - * @memberof Core# - * @function runHooks - * @see Hooks#run - * @param {String} key Hook name. - * @param {*} [p1] Argument passed to the callback. - * @param {*} [p2] Argument passed to the callback. - * @param {*} [p3] Argument passed to the callback. - * @param {*} [p4] Argument passed to the callback. - * @param {*} [p5] Argument passed to the callback. - * @param {*} [p6] Argument passed to the callback. - * @returns {*} - * - * @example - * ```js - * hot.runHooks('beforeInit'); - * ``` - */ - this.runHooks = function (key, p1, p2, p3, p4, p5, p6) { - return _pluginHooks2.default.getSingleton().run(instance, key, p1, p2, p3, p4, p5, p6); - }; - - this.timeouts = []; - - /** - * Sets timeout. Purpose of this method is to clear all known timeouts when `destroy` method is called. - * - * @param {*} handle - * @private - */ - this._registerTimeout = function (handle) { - this.timeouts.push(handle); - }; - - /** - * Clears all known timeouts. - * - * @private - */ - this._clearTimeouts = function () { - for (var i = 0, ilen = this.timeouts.length; i < ilen; i++) { - clearTimeout(this.timeouts[i]); - } - }; - - /** - * Handsontable version - * - * @type {String} - */ - // this.version = Handsontable.version; - - _pluginHooks2.default.getSingleton().run(instance, 'construct'); -}; - -/***/ }), -/* 83 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.columnFactory = columnFactory; - -var _object = __webpack_require__(1); - -/* eslint-disable import/prefer-default-export */ -/** - * Factory for columns constructors. - * - * @param {Object} GridSettings - * @param {Array} conflictList - * @return {Object} ColumnSettings - */ -function columnFactory(GridSettings, conflictList) { - function ColumnSettings() {}; - - (0, _object.inherit)(ColumnSettings, GridSettings); - - // Clear conflict settings - for (var i = 0, len = conflictList.length; i < len; i++) { - ColumnSettings.prototype[conflictList[i]] = void 0; - } - - return ColumnSettings; -} - -/***/ }), -/* 84 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.spreadsheetColumnLabel = spreadsheetColumnLabel; -exports.spreadsheetColumnIndex = spreadsheetColumnIndex; -exports.createSpreadsheetData = createSpreadsheetData; -exports.createSpreadsheetObjectData = createSpreadsheetObjectData; -exports.createEmptySpreadsheetData = createEmptySpreadsheetData; -exports.translateRowsToColumns = translateRowsToColumns; -exports.cellMethodLookupFactory = cellMethodLookupFactory; - -var _cellTypes = __webpack_require__(81); - -var _object = __webpack_require__(1); - -var COLUMN_LABEL_BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; -var COLUMN_LABEL_BASE_LENGTH = COLUMN_LABEL_BASE.length; - -/** - * Generates spreadsheet-like column names: A, B, C, ..., Z, AA, AB, etc. - * - * @param {Number} index Column index. - * @returns {String} - */ -function spreadsheetColumnLabel(index) { - var dividend = index + 1; - var columnLabel = ''; - var modulo = void 0; - - while (dividend > 0) { - modulo = (dividend - 1) % COLUMN_LABEL_BASE_LENGTH; - columnLabel = String.fromCharCode(65 + modulo) + columnLabel; - dividend = parseInt((dividend - modulo) / COLUMN_LABEL_BASE_LENGTH, 10); - } - - return columnLabel; -} - -/** - * Generates spreadsheet-like column index from theirs labels: A, B, C ...., Z, AA, AB, etc. - * - * @param {String} label Column label. - * @returns {Number} - */ -function spreadsheetColumnIndex(label) { - var result = 0; - - if (label) { - for (var i = 0, j = label.length - 1; i < label.length; i += 1, j -= 1) { - result += Math.pow(COLUMN_LABEL_BASE_LENGTH, j) * (COLUMN_LABEL_BASE.indexOf(label[i]) + 1); - } - } - --result; - - return result; -} - -/** - * Creates 2D array of Excel-like values "A1", "A2", ... - * - * @param {Number} rows Number of rows to generate. - * @param {Number} columns Number of columns to generate. - * @returns {Array} - */ -function createSpreadsheetData() { - var rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100; - var columns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4; - - var _rows = [], - i, - j; - - for (i = 0; i < rows; i++) { - var row = []; - - for (j = 0; j < columns; j++) { - row.push(spreadsheetColumnLabel(j) + (i + 1)); - } - _rows.push(row); - } - - return _rows; -} - -/** - * Creates 2D array of Excel-like values "A1", "A2", as an array of objects. - * - * @param {Number} rows Number of rows to generate. - * @param {Number} colCount Number of columns to generate. - * @returns {Array} - */ -function createSpreadsheetObjectData() { - var rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100; - var colCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4; - - var _rows = [], - i, - j; - - for (i = 0; i < rows; i++) { - var row = {}; - - for (j = 0; j < colCount; j++) { - row['prop' + j] = spreadsheetColumnLabel(j) + (i + 1); - } - _rows.push(row); - } - - return _rows; -} - -/** - * Generates an empty data object. - * - * @param {Number} rows Number of rows to generate. - * @param {Number} columns Number of columns to generate - * @returns {Array} - */ -function createEmptySpreadsheetData(rows, columns) { - var data = []; - var row = void 0; - - for (var i = 0; i < rows; i++) { - row = []; - for (var j = 0; j < columns; j++) { - row.push(''); - } - data.push(row); - } - - return data; -} - -function translateRowsToColumns(input) { - var i, - ilen, - j, - jlen, - output = [], - olen = 0; - - for (i = 0, ilen = input.length; i < ilen; i++) { - for (j = 0, jlen = input[i].length; j < jlen; j++) { - if (j == olen) { - output.push([]); - olen++; - } - output[j].push(input[i][j]); - } - } - - return output; -} - -/** - * Factory that produces a function for searching methods (or any properties) which could be defined directly in - * table configuration or implicitly, within cell type definition. - * - * For example: renderer can be defined explicitly using "renderer" property in column configuration or it can be - * defined implicitly using "type" property. - * - * Methods/properties defined explicitly always takes precedence over those defined through "type". - * - * If the method/property is not found in an object, searching is continued recursively through prototype chain, until - * it reaches the Object.prototype. - * - * - * @param methodName {String} name of the method/property to search (i.e. 'renderer', 'validator', 'copyable') - * @param allowUndefined {Boolean} [optional] if false, the search is continued if methodName has not been found in cell "type" - * @returns {Function} - */ -function cellMethodLookupFactory(methodName, allowUndefined) { - - allowUndefined = typeof allowUndefined == 'undefined' ? true : allowUndefined; - - return function cellMethodLookup(row, col) { - return function getMethodFromProperties(properties) { - - if (!properties) { - return; // method not found - } else if ((0, _object.hasOwnProperty)(properties, methodName) && properties[methodName] !== void 0) { - // check if it is own and is not empty - return properties[methodName]; // method defined directly - } else if ((0, _object.hasOwnProperty)(properties, 'type') && properties.type) { - // check if it is own and is not empty - var type; - - if (typeof properties.type != 'string') { - throw new Error('Cell type must be a string '); - } - type = (0, _cellTypes.getCellType)(properties.type); - - if ((0, _object.hasOwnProperty)(type, methodName)) { - return type[methodName]; // method defined in type. - } else if (allowUndefined) { - return; // method does not defined in type (eg. validator), returns undefined - } - } - - return getMethodFromProperties(Object.getPrototypeOf(properties)); - }(typeof row == 'number' ? this.getCellMeta(row, col) : row); - }; -} - -/***/ }), -/* 85 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _array = __webpack_require__(2); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class GhostTable - * @util - */ -var GhostTable = function () { - function GhostTable(hotInstance) { - _classCallCheck(this, GhostTable); - - /** - * Handsontable instance. - * - * @type {Core} - */ - this.hot = hotInstance; - /** - * Container element where every table will be injected. - * - * @type {HTMLElement|null} - */ - this.container = null; - /** - * Flag which determine is table was injected to DOM. - * - * @type {Boolean} - */ - this.injected = false; - /** - * Added rows collection. - * - * @type {Array} - */ - this.rows = []; - /** - * Added columns collection. - * - * @type {Array} - */ - this.columns = []; - /** - * Samples prepared for calculations. - * - * @type {Map} - * @default {null} - */ - this.samples = null; - /** - * Ghost table settings. - * - * @type {Object} - * @default {Object} - */ - this.settings = { - useHeaders: true - }; - } - - /** - * Add row. - * - * @param {Number} row Row index. - * @param {Map} samples Samples Map object. - */ - - - _createClass(GhostTable, [{ - key: 'addRow', - value: function addRow(row, samples) { - if (this.columns.length) { - throw new Error('Doesn\'t support multi-dimensional table'); - } - if (!this.rows.length) { - this.container = this.createContainer(this.hot.rootElement.className); - } - var rowObject = { row: row }; - this.rows.push(rowObject); - - this.samples = samples; - this.table = this.createTable(this.hot.table.className); - this.table.colGroup.appendChild(this.createColGroupsCol()); - this.table.tr.appendChild(this.createRow(row)); - this.container.container.appendChild(this.table.fragment); - - rowObject.table = this.table.table; - } - - /** - * Add a row consisting of the column headers. - */ - - }, { - key: 'addColumnHeadersRow', - value: function addColumnHeadersRow(samples) { - if (this.hot.getColHeader(0) != null) { - var rowObject = { row: -1 }; - this.rows.push(rowObject); - - this.container = this.createContainer(this.hot.rootElement.className); - - this.samples = samples; - this.table = this.createTable(this.hot.table.className); - this.table.colGroup.appendChild(this.createColGroupsCol()); - this.table.tHead.appendChild(this.createColumnHeadersRow()); - this.container.container.appendChild(this.table.fragment); - - rowObject.table = this.table.table; - } - } - - /** - * Add column. - * - * @param {Number} column Column index. - * @param {Map} samples Samples Map object. - */ - - }, { - key: 'addColumn', - value: function addColumn(column, samples) { - if (this.rows.length) { - throw new Error('Doesn\'t support multi-dimensional table'); - } - if (!this.columns.length) { - this.container = this.createContainer(this.hot.rootElement.className); - } - var columnObject = { col: column }; - this.columns.push(columnObject); - - this.samples = samples; - this.table = this.createTable(this.hot.table.className); - - if (this.getSetting('useHeaders') && this.hot.getColHeader(column) !== null) { - this.hot.view.appendColHeader(column, this.table.th); - } - this.table.tBody.appendChild(this.createCol(column)); - this.container.container.appendChild(this.table.fragment); - - columnObject.table = this.table.table; - } - - /** - * Get calculated heights. - * - * @param {Function} callback Callback which will be fired for each calculated row. - */ - - }, { - key: 'getHeights', - value: function getHeights(callback) { - if (!this.injected) { - this.injectTable(); - } - (0, _array.arrayEach)(this.rows, function (row) { - // -1 <- reduce border-top from table - callback(row.row, (0, _element.outerHeight)(row.table) - 1); - }); - } - - /** - * Get calculated widths. - * - * @param {Function} callback Callback which will be fired for each calculated column. - */ - - }, { - key: 'getWidths', - value: function getWidths(callback) { - if (!this.injected) { - this.injectTable(); - } - (0, _array.arrayEach)(this.columns, function (column) { - callback(column.col, (0, _element.outerWidth)(column.table)); - }); - } - - /** - * Set the Ghost Table settings to the provided object. - * - * @param {Object} settings New Ghost Table Settings - */ - - }, { - key: 'setSettings', - value: function setSettings(settings) { - this.settings = settings; - } - - /** - * Set a single setting of the Ghost Table. - * - * @param {String} name Setting name. - * @param {*} value Setting value. - */ - - }, { - key: 'setSetting', - value: function setSetting(name, value) { - if (!this.settings) { - this.settings = {}; - } - - this.settings[name] = value; - } - - /** - * Get the Ghost Table settings. - * - * @returns {Object|null} - */ - - }, { - key: 'getSettings', - value: function getSettings() { - return this.settings; - } - - /** - * Get a single Ghost Table setting. - * - * @param {String} name - * @returns {Boolean|null} - */ - - }, { - key: 'getSetting', - value: function getSetting(name) { - if (this.settings) { - return this.settings[name]; - } - return null; - } - - /** - * Create colgroup col elements. - * - * @returns {DocumentFragment} - */ - - }, { - key: 'createColGroupsCol', - value: function createColGroupsCol() { - var _this = this; - - var d = document; - var fragment = d.createDocumentFragment(); - - if (this.hot.hasRowHeaders()) { - fragment.appendChild(this.createColElement(-1)); - } - - this.samples.forEach(function (sample) { - (0, _array.arrayEach)(sample.strings, function (string) { - fragment.appendChild(_this.createColElement(string.col)); - }); - }); - - return fragment; - } - - /** - * Create table row element. - * - * @param {Number} row Row index. - * @returns {DocumentFragment} Returns created table row elements. - */ - - }, { - key: 'createRow', - value: function createRow(row) { - var _this2 = this; - - var d = document; - var fragment = d.createDocumentFragment(); - var th = d.createElement('th'); - - if (this.hot.hasRowHeaders()) { - this.hot.view.appendRowHeader(row, th); - - fragment.appendChild(th); - } - - this.samples.forEach(function (sample) { - (0, _array.arrayEach)(sample.strings, function (string) { - var column = string.col; - var cellProperties = _this2.hot.getCellMeta(row, column); - - cellProperties.col = column; - cellProperties.row = row; - - var renderer = _this2.hot.getCellRenderer(cellProperties); - var td = d.createElement('td'); - - renderer(_this2.hot, td, row, column, _this2.hot.colToProp(column), string.value, cellProperties); - fragment.appendChild(td); - }); - }); - - return fragment; - } - }, { - key: 'createColumnHeadersRow', - value: function createColumnHeadersRow() { - var _this3 = this; - - var d = document; - var fragment = d.createDocumentFragment(); - - if (this.hot.hasRowHeaders()) { - var th = d.createElement('th'); - this.hot.view.appendColHeader(-1, th); - fragment.appendChild(th); - } - - this.samples.forEach(function (sample) { - (0, _array.arrayEach)(sample.strings, function (string) { - var column = string.col; - - var th = d.createElement('th'); - - _this3.hot.view.appendColHeader(column, th); - fragment.appendChild(th); - }); - }); - - return fragment; - } - - /** - * Create table column elements. - * - * @param {Number} column Column index. - * @returns {DocumentFragment} Returns created column table column elements. - */ - - }, { - key: 'createCol', - value: function createCol(column) { - var _this4 = this; - - var d = document; - var fragment = d.createDocumentFragment(); - - this.samples.forEach(function (sample) { - (0, _array.arrayEach)(sample.strings, function (string) { - var row = string.row; - var cellProperties = _this4.hot.getCellMeta(row, column); - - cellProperties.col = column; - cellProperties.row = row; - - var renderer = _this4.hot.getCellRenderer(cellProperties); - var td = d.createElement('td'); - var tr = d.createElement('tr'); - - renderer(_this4.hot, td, row, column, _this4.hot.colToProp(column), string.value, cellProperties); - tr.appendChild(td); - fragment.appendChild(tr); - }); - }); - - return fragment; - } - - /** - * Remove table from document and reset internal state. - */ - - }, { - key: 'clean', - value: function clean() { - this.rows.length = 0; - this.rows[-1] = void 0; - this.columns.length = 0; - - if (this.samples) { - this.samples.clear(); - } - this.samples = null; - this.removeTable(); - } - - /** - * Inject generated table into document. - * - * @param {HTMLElement} [parent=null] - */ - - }, { - key: 'injectTable', - value: function injectTable() { - var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - if (!this.injected) { - (parent || this.hot.rootElement).appendChild(this.container.fragment); - this.injected = true; - } - } - - /** - * Remove table from document. - */ - - }, { - key: 'removeTable', - value: function removeTable() { - if (this.injected && this.container.container.parentNode) { - this.container.container.parentNode.removeChild(this.container.container); - this.container = null; - this.injected = false; - } - } - - /** - * Create col element. - * - * @param {Number} column Column index. - * @returns {HTMLElement} - */ - - }, { - key: 'createColElement', - value: function createColElement(column) { - var d = document; - var col = d.createElement('col'); - - col.style.width = this.hot.view.wt.wtTable.getStretchedColumnWidth(column) + 'px'; - - return col; - } - - /** - * Create table element. - * - * @param {String} className - * @returns {Object} - */ - - }, { - key: 'createTable', - value: function createTable() { - var className = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - - var d = document; - var fragment = d.createDocumentFragment(); - var table = d.createElement('table'); - var tHead = d.createElement('thead'); - var tBody = d.createElement('tbody'); - var colGroup = d.createElement('colgroup'); - var tr = d.createElement('tr'); - var th = d.createElement('th'); - - if (this.isVertical()) { - table.appendChild(colGroup); - } - if (this.isHorizontal()) { - tr.appendChild(th); - tHead.appendChild(tr); - table.style.tableLayout = 'auto'; - table.style.width = 'auto'; - } - table.appendChild(tHead); - - if (this.isVertical()) { - tBody.appendChild(tr); - } - table.appendChild(tBody); - (0, _element.addClass)(table, className); - fragment.appendChild(table); - - return { fragment: fragment, table: table, tHead: tHead, tBody: tBody, colGroup: colGroup, tr: tr, th: th }; - } - - /** - * Create container for tables. - * - * @param {String} className - * @returns {Object} - */ - - }, { - key: 'createContainer', - value: function createContainer() { - var className = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - - var d = document; - var fragment = d.createDocumentFragment(); - var container = d.createElement('div'); - - className = 'htGhostTable htAutoSize ' + className.trim(); - (0, _element.addClass)(container, className); - fragment.appendChild(container); - - return { fragment: fragment, container: container }; - } - - /** - * Checks if table is raised vertically (checking rows). - * - * @returns {Boolean} - */ - - }, { - key: 'isVertical', - value: function isVertical() { - return !!(this.rows.length && !this.columns.length); - } - - /** - * Checks if table is raised horizontally (checking columns). - * - * @returns {Boolean} - */ - - }, { - key: 'isHorizontal', - value: function isHorizontal() { - return !!(this.columns.length && !this.rows.length); - } - }]); - - return GhostTable; -}(); - -exports.default = GhostTable; - -/***/ }), -/* 86 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = separatorItem; -var KEY = exports.KEY = '---------'; - -function separatorItem() { - return { - name: KEY - }; -} - -/***/ }), -/* 87 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _array = __webpack_require__(2); - -var _object = __webpack_require__(1); - -var MIXIN_NAME = 'localHooks'; - -/** - * Mixin object to extend objects functionality for local hooks. - * - * @type {Object} - */ -var localHooks = { - /** - * Internal hooks storage. - */ - _localHooks: Object.create(null), - - /** - * Add hook to the collection. - * - * @param {String} key Hook name. - * @param {Function} callback Hook callback - */ - addLocalHook: function addLocalHook(key, callback) { - if (!this._localHooks[key]) { - this._localHooks[key] = []; - } - this._localHooks[key].push(callback); - }, - - - /** - * Run hooks. - * - * @param {String} key Hook name. - * @param {*} params - */ - runLocalHooks: function runLocalHooks(key) { - var _this = this; - - for (var _len = arguments.length, params = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - params[_key - 1] = arguments[_key]; - } - - if (this._localHooks[key]) { - (0, _array.arrayEach)(this._localHooks[key], function (callback) { - return callback.apply(_this, params); - }); - } - }, - - - /** - * Clear all added hooks. - */ - clearLocalHooks: function clearLocalHooks() { - this._localHooks = {}; - } -}; - -(0, _object.defineGetter)(localHooks, 'MIXIN_NAME', MIXIN_NAME, { - writable: false, - enumerable: false -}); - -exports.default = localHooks; - -/***/ }), -/* 88 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.ITEMS = exports.UNDO = exports.SEPARATOR = exports.ROW_BELOW = exports.ROW_ABOVE = exports.REMOVE_ROW = exports.REMOVE_COLUMN = exports.REDO = exports.READ_ONLY = exports.COLUMN_RIGHT = exports.COLUMN_LEFT = exports.CLEAR_COLUMN = exports.ALIGNMENT = undefined; - -var _predefinedItems2; - -var _alignment = __webpack_require__(262); - -Object.defineProperty(exports, 'ALIGNMENT', { - enumerable: true, - get: function get() { - return _alignment.KEY; - } -}); - -var _clearColumn = __webpack_require__(263); - -Object.defineProperty(exports, 'CLEAR_COLUMN', { - enumerable: true, - get: function get() { - return _clearColumn.KEY; - } -}); - -var _columnLeft = __webpack_require__(264); - -Object.defineProperty(exports, 'COLUMN_LEFT', { - enumerable: true, - get: function get() { - return _columnLeft.KEY; - } -}); - -var _columnRight = __webpack_require__(265); - -Object.defineProperty(exports, 'COLUMN_RIGHT', { - enumerable: true, - get: function get() { - return _columnRight.KEY; - } -}); - -var _readOnly = __webpack_require__(266); - -Object.defineProperty(exports, 'READ_ONLY', { - enumerable: true, - get: function get() { - return _readOnly.KEY; - } -}); - -var _redo = __webpack_require__(267); - -Object.defineProperty(exports, 'REDO', { - enumerable: true, - get: function get() { - return _redo.KEY; - } -}); - -var _removeColumn = __webpack_require__(268); - -Object.defineProperty(exports, 'REMOVE_COLUMN', { - enumerable: true, - get: function get() { - return _removeColumn.KEY; - } -}); - -var _removeRow = __webpack_require__(269); - -Object.defineProperty(exports, 'REMOVE_ROW', { - enumerable: true, - get: function get() { - return _removeRow.KEY; - } -}); - -var _rowAbove = __webpack_require__(270); - -Object.defineProperty(exports, 'ROW_ABOVE', { - enumerable: true, - get: function get() { - return _rowAbove.KEY; - } -}); - -var _rowBelow = __webpack_require__(271); - -Object.defineProperty(exports, 'ROW_BELOW', { - enumerable: true, - get: function get() { - return _rowBelow.KEY; - } -}); - -var _separator = __webpack_require__(86); - -Object.defineProperty(exports, 'SEPARATOR', { - enumerable: true, - get: function get() { - return _separator.KEY; - } -}); - -var _undo = __webpack_require__(272); - -Object.defineProperty(exports, 'UNDO', { - enumerable: true, - get: function get() { - return _undo.KEY; - } -}); -exports.predefinedItems = predefinedItems; -exports.addItem = addItem; - -var _object = __webpack_require__(1); - -var _alignment2 = _interopRequireDefault(_alignment); - -var _clearColumn2 = _interopRequireDefault(_clearColumn); - -var _columnLeft2 = _interopRequireDefault(_columnLeft); - -var _columnRight2 = _interopRequireDefault(_columnRight); - -var _readOnly2 = _interopRequireDefault(_readOnly); - -var _redo2 = _interopRequireDefault(_redo); - -var _removeColumn2 = _interopRequireDefault(_removeColumn); - -var _removeRow2 = _interopRequireDefault(_removeRow); - -var _rowAbove2 = _interopRequireDefault(_rowAbove); - -var _rowBelow2 = _interopRequireDefault(_rowBelow); - -var _separator2 = _interopRequireDefault(_separator); - -var _undo2 = _interopRequireDefault(_undo); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var ITEMS = exports.ITEMS = [_rowAbove.KEY, _rowBelow.KEY, _columnLeft.KEY, _columnRight.KEY, _clearColumn.KEY, _removeRow.KEY, _removeColumn.KEY, _undo.KEY, _redo.KEY, _readOnly.KEY, _alignment.KEY, _separator.KEY]; - -var _predefinedItems = (_predefinedItems2 = {}, _defineProperty(_predefinedItems2, _separator.KEY, _separator2.default), _defineProperty(_predefinedItems2, _rowAbove.KEY, _rowAbove2.default), _defineProperty(_predefinedItems2, _rowBelow.KEY, _rowBelow2.default), _defineProperty(_predefinedItems2, _columnLeft.KEY, _columnLeft2.default), _defineProperty(_predefinedItems2, _columnRight.KEY, _columnRight2.default), _defineProperty(_predefinedItems2, _clearColumn.KEY, _clearColumn2.default), _defineProperty(_predefinedItems2, _removeRow.KEY, _removeRow2.default), _defineProperty(_predefinedItems2, _removeColumn.KEY, _removeColumn2.default), _defineProperty(_predefinedItems2, _undo.KEY, _undo2.default), _defineProperty(_predefinedItems2, _redo.KEY, _redo2.default), _defineProperty(_predefinedItems2, _readOnly.KEY, _readOnly2.default), _defineProperty(_predefinedItems2, _alignment.KEY, _alignment2.default), _predefinedItems2); - -/** - * Gets new object with all predefined menu items. - * - * @returns {Object} - */ -function predefinedItems() { - var items = {}; - - (0, _object.objectEach)(_predefinedItems, function (itemFactory, key) { - items[key] = itemFactory(); - }); - - return items; -} - -/** - * Add new predefined menu item to the collection. - * - * @param {String} key Menu command id. - * @param {Object} item Object command descriptor. - */ -function addItem(key, item) { - if (ITEMS.indexOf(key) === -1) { - _predefinedItems[key] = item; - } -} - -/***/ }), -/* 89 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var strong = __webpack_require__(90); -var validate = __webpack_require__(39); -var MAP = 'Map'; - -// 23.1 Map Objects -module.exports = __webpack_require__(59)(MAP, function (get) { - return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; -}, { - // 23.1.3.6 Map.prototype.get(key) - get: function get(key) { - var entry = strong.getEntry(validate(this, MAP), key); - return entry && entry.v; - }, - // 23.1.3.9 Map.prototype.set(key, value) - set: function set(key, value) { - return strong.def(validate(this, MAP), key === 0 ? 0 : key, value); - } -}, strong, true); - - -/***/ }), -/* 90 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var dP = __webpack_require__(18).f; -var create = __webpack_require__(66); -var redefineAll = __webpack_require__(54); -var ctx = __webpack_require__(30); -var anInstance = __webpack_require__(56); -var forOf = __webpack_require__(57); -var $iterDefine = __webpack_require__(99); -var step = __webpack_require__(100); -var setSpecies = __webpack_require__(101); -var DESCRIPTORS = __webpack_require__(20); -var fastKey = __webpack_require__(47).fastKey; -var validate = __webpack_require__(39); -var SIZE = DESCRIPTORS ? '_s' : 'size'; - -var getEntry = function (that, key) { - // fast case - var index = fastKey(key); - var entry; - if (index !== 'F') return that._i[index]; - // frozen object case - for (entry = that._f; entry; entry = entry.n) { - if (entry.k == key) return entry; - } -}; - -module.exports = { - getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, NAME, '_i'); - that._t = NAME; // collection type - that._i = create(null); // index - that._f = undefined; // first entry - that._l = undefined; // last entry - that[SIZE] = 0; // size - if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); - }); - redefineAll(C.prototype, { - // 23.1.3.1 Map.prototype.clear() - // 23.2.3.2 Set.prototype.clear() - clear: function clear() { - for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) { - entry.r = true; - if (entry.p) entry.p = entry.p.n = undefined; - delete data[entry.i]; - } - that._f = that._l = undefined; - that[SIZE] = 0; - }, - // 23.1.3.3 Map.prototype.delete(key) - // 23.2.3.4 Set.prototype.delete(value) - 'delete': function (key) { - var that = validate(this, NAME); - var entry = getEntry(that, key); - if (entry) { - var next = entry.n; - var prev = entry.p; - delete that._i[entry.i]; - entry.r = true; - if (prev) prev.n = next; - if (next) next.p = prev; - if (that._f == entry) that._f = next; - if (that._l == entry) that._l = prev; - that[SIZE]--; - } return !!entry; - }, - // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) - // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) - forEach: function forEach(callbackfn /* , that = undefined */) { - validate(this, NAME); - var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); - var entry; - while (entry = entry ? entry.n : this._f) { - f(entry.v, entry.k, this); - // revert to the last existing entry - while (entry && entry.r) entry = entry.p; - } - }, - // 23.1.3.7 Map.prototype.has(key) - // 23.2.3.7 Set.prototype.has(value) - has: function has(key) { - return !!getEntry(validate(this, NAME), key); - } - }); - if (DESCRIPTORS) dP(C.prototype, 'size', { - get: function () { - return validate(this, NAME)[SIZE]; - } - }); - return C; - }, - def: function (that, key, value) { - var entry = getEntry(that, key); - var prev, index; - // change existing entry - if (entry) { - entry.v = value; - // create new entry - } else { - that._l = entry = { - i: index = fastKey(key, true), // <- index - k: key, // <- key - v: value, // <- value - p: prev = that._l, // <- previous entry - n: undefined, // <- next entry - r: false // <- removed - }; - if (!that._f) that._f = entry; - if (prev) prev.n = entry; - that[SIZE]++; - // add to index - if (index !== 'F') that._i[index] = entry; - } return that; - }, - getEntry: getEntry, - setStrong: function (C, NAME, IS_MAP) { - // add .keys, .values, .entries, [@@iterator] - // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 - $iterDefine(C, NAME, function (iterated, kind) { - this._t = validate(iterated, NAME); // target - this._k = kind; // kind - this._l = undefined; // previous - }, function () { - var that = this; - var kind = that._k; - var entry = that._l; - // revert to the last existing entry - while (entry && entry.r) entry = entry.p; - // get next entry - if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) { - // or finish the iteration - that._t = undefined; - return step(1); - } - // return step by kind - if (kind == 'keys') return step(0, entry.k); - if (kind == 'values') return step(0, entry.v); - return step(0, [entry.k, entry.v]); - }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); - - // add [@@species], 23.1.2.2, 23.2.2.2 - setSpecies(NAME); - } -}; - - -/***/ }), -/* 91 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = !__webpack_require__(20) && !__webpack_require__(23)(function () { - return Object.defineProperty(__webpack_require__(64)('div'), 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 92 */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(24); -var toIObject = __webpack_require__(25); -var arrayIndexOf = __webpack_require__(93)(false); -var IE_PROTO = __webpack_require__(68)('IE_PROTO'); - -module.exports = function (object, names) { - var O = toIObject(object); - var i = 0; - var result = []; - var key; - for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while (names.length > i) if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } - return result; -}; - - -/***/ }), -/* 93 */ -/***/ (function(module, exports, __webpack_require__) { - -// false -> Array#indexOf -// true -> Array#includes -var toIObject = __webpack_require__(25); -var toLength = __webpack_require__(21); -var toAbsoluteIndex = __webpack_require__(53); -module.exports = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - - -/***/ }), -/* 94 */ -/***/ (function(module, exports, __webpack_require__) { - -var document = __webpack_require__(11).document; -module.exports = document && document.documentElement; - - -/***/ }), -/* 95 */ -/***/ (function(module, exports, __webpack_require__) { - -// call something on iterator step with safe closing on error -var anObject = __webpack_require__(16); -module.exports = function (iterator, fn, value, entries) { - try { - return entries ? fn(anObject(value)[0], value[1]) : fn(value); - // 7.4.6 IteratorClose(iterator, completion) - } catch (e) { - var ret = iterator['return']; - if (ret !== undefined) anObject(ret.call(iterator)); - throw e; - } -}; - - -/***/ }), -/* 96 */ -/***/ (function(module, exports, __webpack_require__) { - -// check on default Array iterator -var Iterators = __webpack_require__(45); -var ITERATOR = __webpack_require__(10)('iterator'); -var ArrayProto = Array.prototype; - -module.exports = function (it) { - return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); -}; - - -/***/ }), -/* 97 */ -/***/ (function(module, exports, __webpack_require__) { - -var classof = __webpack_require__(98); -var ITERATOR = __webpack_require__(10)('iterator'); -var Iterators = __webpack_require__(45); -module.exports = __webpack_require__(44).getIteratorMethod = function (it) { - if (it != undefined) return it[ITERATOR] - || it['@@iterator'] - || Iterators[classof(it)]; -}; - - -/***/ }), -/* 98 */ -/***/ (function(module, exports, __webpack_require__) { - -// getting tag from 19.1.3.6 Object.prototype.toString() -var cof = __webpack_require__(37); -var TAG = __webpack_require__(10)('toStringTag'); -// ES3 wrong here -var ARG = cof(function () { return arguments; }()) == 'Arguments'; - -// fallback for IE11 Script Access Denied error -var tryGet = function (it, key) { - try { - return it[key]; - } catch (e) { /* empty */ } -}; - -module.exports = function (it) { - var O, T, B; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T - // builtinTag case - : ARG ? cof(O) - // ES3 arguments fallback - : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; -}; - - -/***/ }), -/* 99 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var LIBRARY = __webpack_require__(58); -var $export = __webpack_require__(3); -var redefine = __webpack_require__(28); -var hide = __webpack_require__(29); -var has = __webpack_require__(24); -var Iterators = __webpack_require__(45); -var $iterCreate = __webpack_require__(182); -var setToStringTag = __webpack_require__(46); -var getPrototypeOf = __webpack_require__(183); -var ITERATOR = __webpack_require__(10)('iterator'); -var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` -var FF_ITERATOR = '@@iterator'; -var KEYS = 'keys'; -var VALUES = 'values'; - -var returnThis = function () { return this; }; - -module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { - $iterCreate(Constructor, NAME, next); - var getMethod = function (kind) { - if (!BUGGY && kind in proto) return proto[kind]; - switch (kind) { - case KEYS: return function keys() { return new Constructor(this, kind); }; - case VALUES: return function values() { return new Constructor(this, kind); }; - } return function entries() { return new Constructor(this, kind); }; - }; - var TAG = NAME + ' Iterator'; - var DEF_VALUES = DEFAULT == VALUES; - var VALUES_BUG = false; - var proto = Base.prototype; - var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; - var $default = $native || getMethod(DEFAULT); - var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; - var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; - var methods, key, IteratorPrototype; - // Fix native - if ($anyNative) { - IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); - if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { - // Set @@toStringTag to native iterators - setToStringTag(IteratorPrototype, TAG, true); - // fix for some old engines - if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis); - } - } - // fix Array#{values, @@iterator}.name in V8 / FF - if (DEF_VALUES && $native && $native.name !== VALUES) { - VALUES_BUG = true; - $default = function values() { return $native.call(this); }; - } - // Define iterator - if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { - hide(proto, ITERATOR, $default); - } - // Plug for library - Iterators[NAME] = $default; - Iterators[TAG] = returnThis; - if (DEFAULT) { - methods = { - values: DEF_VALUES ? $default : getMethod(VALUES), - keys: IS_SET ? $default : getMethod(KEYS), - entries: $entries - }; - if (FORCED) for (key in methods) { - if (!(key in proto)) redefine(proto, key, methods[key]); - } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); - } - return methods; -}; - - -/***/ }), -/* 100 */ -/***/ (function(module, exports) { - -module.exports = function (done, value) { - return { value: value, done: !!done }; -}; - - -/***/ }), -/* 101 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var global = __webpack_require__(11); -var dP = __webpack_require__(18); -var DESCRIPTORS = __webpack_require__(20); -var SPECIES = __webpack_require__(10)('species'); - -module.exports = function (KEY) { - var C = global[KEY]; - if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { - configurable: true, - get: function () { return this; } - }); -}; - - -/***/ }), -/* 102 */ -/***/ (function(module, exports, __webpack_require__) { - -// Works with __proto__ only. Old v8 can't work with null proto objects. -/* eslint-disable no-proto */ -var isObject = __webpack_require__(14); -var anObject = __webpack_require__(16); -var check = function (O, proto) { - anObject(O); - if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); -}; -module.exports = { - set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line - function (test, buggy, set) { - try { - set = __webpack_require__(30)(Function.call, __webpack_require__(72).f(Object.prototype, '__proto__').set, 2); - set(test, []); - buggy = !(test instanceof Array); - } catch (e) { buggy = true; } - return function setPrototypeOf(O, proto) { - check(O, proto); - if (buggy) O.__proto__ = proto; - else set(O, proto); - return O; - }; - }({}, false) : undefined), - check: check -}; - - -/***/ }), -/* 103 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var strong = __webpack_require__(90); -var validate = __webpack_require__(39); -var SET = 'Set'; - -// 23.2 Set Objects -module.exports = __webpack_require__(59)(SET, function (get) { - return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; -}, { - // 23.2.3.1 Set.prototype.add(value) - add: function add(value) { - return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value); - } -}, strong); - - -/***/ }), -/* 104 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var each = __webpack_require__(60)(0); -var redefine = __webpack_require__(28); -var meta = __webpack_require__(47); -var assign = __webpack_require__(106); -var weak = __webpack_require__(107); -var isObject = __webpack_require__(14); -var fails = __webpack_require__(23); -var validate = __webpack_require__(39); -var WEAK_MAP = 'WeakMap'; -var getWeak = meta.getWeak; -var isExtensible = Object.isExtensible; -var uncaughtFrozenStore = weak.ufstore; -var tmp = {}; -var InternalMap; - -var wrapper = function (get) { - return function WeakMap() { - return get(this, arguments.length > 0 ? arguments[0] : undefined); - }; -}; - -var methods = { - // 23.3.3.3 WeakMap.prototype.get(key) - get: function get(key) { - if (isObject(key)) { - var data = getWeak(key); - if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key); - return data ? data[this._i] : undefined; - } - }, - // 23.3.3.5 WeakMap.prototype.set(key, value) - set: function set(key, value) { - return weak.def(validate(this, WEAK_MAP), key, value); - } -}; - -// 23.3 WeakMap Objects -var $WeakMap = module.exports = __webpack_require__(59)(WEAK_MAP, wrapper, methods, weak, true, true); - -// IE11 WeakMap frozen keys fix -if (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) { - InternalMap = weak.getConstructor(wrapper, WEAK_MAP); - assign(InternalMap.prototype, methods); - meta.NEED = true; - each(['delete', 'has', 'get', 'set'], function (key) { - var proto = $WeakMap.prototype; - var method = proto[key]; - redefine(proto, key, function (a, b) { - // store frozen objects on internal weakmap shim - if (isObject(a) && !isExtensible(a)) { - if (!this._f) this._f = new InternalMap(); - var result = this._f[key](a, b); - return key == 'set' ? this : result; - // store all the rest on native weakmap - } return method.call(this, a, b); - }); - }); -} - - -/***/ }), -/* 105 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.2.2 IsArray(argument) -var cof = __webpack_require__(37); -module.exports = Array.isArray || function isArray(arg) { - return cof(arg) == 'Array'; -}; - - -/***/ }), -/* 106 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// 19.1.2.1 Object.assign(target, source, ...) -var getKeys = __webpack_require__(36); -var gOPS = __webpack_require__(61); -var pIE = __webpack_require__(48); -var toObject = __webpack_require__(38); -var IObject = __webpack_require__(67); -var $assign = Object.assign; - -// should work with symbols and should have deterministic property order (V8 bug) -module.exports = !$assign || __webpack_require__(23)(function () { - var A = {}; - var B = {}; - // eslint-disable-next-line no-undef - var S = Symbol(); - var K = 'abcdefghijklmnopqrst'; - A[S] = 7; - K.split('').forEach(function (k) { B[k] = k; }); - return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; -}) ? function assign(target, source) { // eslint-disable-line no-unused-vars - var T = toObject(target); - var aLen = arguments.length; - var index = 1; - var getSymbols = gOPS.f; - var isEnum = pIE.f; - while (aLen > index) { - var S = IObject(arguments[index++]); - var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S); - var length = keys.length; - var j = 0; - var key; - while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key]; - } return T; -} : $assign; - - -/***/ }), -/* 107 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var redefineAll = __webpack_require__(54); -var getWeak = __webpack_require__(47).getWeak; -var anObject = __webpack_require__(16); -var isObject = __webpack_require__(14); -var anInstance = __webpack_require__(56); -var forOf = __webpack_require__(57); -var createArrayMethod = __webpack_require__(60); -var $has = __webpack_require__(24); -var validate = __webpack_require__(39); -var arrayFind = createArrayMethod(5); -var arrayFindIndex = createArrayMethod(6); -var id = 0; - -// fallback for uncaught frozen keys -var uncaughtFrozenStore = function (that) { - return that._l || (that._l = new UncaughtFrozenStore()); -}; -var UncaughtFrozenStore = function () { - this.a = []; -}; -var findUncaughtFrozen = function (store, key) { - return arrayFind(store.a, function (it) { - return it[0] === key; - }); -}; -UncaughtFrozenStore.prototype = { - get: function (key) { - var entry = findUncaughtFrozen(this, key); - if (entry) return entry[1]; - }, - has: function (key) { - return !!findUncaughtFrozen(this, key); - }, - set: function (key, value) { - var entry = findUncaughtFrozen(this, key); - if (entry) entry[1] = value; - else this.a.push([key, value]); - }, - 'delete': function (key) { - var index = arrayFindIndex(this.a, function (it) { - return it[0] === key; - }); - if (~index) this.a.splice(index, 1); - return !!~index; - } -}; - -module.exports = { - getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, NAME, '_i'); - that._t = NAME; // collection type - that._i = id++; // collection id - that._l = undefined; // leak store for uncaught frozen objects - if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); - }); - redefineAll(C.prototype, { - // 23.3.3.2 WeakMap.prototype.delete(key) - // 23.4.3.3 WeakSet.prototype.delete(value) - 'delete': function (key) { - if (!isObject(key)) return false; - var data = getWeak(key); - if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key); - return data && $has(data, this._i) && delete data[this._i]; - }, - // 23.3.3.4 WeakMap.prototype.has(key) - // 23.4.3.4 WeakSet.prototype.has(value) - has: function has(key) { - if (!isObject(key)) return false; - var data = getWeak(key); - if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key); - return data && $has(data, this._i); - } - }); - return C; - }, - def: function (that, key, value) { - var data = getWeak(anObject(key), true); - if (data === true) uncaughtFrozenStore(that).set(key, value); - else data[that._i] = value; - return that; - }, - ufstore: uncaughtFrozenStore -}; - - -/***/ }), -/* 108 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var weak = __webpack_require__(107); -var validate = __webpack_require__(39); -var WEAK_SET = 'WeakSet'; - -// 23.4 WeakSet Objects -__webpack_require__(59)(WEAK_SET, function (get) { - return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; -}, { - // 23.4.3.1 WeakSet.prototype.add(value) - add: function add(value) { - return weak.def(validate(this, WEAK_SET), value, true); - } -}, weak, false, true); - - -/***/ }), -/* 109 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var LIBRARY = __webpack_require__(58); -var global = __webpack_require__(11); -var ctx = __webpack_require__(30); -var classof = __webpack_require__(98); -var $export = __webpack_require__(3); -var isObject = __webpack_require__(14); -var aFunction = __webpack_require__(55); -var anInstance = __webpack_require__(56); -var forOf = __webpack_require__(57); -var speciesConstructor = __webpack_require__(187); -var task = __webpack_require__(73).set; -var microtask = __webpack_require__(189)(); -var newPromiseCapabilityModule = __webpack_require__(110); -var perform = __webpack_require__(190); -var promiseResolve = __webpack_require__(191); -var PROMISE = 'Promise'; -var TypeError = global.TypeError; -var process = global.process; -var $Promise = global[PROMISE]; -var isNode = classof(process) == 'process'; -var empty = function () { /* empty */ }; -var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper; -var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f; - -var USE_NATIVE = !!function () { - try { - // correct subclassing with @@species support - var promise = $Promise.resolve(1); - var FakePromise = (promise.constructor = {})[__webpack_require__(10)('species')] = function (exec) { - exec(empty, empty); - }; - // unhandled rejections tracking support, NodeJS Promise without it fails @@species test - return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise; - } catch (e) { /* empty */ } -}(); - -// helpers -var isThenable = function (it) { - var then; - return isObject(it) && typeof (then = it.then) == 'function' ? then : false; -}; -var notify = function (promise, isReject) { - if (promise._n) return; - promise._n = true; - var chain = promise._c; - microtask(function () { - var value = promise._v; - var ok = promise._s == 1; - var i = 0; - var run = function (reaction) { - var handler = ok ? reaction.ok : reaction.fail; - var resolve = reaction.resolve; - var reject = reaction.reject; - var domain = reaction.domain; - var result, then; - try { - if (handler) { - if (!ok) { - if (promise._h == 2) onHandleUnhandled(promise); - promise._h = 1; - } - if (handler === true) result = value; - else { - if (domain) domain.enter(); - result = handler(value); - if (domain) domain.exit(); - } - if (result === reaction.promise) { - reject(TypeError('Promise-chain cycle')); - } else if (then = isThenable(result)) { - then.call(result, resolve, reject); - } else resolve(result); - } else reject(value); - } catch (e) { - reject(e); - } - }; - while (chain.length > i) run(chain[i++]); // variable length - can't use forEach - promise._c = []; - promise._n = false; - if (isReject && !promise._h) onUnhandled(promise); - }); -}; -var onUnhandled = function (promise) { - task.call(global, function () { - var value = promise._v; - var unhandled = isUnhandled(promise); - var result, handler, console; - if (unhandled) { - result = perform(function () { - if (isNode) { - process.emit('unhandledRejection', value, promise); - } else if (handler = global.onunhandledrejection) { - handler({ promise: promise, reason: value }); - } else if ((console = global.console) && console.error) { - console.error('Unhandled promise rejection', value); - } - }); - // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should - promise._h = isNode || isUnhandled(promise) ? 2 : 1; - } promise._a = undefined; - if (unhandled && result.e) throw result.v; - }); -}; -var isUnhandled = function (promise) { - if (promise._h == 1) return false; - var chain = promise._a || promise._c; - var i = 0; - var reaction; - while (chain.length > i) { - reaction = chain[i++]; - if (reaction.fail || !isUnhandled(reaction.promise)) return false; - } return true; -}; -var onHandleUnhandled = function (promise) { - task.call(global, function () { - var handler; - if (isNode) { - process.emit('rejectionHandled', promise); - } else if (handler = global.onrejectionhandled) { - handler({ promise: promise, reason: promise._v }); - } - }); -}; -var $reject = function (value) { - var promise = this; - if (promise._d) return; - promise._d = true; - promise = promise._w || promise; // unwrap - promise._v = value; - promise._s = 2; - if (!promise._a) promise._a = promise._c.slice(); - notify(promise, true); -}; -var $resolve = function (value) { - var promise = this; - var then; - if (promise._d) return; - promise._d = true; - promise = promise._w || promise; // unwrap - try { - if (promise === value) throw TypeError("Promise can't be resolved itself"); - if (then = isThenable(value)) { - microtask(function () { - var wrapper = { _w: promise, _d: false }; // wrap - try { - then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1)); - } catch (e) { - $reject.call(wrapper, e); - } - }); - } else { - promise._v = value; - promise._s = 1; - notify(promise, false); - } - } catch (e) { - $reject.call({ _w: promise, _d: false }, e); // wrap - } -}; - -// constructor polyfill -if (!USE_NATIVE) { - // 25.4.3.1 Promise(executor) - $Promise = function Promise(executor) { - anInstance(this, $Promise, PROMISE, '_h'); - aFunction(executor); - Internal.call(this); - try { - executor(ctx($resolve, this, 1), ctx($reject, this, 1)); - } catch (err) { - $reject.call(this, err); - } - }; - // eslint-disable-next-line no-unused-vars - Internal = function Promise(executor) { - this._c = []; // <- awaiting reactions - this._a = undefined; // <- checked in isUnhandled reactions - this._s = 0; // <- state - this._d = false; // <- done - this._v = undefined; // <- value - this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled - this._n = false; // <- notify - }; - Internal.prototype = __webpack_require__(54)($Promise.prototype, { - // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected) - then: function then(onFulfilled, onRejected) { - var reaction = newPromiseCapability(speciesConstructor(this, $Promise)); - reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; - reaction.fail = typeof onRejected == 'function' && onRejected; - reaction.domain = isNode ? process.domain : undefined; - this._c.push(reaction); - if (this._a) this._a.push(reaction); - if (this._s) notify(this, false); - return reaction.promise; - }, - // 25.4.5.1 Promise.prototype.catch(onRejected) - 'catch': function (onRejected) { - return this.then(undefined, onRejected); - } - }); - OwnPromiseCapability = function () { - var promise = new Internal(); - this.promise = promise; - this.resolve = ctx($resolve, promise, 1); - this.reject = ctx($reject, promise, 1); - }; - newPromiseCapabilityModule.f = newPromiseCapability = function (C) { - return C === $Promise || C === Wrapper - ? new OwnPromiseCapability(C) - : newGenericPromiseCapability(C); - }; -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise }); -__webpack_require__(46)($Promise, PROMISE); -__webpack_require__(101)(PROMISE); -Wrapper = __webpack_require__(44)[PROMISE]; - -// statics -$export($export.S + $export.F * !USE_NATIVE, PROMISE, { - // 25.4.4.5 Promise.reject(r) - reject: function reject(r) { - var capability = newPromiseCapability(this); - var $$reject = capability.reject; - $$reject(r); - return capability.promise; - } -}); -$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { - // 25.4.4.6 Promise.resolve(x) - resolve: function resolve(x) { - return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x); - } -}); -$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(71)(function (iter) { - $Promise.all(iter)['catch'](empty); -})), PROMISE, { - // 25.4.4.1 Promise.all(iterable) - all: function all(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var resolve = capability.resolve; - var reject = capability.reject; - var result = perform(function () { - var values = []; - var index = 0; - var remaining = 1; - forOf(iterable, false, function (promise) { - var $index = index++; - var alreadyCalled = false; - values.push(undefined); - remaining++; - C.resolve(promise).then(function (value) { - if (alreadyCalled) return; - alreadyCalled = true; - values[$index] = value; - --remaining || resolve(values); - }, reject); - }); - --remaining || resolve(values); - }); - if (result.e) reject(result.v); - return capability.promise; - }, - // 25.4.4.4 Promise.race(iterable) - race: function race(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var reject = capability.reject; - var result = perform(function () { - forOf(iterable, false, function (promise) { - C.resolve(promise).then(capability.resolve, reject); - }); - }); - if (result.e) reject(result.v); - return capability.promise; - } -}); - - -/***/ }), -/* 110 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// 25.4.1.5 NewPromiseCapability(C) -var aFunction = __webpack_require__(55); - -function PromiseCapability(C) { - var resolve, reject; - this.promise = new C(function ($$resolve, $$reject) { - if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); - resolve = $$resolve; - reject = $$reject; - }); - this.resolve = aFunction(resolve); - this.reject = aFunction(reject); -} - -module.exports.f = function (C) { - return new PromiseCapability(C); -}; - - -/***/ }), -/* 111 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// ECMAScript 6 symbols shim -var global = __webpack_require__(11); -var has = __webpack_require__(24); -var DESCRIPTORS = __webpack_require__(20); -var $export = __webpack_require__(3); -var redefine = __webpack_require__(28); -var META = __webpack_require__(47).KEY; -var $fails = __webpack_require__(23); -var shared = __webpack_require__(69); -var setToStringTag = __webpack_require__(46); -var uid = __webpack_require__(42); -var wks = __webpack_require__(10); -var wksExt = __webpack_require__(112); -var wksDefine = __webpack_require__(192); -var enumKeys = __webpack_require__(193); -var isArray = __webpack_require__(105); -var anObject = __webpack_require__(16); -var toIObject = __webpack_require__(25); -var toPrimitive = __webpack_require__(65); -var createDesc = __webpack_require__(43); -var _create = __webpack_require__(66); -var gOPNExt = __webpack_require__(194); -var $GOPD = __webpack_require__(72); -var $DP = __webpack_require__(18); -var $keys = __webpack_require__(36); -var gOPD = $GOPD.f; -var dP = $DP.f; -var gOPN = gOPNExt.f; -var $Symbol = global.Symbol; -var $JSON = global.JSON; -var _stringify = $JSON && $JSON.stringify; -var PROTOTYPE = 'prototype'; -var HIDDEN = wks('_hidden'); -var TO_PRIMITIVE = wks('toPrimitive'); -var isEnum = {}.propertyIsEnumerable; -var SymbolRegistry = shared('symbol-registry'); -var AllSymbols = shared('symbols'); -var OPSymbols = shared('op-symbols'); -var ObjectProto = Object[PROTOTYPE]; -var USE_NATIVE = typeof $Symbol == 'function'; -var QObject = global.QObject; -// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 -var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; - -// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 -var setSymbolDesc = DESCRIPTORS && $fails(function () { - return _create(dP({}, 'a', { - get: function () { return dP(this, 'a', { value: 7 }).a; } - })).a != 7; -}) ? function (it, key, D) { - var protoDesc = gOPD(ObjectProto, key); - if (protoDesc) delete ObjectProto[key]; - dP(it, key, D); - if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); -} : dP; - -var wrap = function (tag) { - var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); - sym._k = tag; - return sym; -}; - -var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { - return typeof it == 'symbol'; -} : function (it) { - return it instanceof $Symbol; -}; - -var $defineProperty = function defineProperty(it, key, D) { - if (it === ObjectProto) $defineProperty(OPSymbols, key, D); - anObject(it); - key = toPrimitive(key, true); - anObject(D); - if (has(AllSymbols, key)) { - if (!D.enumerable) { - if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); - it[HIDDEN][key] = true; - } else { - if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; - D = _create(D, { enumerable: createDesc(0, false) }); - } return setSymbolDesc(it, key, D); - } return dP(it, key, D); -}; -var $defineProperties = function defineProperties(it, P) { - anObject(it); - var keys = enumKeys(P = toIObject(P)); - var i = 0; - var l = keys.length; - var key; - while (l > i) $defineProperty(it, key = keys[i++], P[key]); - return it; -}; -var $create = function create(it, P) { - return P === undefined ? _create(it) : $defineProperties(_create(it), P); -}; -var $propertyIsEnumerable = function propertyIsEnumerable(key) { - var E = isEnum.call(this, key = toPrimitive(key, true)); - if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; - return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; -}; -var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { - it = toIObject(it); - key = toPrimitive(key, true); - if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; - var D = gOPD(it, key); - if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; - return D; -}; -var $getOwnPropertyNames = function getOwnPropertyNames(it) { - var names = gOPN(toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); - } return result; -}; -var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { - var IS_OP = it === ObjectProto; - var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); - } return result; -}; - -// 19.4.1.1 Symbol([description]) -if (!USE_NATIVE) { - $Symbol = function Symbol() { - if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); - var tag = uid(arguments.length > 0 ? arguments[0] : undefined); - var $set = function (value) { - if (this === ObjectProto) $set.call(OPSymbols, value); - if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; - setSymbolDesc(this, tag, createDesc(1, value)); - }; - if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); - return wrap(tag); - }; - redefine($Symbol[PROTOTYPE], 'toString', function toString() { - return this._k; - }); - - $GOPD.f = $getOwnPropertyDescriptor; - $DP.f = $defineProperty; - __webpack_require__(74).f = gOPNExt.f = $getOwnPropertyNames; - __webpack_require__(48).f = $propertyIsEnumerable; - __webpack_require__(61).f = $getOwnPropertySymbols; - - if (DESCRIPTORS && !__webpack_require__(58)) { - redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); - } - - wksExt.f = function (name) { - return wrap(wks(name)); - }; -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); - -for (var es6Symbols = ( - // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 - 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' -).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); - -for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); - -$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { - // 19.4.2.1 Symbol.for(key) - 'for': function (key) { - return has(SymbolRegistry, key += '') - ? SymbolRegistry[key] - : SymbolRegistry[key] = $Symbol(key); - }, - // 19.4.2.5 Symbol.keyFor(sym) - keyFor: function keyFor(sym) { - if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); - for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; - }, - useSetter: function () { setter = true; }, - useSimple: function () { setter = false; } -}); - -$export($export.S + $export.F * !USE_NATIVE, 'Object', { - // 19.1.2.2 Object.create(O [, Properties]) - create: $create, - // 19.1.2.4 Object.defineProperty(O, P, Attributes) - defineProperty: $defineProperty, - // 19.1.2.3 Object.defineProperties(O, Properties) - defineProperties: $defineProperties, - // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) - getOwnPropertyDescriptor: $getOwnPropertyDescriptor, - // 19.1.2.7 Object.getOwnPropertyNames(O) - getOwnPropertyNames: $getOwnPropertyNames, - // 19.1.2.8 Object.getOwnPropertySymbols(O) - getOwnPropertySymbols: $getOwnPropertySymbols -}); - -// 24.3.2 JSON.stringify(value [, replacer [, space]]) -$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { - var S = $Symbol(); - // MS Edge converts symbol values to JSON as {} - // WebKit converts symbol values to JSON as null - // V8 throws on boxed symbols - return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; -})), 'JSON', { - stringify: function stringify(it) { - if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined - var args = [it]; - var i = 1; - var replacer, $replacer; - while (arguments.length > i) args.push(arguments[i++]); - replacer = args[1]; - if (typeof replacer == 'function') $replacer = replacer; - if ($replacer || !isArray(replacer)) replacer = function (key, value) { - if ($replacer) value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return _stringify.apply($JSON, args); - } -}); - -// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) -$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(29)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); -// 19.4.3.5 Symbol.prototype[@@toStringTag] -setToStringTag($Symbol, 'Symbol'); -// 20.2.1.9 Math[@@toStringTag] -setToStringTag(Math, 'Math', true); -// 24.3.3 JSON[@@toStringTag] -setToStringTag(global.JSON, 'JSON', true); - - -/***/ }), -/* 112 */ -/***/ (function(module, exports, __webpack_require__) { - -exports.f = __webpack_require__(10); - - -/***/ }), -/* 113 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.3.1 Object.assign(target, source) -var $export = __webpack_require__(3); - -$export($export.S + $export.F, 'Object', { assign: __webpack_require__(106) }); - - -/***/ }), -/* 114 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.3.10 Object.is(value1, value2) -var $export = __webpack_require__(3); -$export($export.S, 'Object', { is: __webpack_require__(195) }); - - -/***/ }), -/* 115 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.3.19 Object.setPrototypeOf(O, proto) -var $export = __webpack_require__(3); -$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(102).set }); - - -/***/ }), -/* 116 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(18).f; -var FProto = Function.prototype; -var nameRE = /^\s*function ([^ (]*)/; -var NAME = 'name'; - -// 19.2.4.2 name -NAME in FProto || __webpack_require__(20) && dP(FProto, NAME, { - configurable: true, - get: function () { - try { - return ('' + this).match(nameRE)[1]; - } catch (e) { - return ''; - } - } -}); - - -/***/ }), -/* 117 */ -/***/ (function(module, exports, __webpack_require__) { - -var $export = __webpack_require__(3); -var toIObject = __webpack_require__(25); -var toLength = __webpack_require__(21); - -$export($export.S, 'String', { - // 21.1.2.4 String.raw(callSite, ...substitutions) - raw: function raw(callSite) { - var tpl = toIObject(callSite.raw); - var len = toLength(tpl.length); - var aLen = arguments.length; - var res = []; - var i = 0; - while (len > i) { - res.push(String(tpl[i++])); - if (i < aLen) res.push(String(arguments[i])); - } return res.join(''); - } -}); - - -/***/ }), -/* 118 */ -/***/ (function(module, exports, __webpack_require__) { - -var $export = __webpack_require__(3); -var toAbsoluteIndex = __webpack_require__(53); -var fromCharCode = String.fromCharCode; -var $fromCodePoint = String.fromCodePoint; - -// length should be 1, old FF problem -$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', { - // 21.1.2.2 String.fromCodePoint(...codePoints) - fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars - var res = []; - var aLen = arguments.length; - var i = 0; - var code; - while (aLen > i) { - code = +arguments[i++]; - if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point'); - res.push(code < 0x10000 - ? fromCharCode(code) - : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00) - ); - } return res.join(''); - } -}); - - -/***/ }), -/* 119 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $export = __webpack_require__(3); -var $at = __webpack_require__(196)(false); -$export($export.P, 'String', { - // 21.1.3.3 String.prototype.codePointAt(pos) - codePointAt: function codePointAt(pos) { - return $at(this, pos); - } -}); - - -/***/ }), -/* 120 */ -/***/ (function(module, exports, __webpack_require__) { - -var $export = __webpack_require__(3); - -$export($export.P, 'String', { - // 21.1.3.13 String.prototype.repeat(count) - repeat: __webpack_require__(121) -}); - - -/***/ }), -/* 121 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var toInteger = __webpack_require__(52); -var defined = __webpack_require__(33); - -module.exports = function repeat(count) { - var str = String(defined(this)); - var res = ''; - var n = toInteger(count); - if (n < 0 || n == Infinity) throw RangeError("Count can't be negative"); - for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str; - return res; -}; - - -/***/ }), -/* 122 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// 21.1.3.18 String.prototype.startsWith(searchString [, position ]) - -var $export = __webpack_require__(3); -var toLength = __webpack_require__(21); -var context = __webpack_require__(75); -var STARTS_WITH = 'startsWith'; -var $startsWith = ''[STARTS_WITH]; - -$export($export.P + $export.F * __webpack_require__(76)(STARTS_WITH), 'String', { - startsWith: function startsWith(searchString /* , position = 0 */) { - var that = context(this, searchString, STARTS_WITH); - var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length)); - var search = String(searchString); - return $startsWith - ? $startsWith.call(that, search, index) - : that.slice(index, index + search.length) === search; - } -}); - - -/***/ }), -/* 123 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.2.8 IsRegExp(argument) -var isObject = __webpack_require__(14); -var cof = __webpack_require__(37); -var MATCH = __webpack_require__(10)('match'); -module.exports = function (it) { - var isRegExp; - return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); -}; - - -/***/ }), -/* 124 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition]) - -var $export = __webpack_require__(3); -var toLength = __webpack_require__(21); -var context = __webpack_require__(75); -var ENDS_WITH = 'endsWith'; -var $endsWith = ''[ENDS_WITH]; - -$export($export.P + $export.F * __webpack_require__(76)(ENDS_WITH), 'String', { - endsWith: function endsWith(searchString /* , endPosition = @length */) { - var that = context(this, searchString, ENDS_WITH); - var endPosition = arguments.length > 1 ? arguments[1] : undefined; - var len = toLength(that.length); - var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len); - var search = String(searchString); - return $endsWith - ? $endsWith.call(that, search, end) - : that.slice(end - search.length, end) === search; - } -}); - - -/***/ }), -/* 125 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// 21.1.3.7 String.prototype.includes(searchString, position = 0) - -var $export = __webpack_require__(3); -var context = __webpack_require__(75); -var INCLUDES = 'includes'; - -$export($export.P + $export.F * __webpack_require__(76)(INCLUDES), 'String', { - includes: function includes(searchString /* , position = 0 */) { - return !!~context(this, searchString, INCLUDES) - .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined); - } -}); - - -/***/ }), -/* 126 */ -/***/ (function(module, exports, __webpack_require__) { - -// 21.2.5.3 get RegExp.prototype.flags() -if (__webpack_require__(20) && /./g.flags != 'g') __webpack_require__(18).f(RegExp.prototype, 'flags', { - configurable: true, - get: __webpack_require__(197) -}); - - -/***/ }), -/* 127 */ -/***/ (function(module, exports, __webpack_require__) { - -// @@match logic -__webpack_require__(62)('match', 1, function (defined, MATCH, $match) { - // 21.1.3.11 String.prototype.match(regexp) - return [function match(regexp) { - 'use strict'; - var O = defined(this); - var fn = regexp == undefined ? undefined : regexp[MATCH]; - return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); - }, $match]; -}); - - -/***/ }), -/* 128 */ -/***/ (function(module, exports, __webpack_require__) { - -// @@replace logic -__webpack_require__(62)('replace', 2, function (defined, REPLACE, $replace) { - // 21.1.3.14 String.prototype.replace(searchValue, replaceValue) - return [function replace(searchValue, replaceValue) { - 'use strict'; - var O = defined(this); - var fn = searchValue == undefined ? undefined : searchValue[REPLACE]; - return fn !== undefined - ? fn.call(searchValue, O, replaceValue) - : $replace.call(String(O), searchValue, replaceValue); - }, $replace]; -}); - - -/***/ }), -/* 129 */ -/***/ (function(module, exports, __webpack_require__) { - -// @@split logic -__webpack_require__(62)('split', 2, function (defined, SPLIT, $split) { - 'use strict'; - var isRegExp = __webpack_require__(123); - var _split = $split; - var $push = [].push; - var $SPLIT = 'split'; - var LENGTH = 'length'; - var LAST_INDEX = 'lastIndex'; - if ( - 'abbc'[$SPLIT](/(b)*/)[1] == 'c' || - 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 || - 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 || - '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 || - '.'[$SPLIT](/()()/)[LENGTH] > 1 || - ''[$SPLIT](/.?/)[LENGTH] - ) { - var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group - // based on es5-shim implementation, need to rework it - $split = function (separator, limit) { - var string = String(this); - if (separator === undefined && limit === 0) return []; - // If `separator` is not a regex, use native split - if (!isRegExp(separator)) return _split.call(string, separator, limit); - var output = []; - var flags = (separator.ignoreCase ? 'i' : '') + - (separator.multiline ? 'm' : '') + - (separator.unicode ? 'u' : '') + - (separator.sticky ? 'y' : ''); - var lastLastIndex = 0; - var splitLimit = limit === undefined ? 4294967295 : limit >>> 0; - // Make `global` and avoid `lastIndex` issues by working with a copy - var separatorCopy = new RegExp(separator.source, flags + 'g'); - var separator2, match, lastIndex, lastLength, i; - // Doesn't need flags gy, but they don't hurt - if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags); - while (match = separatorCopy.exec(string)) { - // `separatorCopy.lastIndex` is not reliable cross-browser - lastIndex = match.index + match[0][LENGTH]; - if (lastIndex > lastLastIndex) { - output.push(string.slice(lastLastIndex, match.index)); - // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG - // eslint-disable-next-line no-loop-func - if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () { - for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined; - }); - if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1)); - lastLength = match[0][LENGTH]; - lastLastIndex = lastIndex; - if (output[LENGTH] >= splitLimit) break; - } - if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop - } - if (lastLastIndex === string[LENGTH]) { - if (lastLength || !separatorCopy.test('')) output.push(''); - } else output.push(string.slice(lastLastIndex)); - return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output; - }; - // Chakra, V8 - } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) { - $split = function (separator, limit) { - return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit); - }; - } - // 21.1.3.17 String.prototype.split(separator, limit) - return [function split(separator, limit) { - var O = defined(this); - var fn = separator == undefined ? undefined : separator[SPLIT]; - return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit); - }, $split]; -}); - - -/***/ }), -/* 130 */ -/***/ (function(module, exports, __webpack_require__) { - -// @@search logic -__webpack_require__(62)('search', 1, function (defined, SEARCH, $search) { - // 21.1.3.15 String.prototype.search(regexp) - return [function search(regexp) { - 'use strict'; - var O = defined(this); - var fn = regexp == undefined ? undefined : regexp[SEARCH]; - return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O)); - }, $search]; -}); - - -/***/ }), -/* 131 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var ctx = __webpack_require__(30); -var $export = __webpack_require__(3); -var toObject = __webpack_require__(38); -var call = __webpack_require__(95); -var isArrayIter = __webpack_require__(96); -var toLength = __webpack_require__(21); -var createProperty = __webpack_require__(77); -var getIterFn = __webpack_require__(97); - -$export($export.S + $export.F * !__webpack_require__(71)(function (iter) { Array.from(iter); }), 'Array', { - // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) - from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { - var O = toObject(arrayLike); - var C = typeof this == 'function' ? this : Array; - var aLen = arguments.length; - var mapfn = aLen > 1 ? arguments[1] : undefined; - var mapping = mapfn !== undefined; - var index = 0; - var iterFn = getIterFn(O); - var length, result, step, iterator; - if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); - // if object isn't iterable or it's array with default iterator - use simple case - if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) { - for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) { - createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); - } - } else { - length = toLength(O.length); - for (result = new C(length); length > index; index++) { - createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); - } - } - result.length = index; - return result; - } -}); - - -/***/ }), -/* 132 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $export = __webpack_require__(3); -var createProperty = __webpack_require__(77); - -// WebKit Array.of isn't generic -$export($export.S + $export.F * __webpack_require__(23)(function () { - function F() { /* empty */ } - return !(Array.of.call(F) instanceof F); -}), 'Array', { - // 22.1.2.3 Array.of( ...items) - of: function of(/* ...args */) { - var index = 0; - var aLen = arguments.length; - var result = new (typeof this == 'function' ? this : Array)(aLen); - while (aLen > index) createProperty(result, index, arguments[index++]); - result.length = aLen; - return result; - } -}); - - -/***/ }), -/* 133 */ -/***/ (function(module, exports, __webpack_require__) { - -// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length) -var $export = __webpack_require__(3); - -$export($export.P, 'Array', { copyWithin: __webpack_require__(198) }); - -__webpack_require__(40)('copyWithin'); - - -/***/ }), -/* 134 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined) -var $export = __webpack_require__(3); -var $find = __webpack_require__(60)(5); -var KEY = 'find'; -var forced = true; -// Shouldn't skip holes -if (KEY in []) Array(1)[KEY](function () { forced = false; }); -$export($export.P + $export.F * forced, 'Array', { - find: function find(callbackfn /* , that = undefined */) { - return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } -}); -__webpack_require__(40)(KEY); - - -/***/ }), -/* 135 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined) -var $export = __webpack_require__(3); -var $find = __webpack_require__(60)(6); -var KEY = 'findIndex'; -var forced = true; -// Shouldn't skip holes -if (KEY in []) Array(1)[KEY](function () { forced = false; }); -$export($export.P + $export.F * forced, 'Array', { - findIndex: function findIndex(callbackfn /* , that = undefined */) { - return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } -}); -__webpack_require__(40)(KEY); - - -/***/ }), -/* 136 */ -/***/ (function(module, exports, __webpack_require__) { - -// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) -var $export = __webpack_require__(3); - -$export($export.P, 'Array', { fill: __webpack_require__(199) }); - -__webpack_require__(40)('fill'); - - -/***/ }), -/* 137 */ -/***/ (function(module, exports, __webpack_require__) { - -// 20.1.2.2 Number.isFinite(number) -var $export = __webpack_require__(3); -var _isFinite = __webpack_require__(11).isFinite; - -$export($export.S, 'Number', { - isFinite: function isFinite(it) { - return typeof it == 'number' && _isFinite(it); - } -}); - - -/***/ }), -/* 138 */ -/***/ (function(module, exports, __webpack_require__) { - -// 20.1.2.3 Number.isInteger(number) -var $export = __webpack_require__(3); - -$export($export.S, 'Number', { isInteger: __webpack_require__(139) }); - - -/***/ }), -/* 139 */ -/***/ (function(module, exports, __webpack_require__) { - -// 20.1.2.3 Number.isInteger(number) -var isObject = __webpack_require__(14); -var floor = Math.floor; -module.exports = function isInteger(it) { - return !isObject(it) && isFinite(it) && floor(it) === it; -}; - - -/***/ }), -/* 140 */ -/***/ (function(module, exports, __webpack_require__) { - -// 20.1.2.5 Number.isSafeInteger(number) -var $export = __webpack_require__(3); -var isInteger = __webpack_require__(139); -var abs = Math.abs; - -$export($export.S, 'Number', { - isSafeInteger: function isSafeInteger(number) { - return isInteger(number) && abs(number) <= 0x1fffffffffffff; - } -}); - - -/***/ }), -/* 141 */ -/***/ (function(module, exports, __webpack_require__) { - -// 20.1.2.4 Number.isNaN(number) -var $export = __webpack_require__(3); - -$export($export.S, 'Number', { - isNaN: function isNaN(number) { - // eslint-disable-next-line no-self-compare - return number != number; - } -}); - - -/***/ }), -/* 142 */ -/***/ (function(module, exports, __webpack_require__) { - -// 20.1.2.1 Number.EPSILON -var $export = __webpack_require__(3); - -$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) }); - - -/***/ }), -/* 143 */ -/***/ (function(module, exports, __webpack_require__) { - -// 20.1.2.10 Number.MIN_SAFE_INTEGER -var $export = __webpack_require__(3); - -$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff }); - - -/***/ }), -/* 144 */ -/***/ (function(module, exports, __webpack_require__) { - -// 20.1.2.6 Number.MAX_SAFE_INTEGER -var $export = __webpack_require__(3); - -$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff }); - - -/***/ }), -/* 145 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// https://github.com/tc39/Array.prototype.includes -var $export = __webpack_require__(3); -var $includes = __webpack_require__(93)(true); - -$export($export.P, 'Array', { - includes: function includes(el /* , fromIndex = 0 */) { - return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); - } -}); - -__webpack_require__(40)('includes'); - - -/***/ }), -/* 146 */ -/***/ (function(module, exports, __webpack_require__) { - -// https://github.com/tc39/proposal-object-values-entries -var $export = __webpack_require__(3); -var $values = __webpack_require__(147)(false); - -$export($export.S, 'Object', { - values: function values(it) { - return $values(it); - } -}); - - -/***/ }), -/* 147 */ -/***/ (function(module, exports, __webpack_require__) { - -var getKeys = __webpack_require__(36); -var toIObject = __webpack_require__(25); -var isEnum = __webpack_require__(48).f; -module.exports = function (isEntries) { - return function (it) { - var O = toIObject(it); - var keys = getKeys(O); - var length = keys.length; - var i = 0; - var result = []; - var key; - while (length > i) if (isEnum.call(O, key = keys[i++])) { - result.push(isEntries ? [key, O[key]] : O[key]); - } return result; - }; -}; - - -/***/ }), -/* 148 */ -/***/ (function(module, exports, __webpack_require__) { - -// https://github.com/tc39/proposal-object-values-entries -var $export = __webpack_require__(3); -var $entries = __webpack_require__(147)(true); - -$export($export.S, 'Object', { - entries: function entries(it) { - return $entries(it); - } -}); - - -/***/ }), -/* 149 */ -/***/ (function(module, exports, __webpack_require__) { - -// https://github.com/tc39/proposal-object-getownpropertydescriptors -var $export = __webpack_require__(3); -var ownKeys = __webpack_require__(200); -var toIObject = __webpack_require__(25); -var gOPD = __webpack_require__(72); -var createProperty = __webpack_require__(77); - -$export($export.S, 'Object', { - getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { - var O = toIObject(object); - var getDesc = gOPD.f; - var keys = ownKeys(O); - var result = {}; - var i = 0; - var key, desc; - while (keys.length > i) { - desc = getDesc(O, key = keys[i++]); - if (desc !== undefined) createProperty(result, key, desc); - } - return result; - } -}); - - -/***/ }), -/* 150 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// https://github.com/tc39/proposal-string-pad-start-end -var $export = __webpack_require__(3); -var $pad = __webpack_require__(151); - -$export($export.P, 'String', { - padStart: function padStart(maxLength /* , fillString = ' ' */) { - return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true); - } -}); - - -/***/ }), -/* 151 */ -/***/ (function(module, exports, __webpack_require__) { - -// https://github.com/tc39/proposal-string-pad-start-end -var toLength = __webpack_require__(21); -var repeat = __webpack_require__(121); -var defined = __webpack_require__(33); - -module.exports = function (that, maxLength, fillString, left) { - var S = String(defined(that)); - var stringLength = S.length; - var fillStr = fillString === undefined ? ' ' : String(fillString); - var intMaxLength = toLength(maxLength); - if (intMaxLength <= stringLength || fillStr == '') return S; - var fillLen = intMaxLength - stringLength; - var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length)); - if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen); - return left ? stringFiller + S : S + stringFiller; -}; - - -/***/ }), -/* 152 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// https://github.com/tc39/proposal-string-pad-start-end -var $export = __webpack_require__(3); -var $pad = __webpack_require__(151); - -$export($export.P, 'String', { - padEnd: function padEnd(maxLength /* , fillString = ' ' */) { - return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false); - } -}); - - -/***/ }), -/* 153 */ -/***/ (function(module, exports, __webpack_require__) { - -var $export = __webpack_require__(3); -var $task = __webpack_require__(73); -$export($export.G + $export.B, { - setImmediate: $task.set, - clearImmediate: $task.clear -}); - - -/***/ }), -/* 154 */ -/***/ (function(module, exports, __webpack_require__) { - -var $iterators = __webpack_require__(78); -var getKeys = __webpack_require__(36); -var redefine = __webpack_require__(28); -var global = __webpack_require__(11); -var hide = __webpack_require__(29); -var Iterators = __webpack_require__(45); -var wks = __webpack_require__(10); -var ITERATOR = wks('iterator'); -var TO_STRING_TAG = wks('toStringTag'); -var ArrayValues = Iterators.Array; - -var DOMIterables = { - CSSRuleList: true, // TODO: Not spec compliant, should be false. - CSSStyleDeclaration: false, - CSSValueList: false, - ClientRectList: false, - DOMRectList: false, - DOMStringList: false, - DOMTokenList: true, - DataTransferItemList: false, - FileList: false, - HTMLAllCollection: false, - HTMLCollection: false, - HTMLFormElement: false, - HTMLSelectElement: false, - MediaList: true, // TODO: Not spec compliant, should be false. - MimeTypeArray: false, - NamedNodeMap: false, - NodeList: true, - PaintRequestList: false, - Plugin: false, - PluginArray: false, - SVGLengthList: false, - SVGNumberList: false, - SVGPathSegList: false, - SVGPointList: false, - SVGStringList: false, - SVGTransformList: false, - SourceBufferList: false, - StyleSheetList: true, // TODO: Not spec compliant, should be false. - TextTrackCueList: false, - TextTrackList: false, - TouchList: false -}; - -for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) { - var NAME = collections[i]; - var explicit = DOMIterables[NAME]; - var Collection = global[NAME]; - var proto = Collection && Collection.prototype; - var key; - if (proto) { - if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues); - if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = ArrayValues; - if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true); - } -} - - -/***/ }), -/* 155 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var privatePool = new WeakMap(); - -/** - * Calculates indexes of columns to render OR columns that are visible. - * To redo the calculation, you need to create a new calculator. - * - * @class ViewportColumnsCalculator - */ - -var ViewportColumnsCalculator = function () { - _createClass(ViewportColumnsCalculator, null, [{ - key: 'DEFAULT_WIDTH', - - /** - * Default column width - * - * @type {Number} - */ - get: function get() { - return 50; - } - - /** - * @param {Number} viewportWidth Width of the viewport - * @param {Number} scrollOffset Current horizontal scroll position of the viewport - * @param {Number} totalColumns Total number of rows - * @param {Function} columnWidthFn Function that returns the width of the column at a given index (in px) - * @param {Function} overrideFn Function that changes calculated this.startRow, this.endRow (used by MergeCells plugin) - * @param {Boolean} onlyFullyVisible if `true`, only startRow and endRow will be indexes of rows that are fully in viewport - * @param {Boolean} stretchH - * @param {Function} [stretchingColumnWidthFn] Function that returns the new width of the stretched column. - */ - - }]); - - function ViewportColumnsCalculator(viewportWidth, scrollOffset, totalColumns, columnWidthFn, overrideFn, onlyFullyVisible, stretchH) { - var stretchingColumnWidthFn = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : function (width) { - return width; - }; - - _classCallCheck(this, ViewportColumnsCalculator); - - privatePool.set(this, { - viewportWidth: viewportWidth, - scrollOffset: scrollOffset, - totalColumns: totalColumns, - columnWidthFn: columnWidthFn, - overrideFn: overrideFn, - onlyFullyVisible: onlyFullyVisible, - stretchingColumnWidthFn: stretchingColumnWidthFn - }); - - /** - * Number of rendered/visible columns - * - * @type {Number} - */ - this.count = 0; - - /** - * Index of the first rendered/visible column (can be overwritten using overrideFn) - * - * @type {Number|null} - */ - this.startColumn = null; - - /** - * Index of the last rendered/visible column (can be overwritten using overrideFn) - * - * @type {null} - */ - this.endColumn = null; - - /** - * Position of the first rendered/visible column (in px) - * - * @type {Number|null} - */ - this.startPosition = null; - - this.stretchAllRatio = 0; - this.stretchLastWidth = 0; - this.stretch = stretchH; - this.totalTargetWidth = 0; - this.needVerifyLastColumnWidth = true; - this.stretchAllColumnsWidth = []; - - this.calculate(); - } - - /** - * Calculates viewport - */ - - - _createClass(ViewportColumnsCalculator, [{ - key: 'calculate', - value: function calculate() { - var sum = 0; - var needReverse = true; - var startPositions = []; - var columnWidth = void 0; - - var priv = privatePool.get(this); - var onlyFullyVisible = priv.onlyFullyVisible; - var overrideFn = priv.overrideFn; - var scrollOffset = priv.scrollOffset; - var totalColumns = priv.totalColumns; - var viewportWidth = priv.viewportWidth; - - for (var i = 0; i < totalColumns; i++) { - columnWidth = this._getColumnWidth(i); - - if (sum <= scrollOffset && !onlyFullyVisible) { - this.startColumn = i; - } - - // +1 pixel for row header width compensation for horizontal scroll > 0 - var compensatedViewportWidth = scrollOffset > 0 ? viewportWidth + 1 : viewportWidth; - - if (sum >= scrollOffset && sum + columnWidth <= scrollOffset + compensatedViewportWidth) { - if (this.startColumn == null) { - this.startColumn = i; - } - this.endColumn = i; - } - startPositions.push(sum); - sum += columnWidth; - - if (!onlyFullyVisible) { - this.endColumn = i; - } - if (sum >= scrollOffset + viewportWidth) { - needReverse = false; - break; - } - } - - if (this.endColumn === totalColumns - 1 && needReverse) { - this.startColumn = this.endColumn; - - while (this.startColumn > 0) { - var viewportSum = startPositions[this.endColumn] + columnWidth - startPositions[this.startColumn - 1]; - - if (viewportSum <= viewportWidth || !onlyFullyVisible) { - this.startColumn--; - } - if (viewportSum > viewportWidth) { - break; - } - } - } - - if (this.startColumn !== null && overrideFn) { - overrideFn(this); - } - this.startPosition = startPositions[this.startColumn]; - - if (this.startPosition == void 0) { - this.startPosition = null; - } - if (this.startColumn !== null) { - this.count = this.endColumn - this.startColumn + 1; - } - } - - /** - * Recalculate columns stretching. - * - * @param {Number} totalWidth - */ - - }, { - key: 'refreshStretching', - value: function refreshStretching(totalWidth) { - if (this.stretch === 'none') { - return; - } - this.totalTargetWidth = totalWidth; - - var priv = privatePool.get(this); - var totalColumns = priv.totalColumns; - var sumAll = 0; - - for (var i = 0; i < totalColumns; i++) { - var columnWidth = this._getColumnWidth(i); - var permanentColumnWidth = priv.stretchingColumnWidthFn(void 0, i); - - if (typeof permanentColumnWidth === 'number') { - totalWidth -= permanentColumnWidth; - } else { - sumAll += columnWidth; - } - } - var remainingSize = totalWidth - sumAll; - - if (this.stretch === 'all' && remainingSize > 0) { - this.stretchAllRatio = totalWidth / sumAll; - this.stretchAllColumnsWidth = []; - this.needVerifyLastColumnWidth = true; - } else if (this.stretch === 'last' && totalWidth !== Infinity) { - var _columnWidth = this._getColumnWidth(totalColumns - 1); - var lastColumnWidth = remainingSize + _columnWidth; - - this.stretchLastWidth = lastColumnWidth >= 0 ? lastColumnWidth : _columnWidth; - } - } - - /** - * Get stretched column width based on stretchH (all or last) setting passed in handsontable instance. - * - * @param {Number} column - * @param {Number} baseWidth - * @returns {Number|null} - */ - - }, { - key: 'getStretchedColumnWidth', - value: function getStretchedColumnWidth(column, baseWidth) { - var result = null; - - if (this.stretch === 'all' && this.stretchAllRatio !== 0) { - result = this._getStretchedAllColumnWidth(column, baseWidth); - } else if (this.stretch === 'last' && this.stretchLastWidth !== 0) { - result = this._getStretchedLastColumnWidth(column); - } - - return result; - } - - /** - * @param {Number} column - * @param {Number} baseWidth - * @returns {Number} - * @private - */ - - }, { - key: '_getStretchedAllColumnWidth', - value: function _getStretchedAllColumnWidth(column, baseWidth) { - var sumRatioWidth = 0; - var priv = privatePool.get(this); - var totalColumns = priv.totalColumns; - - if (!this.stretchAllColumnsWidth[column]) { - var stretchedWidth = Math.round(baseWidth * this.stretchAllRatio); - var newStretchedWidth = priv.stretchingColumnWidthFn(stretchedWidth, column); - - if (newStretchedWidth === void 0) { - this.stretchAllColumnsWidth[column] = stretchedWidth; - } else { - this.stretchAllColumnsWidth[column] = isNaN(newStretchedWidth) ? this._getColumnWidth(column) : newStretchedWidth; - } - } - - if (this.stretchAllColumnsWidth.length === totalColumns && this.needVerifyLastColumnWidth) { - this.needVerifyLastColumnWidth = false; - - for (var i = 0; i < this.stretchAllColumnsWidth.length; i++) { - sumRatioWidth += this.stretchAllColumnsWidth[i]; - } - if (sumRatioWidth !== this.totalTargetWidth) { - this.stretchAllColumnsWidth[this.stretchAllColumnsWidth.length - 1] += this.totalTargetWidth - sumRatioWidth; - } - } - - return this.stretchAllColumnsWidth[column]; - } - - /** - * @param {Number} column - * @returns {Number|null} - * @private - */ - - }, { - key: '_getStretchedLastColumnWidth', - value: function _getStretchedLastColumnWidth(column) { - var priv = privatePool.get(this); - var totalColumns = priv.totalColumns; - - if (column === totalColumns - 1) { - return this.stretchLastWidth; - } - - return null; - } - - /** - * @param {Number} column Column index. - * @returns {Number} - * @private - */ - - }, { - key: '_getColumnWidth', - value: function _getColumnWidth(column) { - var width = privatePool.get(this).columnWidthFn(column); - - if (width === void 0) { - width = ViewportColumnsCalculator.DEFAULT_WIDTH; - } - - return width; - } - }]); - - return ViewportColumnsCalculator; -}(); - -exports.default = ViewportColumnsCalculator; - -/***/ }), -/* 156 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var privatePool = new WeakMap(); - -/** - * Calculates indexes of rows to render OR rows that are visible. - * To redo the calculation, you need to create a new calculator. - * - * @class ViewportRowsCalculator - */ - -var ViewportRowsCalculator = function () { - _createClass(ViewportRowsCalculator, null, [{ - key: "DEFAULT_HEIGHT", - - /** - * Default row height - * - * @type {Number} - */ - get: function get() { - return 23; - } - - /** - * @param {Number} viewportHeight Height of the viewport - * @param {Number} scrollOffset Current vertical scroll position of the viewport - * @param {Number} totalRows Total number of rows - * @param {Function} rowHeightFn Function that returns the height of the row at a given index (in px) - * @param {Function} overrideFn Function that changes calculated this.startRow, this.endRow (used by MergeCells plugin) - * @param {Boolean} onlyFullyVisible if `true`, only startRow and endRow will be indexes of rows that are fully in viewport - * @param {Number} horizontalScrollbarHeight - */ - - }]); - - function ViewportRowsCalculator(viewportHeight, scrollOffset, totalRows, rowHeightFn, overrideFn, onlyFullyVisible, horizontalScrollbarHeight) { - _classCallCheck(this, ViewportRowsCalculator); - - privatePool.set(this, { - viewportHeight: viewportHeight, - scrollOffset: scrollOffset, - totalRows: totalRows, - rowHeightFn: rowHeightFn, - overrideFn: overrideFn, - onlyFullyVisible: onlyFullyVisible, - horizontalScrollbarHeight: horizontalScrollbarHeight - }); - - /** - * Number of rendered/visible rows - * - * @type {Number} - */ - this.count = 0; - - /** - * Index of the first rendered/visible row (can be overwritten using overrideFn) - * - * @type {Number|null} - */ - this.startRow = null; - - /** - * Index of the last rendered/visible row (can be overwritten using overrideFn) - * - * @type {null} - */ - this.endRow = null; - - /** - * Position of the first rendered/visible row (in px) - * - * @type {Number|null} - */ - this.startPosition = null; - - this.calculate(); - } - - /** - * Calculates viewport - */ - - - _createClass(ViewportRowsCalculator, [{ - key: "calculate", - value: function calculate() { - var sum = 0; - var needReverse = true; - var startPositions = []; - - var priv = privatePool.get(this); - var onlyFullyVisible = priv.onlyFullyVisible; - var overrideFn = priv.overrideFn; - var rowHeightFn = priv.rowHeightFn; - var scrollOffset = priv.scrollOffset; - var totalRows = priv.totalRows; - var viewportHeight = priv.viewportHeight; - var horizontalScrollbarHeight = priv.horizontalScrollbarHeight || 0; - var rowHeight = void 0; - - // Calculate the number (start and end index) of rows needed - for (var i = 0; i < totalRows; i++) { - rowHeight = rowHeightFn(i); - - if (rowHeight === undefined) { - rowHeight = ViewportRowsCalculator.DEFAULT_HEIGHT; - } - if (sum <= scrollOffset && !onlyFullyVisible) { - this.startRow = i; - } - - // the row is within the "visible range" - if (sum >= scrollOffset && sum + rowHeight <= scrollOffset + viewportHeight - horizontalScrollbarHeight) { - if (this.startRow === null) { - this.startRow = i; - } - this.endRow = i; - } - startPositions.push(sum); - sum += rowHeight; - - if (!onlyFullyVisible) { - this.endRow = i; - } - if (sum >= scrollOffset + viewportHeight - horizontalScrollbarHeight) { - needReverse = false; - break; - } - } - - // If the estimation has reached the last row and there is still some space available in the viewport, - // we need to render in reverse in order to fill the whole viewport with rows - if (this.endRow === totalRows - 1 && needReverse) { - this.startRow = this.endRow; - - while (this.startRow > 0) { - // rowHeight is the height of the last row - var viewportSum = startPositions[this.endRow] + rowHeight - startPositions[this.startRow - 1]; - - if (viewportSum <= viewportHeight - horizontalScrollbarHeight || !onlyFullyVisible) { - this.startRow--; - } - if (viewportSum >= viewportHeight - horizontalScrollbarHeight) { - break; - } - } - } - - if (this.startRow !== null && overrideFn) { - overrideFn(this); - } - this.startPosition = startPositions[this.startRow]; - - if (this.startPosition == void 0) { - this.startPosition = null; - } - if (this.startRow !== null) { - this.count = this.endRow - this.startRow + 1; - } - } - }]); - - return ViewportRowsCalculator; -}(); - -exports.default = ViewportRowsCalculator; - -/***/ }), -/* 157 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class ColumnFilter - */ -var ColumnFilter = function () { - /** - * @param {Number} offset - * @param {Number} total - * @param {Number} countTH - */ - function ColumnFilter(offset, total, countTH) { - _classCallCheck(this, ColumnFilter); - - this.offset = offset; - this.total = total; - this.countTH = countTH; - } - - /** - * @param index - * @returns {Number} - */ - - - _createClass(ColumnFilter, [{ - key: "offsetted", - value: function offsetted(index) { - return index + this.offset; - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "unOffsetted", - value: function unOffsetted(index) { - return index - this.offset; - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "renderedToSource", - value: function renderedToSource(index) { - return this.offsetted(index); - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "sourceToRendered", - value: function sourceToRendered(index) { - return this.unOffsetted(index); - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "offsettedTH", - value: function offsettedTH(index) { - return index - this.countTH; - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "unOffsettedTH", - value: function unOffsettedTH(index) { - return index + this.countTH; - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "visibleRowHeadedColumnToSourceColumn", - value: function visibleRowHeadedColumnToSourceColumn(index) { - return this.renderedToSource(this.offsettedTH(index)); - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "sourceColumnToVisibleRowHeadedColumn", - value: function sourceColumnToVisibleRowHeadedColumn(index) { - return this.unOffsettedTH(this.sourceToRendered(index)); - } - }]); - - return ColumnFilter; -}(); - -exports.default = ColumnFilter; - -/***/ }), -/* 158 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class RowFilter - */ -var RowFilter = function () { - /** - * @param {Number} offset - * @param {Number} total - * @param {Number} countTH - */ - function RowFilter(offset, total, countTH) { - _classCallCheck(this, RowFilter); - - this.offset = offset; - this.total = total; - this.countTH = countTH; - } - - /** - * @param index - * @returns {Number} - */ - - - _createClass(RowFilter, [{ - key: "offsetted", - value: function offsetted(index) { - return index + this.offset; - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "unOffsetted", - value: function unOffsetted(index) { - return index - this.offset; - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "renderedToSource", - value: function renderedToSource(index) { - return this.offsetted(index); - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "sourceToRendered", - value: function sourceToRendered(index) { - return this.unOffsetted(index); - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "offsettedTH", - value: function offsettedTH(index) { - return index - this.countTH; - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "unOffsettedTH", - value: function unOffsettedTH(index) { - return index + this.countTH; - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "visibleColHeadedRowToSourceRow", - value: function visibleColHeadedRowToSourceRow(index) { - return this.renderedToSource(this.offsettedTH(index)); - } - - /** - * @param index - * @returns {Number} - */ - - }, { - key: "sourceRowToVisibleColHeadedRow", - value: function sourceRowToVisibleColHeadedRow(index) { - return this.unOffsettedTH(this.sourceToRendered(index)); - } - }]); - - return RowFilter; -}(); - -exports.default = RowFilter; - -/***/ }), -/* 159 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _object = __webpack_require__(1); - -var _string = __webpack_require__(32); - -var _event = __webpack_require__(160); - -var _event2 = _interopRequireDefault(_event); - -var _overlays = __webpack_require__(161); - -var _overlays2 = _interopRequireDefault(_overlays); - -var _scroll = __webpack_require__(162); - -var _scroll2 = _interopRequireDefault(_scroll); - -var _settings = __webpack_require__(163); - -var _settings2 = _interopRequireDefault(_settings); - -var _table = __webpack_require__(164); - -var _table2 = _interopRequireDefault(_table); - -var _viewport = __webpack_require__(166); - -var _viewport2 = _interopRequireDefault(_viewport); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class Walkontable - */ -var Walkontable = function () { - /** - * @param {Object} settings - */ - function Walkontable(settings) { - _classCallCheck(this, Walkontable); - - var originalHeaders = []; - - // this is the namespace for global events - this.guid = 'wt_' + (0, _string.randomString)(); - - // bootstrap from settings - if (settings.cloneSource) { - this.cloneSource = settings.cloneSource; - this.cloneOverlay = settings.cloneOverlay; - this.wtSettings = settings.cloneSource.wtSettings; - this.wtTable = new _table2.default(this, settings.table, settings.wtRootElement); - this.wtScroll = new _scroll2.default(this); - this.wtViewport = settings.cloneSource.wtViewport; - this.wtEvent = new _event2.default(this); - this.selections = this.cloneSource.selections; - } else { - this.wtSettings = new _settings2.default(this, settings); - this.wtTable = new _table2.default(this, settings.table); - this.wtScroll = new _scroll2.default(this); - this.wtViewport = new _viewport2.default(this); - this.wtEvent = new _event2.default(this); - this.selections = this.getSetting('selections'); - this.wtOverlays = new _overlays2.default(this); - this.exportSettingsAsClassNames(); - } - - // find original headers - if (this.wtTable.THEAD.childNodes.length && this.wtTable.THEAD.childNodes[0].childNodes.length) { - for (var c = 0, clen = this.wtTable.THEAD.childNodes[0].childNodes.length; c < clen; c++) { - originalHeaders.push(this.wtTable.THEAD.childNodes[0].childNodes[c].innerHTML); - } - if (!this.getSetting('columnHeaders').length) { - this.update('columnHeaders', [function (column, TH) { - (0, _element.fastInnerText)(TH, originalHeaders[column]); - }]); - } - } - this.drawn = false; - this.drawInterrupted = false; - } - - /** - * Force rerender of Walkontable - * - * @param {Boolean} [fastDraw=false] When `true`, try to refresh only the positions of borders without rerendering - * the data. It will only work if Table.draw() does not force - * rendering anyway - * @returns {Walkontable} - */ - - - _createClass(Walkontable, [{ - key: 'draw', - value: function draw() { - var fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - this.drawInterrupted = false; - - if (!fastDraw && !(0, _element.isVisible)(this.wtTable.TABLE)) { - // draw interrupted because TABLE is not visible - this.drawInterrupted = true; - } else { - this.wtTable.draw(fastDraw); - } - - return this; - } - - /** - * Returns the TD at coords. If topmost is set to true, returns TD from the topmost overlay layer, - * if not set or set to false, returns TD from the master table. - * - * @param {CellCoords} coords - * @param {Boolean} [topmost=false] - * @returns {Object} - */ - - }, { - key: 'getCell', - value: function getCell(coords) { - var topmost = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (!topmost) { - return this.wtTable.getCell(coords); - } - - var totalRows = this.wtSettings.getSetting('totalRows'); - var fixedRowsTop = this.wtSettings.getSetting('fixedRowsTop'); - var fixedRowsBottom = this.wtSettings.getSetting('fixedRowsBottom'); - var fixedColumns = this.wtSettings.getSetting('fixedColumnsLeft'); - - if (coords.row < fixedRowsTop && coords.col < fixedColumns) { - return this.wtOverlays.topLeftCornerOverlay.clone.wtTable.getCell(coords); - } else if (coords.row < fixedRowsTop) { - return this.wtOverlays.topOverlay.clone.wtTable.getCell(coords); - } else if (coords.col < fixedColumns && coords.row >= totalRows - fixedRowsBottom) { - if (this.wtOverlays.bottomLeftCornerOverlay && this.wtOverlays.bottomLeftCornerOverlay.clone) { - return this.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.getCell(coords); - } - } else if (coords.col < fixedColumns) { - return this.wtOverlays.leftOverlay.clone.wtTable.getCell(coords); - } else if (coords.row < totalRows && coords.row > totalRows - fixedRowsBottom) { - if (this.wtOverlays.bottomOverlay && this.wtOverlays.bottomOverlay.clone) { - return this.wtOverlays.bottomOverlay.clone.wtTable.getCell(coords); - } - } - - return this.wtTable.getCell(coords); - } - - /** - * @param {Object} settings - * @param {*} value - * @returns {Walkontable} - */ - - }, { - key: 'update', - value: function update(settings, value) { - return this.wtSettings.update(settings, value); - } - - /** - * Scroll the viewport to a row at the given index in the data source - * - * @param {Number} row - * @returns {Walkontable} - */ - - }, { - key: 'scrollVertical', - value: function scrollVertical(row) { - this.wtOverlays.topOverlay.scrollTo(row); - this.getSetting('onScrollVertically'); - - return this; - } - - /** - * Scroll the viewport to a column at the given index in the data source - * - * @param {Number} column - * @returns {Walkontable} - */ - - }, { - key: 'scrollHorizontal', - value: function scrollHorizontal(column) { - this.wtOverlays.leftOverlay.scrollTo(column); - this.getSetting('onScrollHorizontally'); - - return this; - } - - /** - * Scrolls the viewport to a cell (rerenders if needed) - * - * @param {CellCoords} coords - * @returns {Walkontable} - */ - - }, { - key: 'scrollViewport', - value: function scrollViewport(coords) { - this.wtScroll.scrollViewport(coords); - - return this; - } - - /** - * @returns {Array} - */ - - }, { - key: 'getViewport', - value: function getViewport() { - return [this.wtTable.getFirstVisibleRow(), this.wtTable.getFirstVisibleColumn(), this.wtTable.getLastVisibleRow(), this.wtTable.getLastVisibleColumn()]; - } - - /** - * Get overlay name - * - * @returns {String} - */ - - }, { - key: 'getOverlayName', - value: function getOverlayName() { - return this.cloneOverlay ? this.cloneOverlay.type : 'master'; - } - - /** - * Check overlay type of this Walkontable instance. - * - * @param {String} name Clone type @see {Overlay.CLONE_TYPES}. - * @returns {Boolean} - */ - - }, { - key: 'isOverlayName', - value: function isOverlayName(name) { - if (this.cloneOverlay) { - return this.cloneOverlay.type === name; - } - - return false; - } - - /** - * Export settings as class names added to the parent element of the table. - */ - - }, { - key: 'exportSettingsAsClassNames', - value: function exportSettingsAsClassNames() { - var _this = this; - - var toExport = { - rowHeaders: ['array'], - columnHeaders: ['array'] - }; - var allClassNames = []; - var newClassNames = []; - - (0, _object.objectEach)(toExport, function (optionType, key) { - if (optionType.indexOf('array') > -1 && _this.getSetting(key).length) { - newClassNames.push('ht' + (0, _string.toUpperCaseFirst)(key)); - } - allClassNames.push('ht' + (0, _string.toUpperCaseFirst)(key)); - }); - (0, _element.removeClass)(this.wtTable.wtRootElement.parentNode, allClassNames); - (0, _element.addClass)(this.wtTable.wtRootElement.parentNode, newClassNames); - } - - /** - * Get/Set Walkontable instance setting - * - * @param {String} key - * @param {*} [param1] - * @param {*} [param2] - * @param {*} [param3] - * @param {*} [param4] - * @returns {*} - */ - - }, { - key: 'getSetting', - value: function getSetting(key, param1, param2, param3, param4) { - // this is faster than .apply - https://github.com/handsontable/handsontable/wiki/JavaScript-&-DOM-performance-tips - return this.wtSettings.getSetting(key, param1, param2, param3, param4); - } - - /** - * Checks if setting exists - * - * @param {String} key - * @returns {Boolean} - */ - - }, { - key: 'hasSetting', - value: function hasSetting(key) { - return this.wtSettings.has(key); - } - - /** - * Destroy instance - */ - - }, { - key: 'destroy', - value: function destroy() { - this.wtOverlays.destroy(); - this.wtEvent.destroy(); - } - }]); - - return Walkontable; -}(); - -exports.default = Walkontable; - -/***/ }), -/* 160 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _element = __webpack_require__(0); - -var _function = __webpack_require__(35); - -var _browser = __webpack_require__(26); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * - */ -function Event(instance) { - var that = this; - var eventManager = new _eventManager2.default(instance); - - this.instance = instance; - - var dblClickOrigin = [null, null]; - this.dblClickTimeout = [null, null]; - - var onMouseDown = function onMouseDown(event) { - var activeElement = document.activeElement; - var getParentNode = (0, _function.partial)(_element.getParent, event.realTarget); - var realTarget = event.realTarget; - - // ignore focusable element from mouse down processing (https://github.com/handsontable/handsontable/issues/3555) - if (realTarget === activeElement || getParentNode(0) === activeElement || getParentNode(1) === activeElement) { - return; - } - - var cell = that.parentCell(realTarget); - - if ((0, _element.hasClass)(realTarget, 'corner')) { - that.instance.getSetting('onCellCornerMouseDown', event, realTarget); - } else if (cell.TD) { - if (that.instance.hasSetting('onCellMouseDown')) { - that.instance.getSetting('onCellMouseDown', event, cell.coords, cell.TD, that.instance); - } - } - - if (event.button !== 2) { - // if not right mouse button - if (cell.TD) { - dblClickOrigin[0] = cell.TD; - clearTimeout(that.dblClickTimeout[0]); - that.dblClickTimeout[0] = setTimeout(function () { - dblClickOrigin[0] = null; - }, 1000); - } - } - }; - - var onTouchMove = function onTouchMove(event) { - that.instance.touchMoving = true; - }; - - var longTouchTimeout; - - var onTouchStart = function onTouchStart(event) { - var container = this; - - eventManager.addEventListener(this, 'touchmove', onTouchMove); - - // Prevent cell selection when scrolling with touch event - not the best solution performance-wise - that.checkIfTouchMove = setTimeout(function () { - if (that.instance.touchMoving === true) { - that.instance.touchMoving = void 0; - - eventManager.removeEventListener('touchmove', onTouchMove, false); - } - - onMouseDown(event); - }, 30); - }; - - var onMouseOver = function onMouseOver(event) { - var table, td, mainWOT; - - if (that.instance.hasSetting('onCellMouseOver')) { - table = that.instance.wtTable.TABLE; - td = (0, _element.closestDown)(event.realTarget, ['TD', 'TH'], table); - mainWOT = that.instance.cloneSource || that.instance; - - if (td && td !== mainWOT.lastMouseOver && (0, _element.isChildOf)(td, table)) { - mainWOT.lastMouseOver = td; - - that.instance.getSetting('onCellMouseOver', event, that.instance.wtTable.getCoords(td), td, that.instance); - } - } - }; - - var onMouseOut = function onMouseOut(event) { - var table = void 0; - var lastTD = void 0; - var nextTD = void 0; - - if (that.instance.hasSetting('onCellMouseOut')) { - table = that.instance.wtTable.TABLE; - lastTD = (0, _element.closestDown)(event.realTarget, ['TD', 'TH'], table); - nextTD = (0, _element.closestDown)(event.relatedTarget, ['TD', 'TH'], table); - - if (lastTD && lastTD !== nextTD && (0, _element.isChildOf)(lastTD, table)) { - that.instance.getSetting('onCellMouseOut', event, that.instance.wtTable.getCoords(lastTD), lastTD, that.instance); - } - } - }; - - var onMouseUp = function onMouseUp(event) { - if (event.button !== 2) { - // if not right mouse button - var cell = that.parentCell(event.realTarget); - - if (cell.TD === dblClickOrigin[0] && cell.TD === dblClickOrigin[1]) { - if ((0, _element.hasClass)(event.realTarget, 'corner')) { - that.instance.getSetting('onCellCornerDblClick', event, cell.coords, cell.TD, that.instance); - } else { - that.instance.getSetting('onCellDblClick', event, cell.coords, cell.TD, that.instance); - } - - dblClickOrigin[0] = null; - dblClickOrigin[1] = null; - } else if (cell.TD === dblClickOrigin[0]) { - that.instance.getSetting('onCellMouseUp', event, cell.coords, cell.TD, that.instance); - - dblClickOrigin[1] = cell.TD; - clearTimeout(that.dblClickTimeout[1]); - that.dblClickTimeout[1] = setTimeout(function () { - dblClickOrigin[1] = null; - }, 500); - } else if (cell.TD && that.instance.hasSetting('onCellMouseUp')) { - that.instance.getSetting('onCellMouseUp', event, cell.coords, cell.TD, that.instance); - } - } - }; - - var onTouchEnd = function onTouchEnd(event) { - clearTimeout(longTouchTimeout); - // that.instance.longTouch == void 0; - - event.preventDefault(); - onMouseUp(event); - - // eventManager.removeEventListener(that.instance.wtTable.holder, "mouseup", onMouseUp); - }; - - eventManager.addEventListener(this.instance.wtTable.holder, 'mousedown', onMouseDown); - eventManager.addEventListener(this.instance.wtTable.TABLE, 'mouseover', onMouseOver); - eventManager.addEventListener(this.instance.wtTable.TABLE, 'mouseout', onMouseOut); - eventManager.addEventListener(this.instance.wtTable.holder, 'mouseup', onMouseUp); - - // check if full HOT instance, or detached WOT AND run on mobile device - if (this.instance.wtTable.holder.parentNode.parentNode && (0, _browser.isMobileBrowser)() && !that.instance.wtTable.isWorkingOnClone()) { - var classSelector = '.' + this.instance.wtTable.holder.parentNode.className.split(' ').join('.'); - - eventManager.addEventListener(this.instance.wtTable.holder, 'touchstart', function (event) { - that.instance.touchApplied = true; - if ((0, _element.isChildOf)(event.target, classSelector)) { - onTouchStart.call(event.target, event); - } - }); - eventManager.addEventListener(this.instance.wtTable.holder, 'touchend', function (event) { - that.instance.touchApplied = false; - if ((0, _element.isChildOf)(event.target, classSelector)) { - onTouchEnd.call(event.target, event); - } - }); - - if (!that.instance.momentumScrolling) { - that.instance.momentumScrolling = {}; - } - eventManager.addEventListener(this.instance.wtTable.holder, 'scroll', function (event) { - clearTimeout(that.instance.momentumScrolling._timeout); - - if (!that.instance.momentumScrolling.ongoing) { - that.instance.getSetting('onBeforeTouchScroll'); - } - that.instance.momentumScrolling.ongoing = true; - - that.instance.momentumScrolling._timeout = setTimeout(function () { - if (!that.instance.touchApplied) { - that.instance.momentumScrolling.ongoing = false; - - that.instance.getSetting('onAfterMomentumScroll'); - } - }, 200); - }); - } - - eventManager.addEventListener(window, 'resize', function () { - if (that.instance.getSetting('stretchH') !== 'none') { - that.instance.draw(); - } - }); - - this.destroy = function () { - clearTimeout(this.dblClickTimeout[0]); - clearTimeout(this.dblClickTimeout[1]); - - eventManager.destroy(); - }; -} - -Event.prototype.parentCell = function (elem) { - var cell = {}; - var TABLE = this.instance.wtTable.TABLE; - var TD = (0, _element.closestDown)(elem, ['TD', 'TH'], TABLE); - - if (TD) { - cell.coords = this.instance.wtTable.getCoords(TD); - cell.TD = TD; - } else if ((0, _element.hasClass)(elem, 'wtBorder') && (0, _element.hasClass)(elem, 'current')) { - cell.coords = this.instance.selections.current.cellRange.highlight; // selections.current is current selected cell - cell.TD = this.instance.wtTable.getCell(cell.coords); - } else if ((0, _element.hasClass)(elem, 'wtBorder') && (0, _element.hasClass)(elem, 'area')) { - if (this.instance.selections.area.cellRange) { - cell.coords = this.instance.selections.area.cellRange.to; // selections.area is area selected cells - cell.TD = this.instance.wtTable.getCell(cell.coords); - } - } - - return cell; -}; - -exports.default = Event; - -/***/ }), -/* 161 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _array = __webpack_require__(2); - -var _unicode = __webpack_require__(17); - -var _browser = __webpack_require__(26); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _base = __webpack_require__(31); - -var _base2 = _interopRequireDefault(_base); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class Overlays - */ -var Overlays = function () { - /** - * @param {Walkontable} wotInstance - */ - function Overlays(wotInstance) { - _classCallCheck(this, Overlays); - - this.wot = wotInstance; - - // legacy support - this.instance = this.wot; - this.eventManager = new _eventManager2.default(this.wot); - - this.wot.update('scrollbarWidth', (0, _element.getScrollbarWidth)()); - this.wot.update('scrollbarHeight', (0, _element.getScrollbarWidth)()); - - this.scrollableElement = (0, _element.getScrollableElement)(this.wot.wtTable.TABLE); - - this.prepareOverlays(); - - this.destroyed = false; - this.keyPressed = false; - this.spreaderLastSize = { - width: null, - height: null - }; - this.overlayScrollPositions = { - master: { - top: 0, - left: 0 - }, - top: { - top: null, - left: 0 - }, - bottom: { - top: null, - left: 0 - }, - left: { - top: 0, - left: null - } - }; - - this.pendingScrollCallbacks = { - master: { - top: 0, - left: 0 - }, - top: { - left: 0 - }, - bottom: { - left: 0 - }, - left: { - top: 0 - } - }; - - this.verticalScrolling = false; - this.horizontalScrolling = false; - this.delegatedScrollCallback = false; - - this.registeredListeners = []; - - this.registerListeners(); - } - - /** - * Prepare overlays based on user settings. - * - * @returns {Boolean} Returns `true` if changes applied to overlay needs scroll synchronization. - */ - - - _createClass(Overlays, [{ - key: 'prepareOverlays', - value: function prepareOverlays() { - var syncScroll = false; - - if (this.topOverlay) { - syncScroll = this.topOverlay.updateStateOfRendering() || syncScroll; - } else { - this.topOverlay = _base2.default.createOverlay(_base2.default.CLONE_TOP, this.wot); - } - - if (!_base2.default.hasOverlay(_base2.default.CLONE_BOTTOM)) { - this.bottomOverlay = { - needFullRender: false, - updateStateOfRendering: function updateStateOfRendering() { - return false; - } - }; - } - if (!_base2.default.hasOverlay(_base2.default.CLONE_BOTTOM_LEFT_CORNER)) { - this.bottomLeftCornerOverlay = { - needFullRender: false, - updateStateOfRendering: function updateStateOfRendering() { - return false; - } - }; - } - - if (this.bottomOverlay) { - syncScroll = this.bottomOverlay.updateStateOfRendering() || syncScroll; - } else { - this.bottomOverlay = _base2.default.createOverlay(_base2.default.CLONE_BOTTOM, this.wot); - } - - if (this.leftOverlay) { - syncScroll = this.leftOverlay.updateStateOfRendering() || syncScroll; - } else { - this.leftOverlay = _base2.default.createOverlay(_base2.default.CLONE_LEFT, this.wot); - } - - if (this.topOverlay.needFullRender && this.leftOverlay.needFullRender) { - if (this.topLeftCornerOverlay) { - syncScroll = this.topLeftCornerOverlay.updateStateOfRendering() || syncScroll; - } else { - this.topLeftCornerOverlay = _base2.default.createOverlay(_base2.default.CLONE_TOP_LEFT_CORNER, this.wot); - } - } - - if (this.bottomOverlay.needFullRender && this.leftOverlay.needFullRender) { - if (this.bottomLeftCornerOverlay) { - syncScroll = this.bottomLeftCornerOverlay.updateStateOfRendering() || syncScroll; - } else { - this.bottomLeftCornerOverlay = _base2.default.createOverlay(_base2.default.CLONE_BOTTOM_LEFT_CORNER, this.wot); - } - } - - if (this.wot.getSetting('debug') && !this.debug) { - this.debug = _base2.default.createOverlay(_base2.default.CLONE_DEBUG, this.wot); - } - - return syncScroll; - } - - /** - * Refresh and redraw table - */ - - }, { - key: 'refreshAll', - value: function refreshAll() { - if (!this.wot.drawn) { - return; - } - if (!this.wot.wtTable.holder.parentNode) { - // Walkontable was detached from DOM, but this handler was not removed - this.destroy(); - - return; - } - this.wot.draw(true); - - if (this.verticalScrolling) { - this.leftOverlay.onScroll(); - } - - if (this.horizontalScrolling) { - this.topOverlay.onScroll(); - } - - this.verticalScrolling = false; - this.horizontalScrolling = false; - } - - /** - * Register all necessary event listeners. - */ - - }, { - key: 'registerListeners', - value: function registerListeners() { - var _this = this; - - var topOverlayScrollable = this.topOverlay.mainTableScrollableElement; - var leftOverlayScrollable = this.leftOverlay.mainTableScrollableElement; - - var listenersToRegister = []; - listenersToRegister.push([document.documentElement, 'keydown', function (event) { - return _this.onKeyDown(event); - }]); - listenersToRegister.push([document.documentElement, 'keyup', function () { - return _this.onKeyUp(); - }]); - listenersToRegister.push([document, 'visibilitychange', function () { - return _this.onKeyUp(); - }]); - listenersToRegister.push([topOverlayScrollable, 'scroll', function (event) { - return _this.onTableScroll(event); - }]); - - if (topOverlayScrollable !== leftOverlayScrollable) { - listenersToRegister.push([leftOverlayScrollable, 'scroll', function (event) { - return _this.onTableScroll(event); - }]); - } - - if (this.topOverlay.needFullRender) { - listenersToRegister.push([this.topOverlay.clone.wtTable.holder, 'scroll', function (event) { - return _this.onTableScroll(event); - }]); - listenersToRegister.push([this.topOverlay.clone.wtTable.holder, 'wheel', function (event) { - return _this.onTableScroll(event); - }]); - } - - if (this.bottomOverlay.needFullRender) { - listenersToRegister.push([this.bottomOverlay.clone.wtTable.holder, 'scroll', function (event) { - return _this.onTableScroll(event); - }]); - listenersToRegister.push([this.bottomOverlay.clone.wtTable.holder, 'wheel', function (event) { - return _this.onTableScroll(event); - }]); - } - - if (this.leftOverlay.needFullRender) { - listenersToRegister.push([this.leftOverlay.clone.wtTable.holder, 'scroll', function (event) { - return _this.onTableScroll(event); - }]); - listenersToRegister.push([this.leftOverlay.clone.wtTable.holder, 'wheel', function (event) { - return _this.onTableScroll(event); - }]); - } - - if (this.topLeftCornerOverlay && this.topLeftCornerOverlay.needFullRender) { - listenersToRegister.push([this.topLeftCornerOverlay.clone.wtTable.holder, 'wheel', function (event) { - return _this.onTableScroll(event); - }]); - } - - if (this.bottomLeftCornerOverlay && this.bottomLeftCornerOverlay.needFullRender) { - listenersToRegister.push([this.bottomLeftCornerOverlay.clone.wtTable.holder, 'wheel', function (event) { - return _this.onTableScroll(event); - }]); - } - - if (this.topOverlay.trimmingContainer !== window && this.leftOverlay.trimmingContainer !== window) { - // This is necessary? - // eventManager.addEventListener(window, 'scroll', (event) => this.refreshAll(event)); - listenersToRegister.push([window, 'wheel', function (event) { - var overlay = void 0; - var deltaY = event.wheelDeltaY || event.deltaY; - var deltaX = event.wheelDeltaX || event.deltaX; - - if (_this.topOverlay.clone.wtTable.holder.contains(event.realTarget)) { - overlay = 'top'; - } else if (_this.bottomOverlay.clone && _this.bottomOverlay.clone.wtTable.holder.contains(event.realTarget)) { - overlay = 'bottom'; - } else if (_this.leftOverlay.clone.wtTable.holder.contains(event.realTarget)) { - overlay = 'left'; - } else if (_this.topLeftCornerOverlay && _this.topLeftCornerOverlay.clone && _this.topLeftCornerOverlay.clone.wtTable.holder.contains(event.realTarget)) { - overlay = 'topLeft'; - } else if (_this.bottomLeftCornerOverlay && _this.bottomLeftCornerOverlay.clone && _this.bottomLeftCornerOverlay.clone.wtTable.holder.contains(event.realTarget)) { - overlay = 'bottomLeft'; - } - - if (overlay == 'top' && deltaY !== 0 || overlay == 'left' && deltaX !== 0 || overlay == 'bottom' && deltaY !== 0 || (overlay === 'topLeft' || overlay === 'bottomLeft') && (deltaY !== 0 || deltaX !== 0)) { - - event.preventDefault(); - } - }]); - } - - while (listenersToRegister.length) { - var listener = listenersToRegister.pop(); - this.eventManager.addEventListener(listener[0], listener[1], listener[2]); - - this.registeredListeners.push(listener); - } - } - - /** - * Deregister all previously registered listeners. - */ - - }, { - key: 'deregisterListeners', - value: function deregisterListeners() { - while (this.registeredListeners.length) { - var listener = this.registeredListeners.pop(); - this.eventManager.removeEventListener(listener[0], listener[1], listener[2]); - } - } - - /** - * Scroll listener - * - * @param {Event} event - */ - - }, { - key: 'onTableScroll', - value: function onTableScroll(event) { - // if mobile browser, do not update scroll positions, as the overlays are hidden during the scroll - if ((0, _browser.isMobileBrowser)()) { - return; - } - var masterHorizontal = this.leftOverlay.mainTableScrollableElement; - var masterVertical = this.topOverlay.mainTableScrollableElement; - var target = event.target; - - // For key press, sync only master -> overlay position because while pressing Walkontable.render is triggered - // by hot.refreshBorder - if (this.keyPressed) { - if (masterVertical !== window && target !== window && !event.target.contains(masterVertical) || masterHorizontal !== window && target !== window && !event.target.contains(masterHorizontal)) { - return; - } - } - - if (event.type === 'scroll') { - this.syncScrollPositions(event); - } else { - this.translateMouseWheelToScroll(event); - } - } - - /** - * Key down listener - */ - - }, { - key: 'onKeyDown', - value: function onKeyDown(event) { - this.keyPressed = (0, _unicode.isKey)(event.keyCode, 'ARROW_UP|ARROW_RIGHT|ARROW_DOWN|ARROW_LEFT'); - } - - /** - * Key up listener - */ - - }, { - key: 'onKeyUp', - value: function onKeyUp() { - this.keyPressed = false; - } - - /** - * Translate wheel event into scroll event and sync scroll overlays position - * - * @private - * @param {Event} event - * @returns {Boolean} - */ - - }, { - key: 'translateMouseWheelToScroll', - value: function translateMouseWheelToScroll(event) { - var topOverlay = this.topOverlay.clone.wtTable.holder; - var bottomOverlay = this.bottomOverlay.clone ? this.bottomOverlay.clone.wtTable.holder : null; - var leftOverlay = this.leftOverlay.clone.wtTable.holder; - var topLeftCornerOverlay = this.topLeftCornerOverlay && this.topLeftCornerOverlay.clone ? this.topLeftCornerOverlay.clone.wtTable.holder : null; - var bottomLeftCornerOverlay = this.bottomLeftCornerOverlay && this.bottomLeftCornerOverlay.clone ? this.bottomLeftCornerOverlay.clone.wtTable.holder : null; - var mouseWheelSpeedRatio = -0.2; - var deltaY = event.wheelDeltaY || -1 * event.deltaY; - var deltaX = event.wheelDeltaX || -1 * event.deltaX; - var parentHolder = null; - var eventMockup = { type: 'wheel' }; - var tempElem = event.target; - var delta = null; - - // Fix for extremely slow header scrolling with a mousewheel on Firefox - if (event.deltaMode === 1) { - deltaY *= 120; - deltaX *= 120; - } - - while (tempElem != document && tempElem != null) { - if (tempElem.className.indexOf('wtHolder') > -1) { - parentHolder = tempElem; - break; - } - tempElem = tempElem.parentNode; - } - eventMockup.target = parentHolder; - - if (parentHolder === topLeftCornerOverlay || parentHolder === bottomLeftCornerOverlay) { - this.syncScrollPositions(eventMockup, mouseWheelSpeedRatio * deltaX, 'x'); - this.syncScrollPositions(eventMockup, mouseWheelSpeedRatio * deltaY, 'y'); - } else { - if (parentHolder === topOverlay || parentHolder === bottomOverlay) { - delta = deltaY; - } else if (parentHolder === leftOverlay) { - delta = deltaX; - } - - this.syncScrollPositions(eventMockup, mouseWheelSpeedRatio * delta); - } - - return false; - } - - /** - * Synchronize scroll position between master table and overlay table. - * - * @private - * @param {Event|Object} event - * @param {Number} [fakeScrollValue=null] - * @param {String} [fakeScrollDirection=null] `x` or `y`. - */ - - }, { - key: 'syncScrollPositions', - value: function syncScrollPositions(event) { - var fakeScrollValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - var fakeScrollDirection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - - if (this.destroyed) { - return; - } - if (arguments.length === 0) { - this.syncScrollWithMaster(); - - return; - } - var masterHorizontal = this.leftOverlay.mainTableScrollableElement; - var masterVertical = this.topOverlay.mainTableScrollableElement; - var target = event.target; - var tempScrollValue = 0; - var scrollValueChanged = false; - var topOverlay = void 0; - var leftOverlay = void 0; - var topLeftCornerOverlay = void 0; - var bottomLeftCornerOverlay = void 0; - var bottomOverlay = void 0; - var delegatedScroll = false; - var preventOverflow = this.wot.getSetting('preventOverflow'); - - if (this.topOverlay.needFullRender) { - topOverlay = this.topOverlay.clone.wtTable.holder; - } - - if (this.bottomOverlay.needFullRender) { - bottomOverlay = this.bottomOverlay.clone.wtTable.holder; - } - - if (this.leftOverlay.needFullRender) { - leftOverlay = this.leftOverlay.clone.wtTable.holder; - } - - if (this.leftOverlay.needFullRender && this.topOverlay.needFullRender) { - topLeftCornerOverlay = this.topLeftCornerOverlay.clone.wtTable.holder; - } - - if (this.leftOverlay.needFullRender && this.bottomOverlay.needFullRender) { - bottomLeftCornerOverlay = this.bottomLeftCornerOverlay.clone.wtTable.holder; - } - - if (target === document) { - target = window; - } - - if (target === masterHorizontal || target === masterVertical) { - if (preventOverflow) { - tempScrollValue = (0, _element.getScrollLeft)(this.scrollableElement); - } else { - tempScrollValue = (0, _element.getScrollLeft)(target); - } - - // if scrolling the master table - populate the scroll values to both top and left overlays - this.horizontalScrolling = true; - this.overlayScrollPositions.master.left = tempScrollValue; - scrollValueChanged = true; - - if (this.pendingScrollCallbacks.master.left > 0) { - this.pendingScrollCallbacks.master.left--; - } else { - if (topOverlay && topOverlay.scrollLeft !== tempScrollValue) { - - if (fakeScrollValue == null) { - this.pendingScrollCallbacks.top.left++; - } - - topOverlay.scrollLeft = tempScrollValue; - delegatedScroll = masterHorizontal !== window; - } - - if (bottomOverlay && bottomOverlay.scrollLeft !== tempScrollValue) { - - if (fakeScrollValue == null) { - this.pendingScrollCallbacks.bottom.left++; - } - - bottomOverlay.scrollLeft = tempScrollValue; - delegatedScroll = masterHorizontal !== window; - } - } - - tempScrollValue = (0, _element.getScrollTop)(target); - - this.verticalScrolling = true; - this.overlayScrollPositions.master.top = tempScrollValue; - scrollValueChanged = true; - - if (this.pendingScrollCallbacks.master.top > 0) { - this.pendingScrollCallbacks.master.top--; - } else if (leftOverlay && leftOverlay.scrollTop !== tempScrollValue) { - if (fakeScrollValue == null) { - this.pendingScrollCallbacks.left.top++; - } - - leftOverlay.scrollTop = tempScrollValue; - delegatedScroll = masterVertical !== window; - } - } else if (target === bottomOverlay) { - tempScrollValue = (0, _element.getScrollLeft)(target); - - // if scrolling the bottom overlay - populate the horizontal scroll to the master table - this.horizontalScrolling = true; - this.overlayScrollPositions.bottom.left = tempScrollValue; - scrollValueChanged = true; - - if (this.pendingScrollCallbacks.bottom.left > 0) { - this.pendingScrollCallbacks.bottom.left--; - } else { - if (fakeScrollValue == null) { - this.pendingScrollCallbacks.master.left++; - } - - masterHorizontal.scrollLeft = tempScrollValue; - - if (topOverlay && topOverlay.scrollLeft !== tempScrollValue) { - if (fakeScrollValue == null) { - this.pendingScrollCallbacks.top.left++; - } - - topOverlay.scrollLeft = tempScrollValue; - delegatedScroll = masterVertical !== window; - } - } - - // "fake" scroll value calculated from the mousewheel event - if (fakeScrollValue !== null) { - scrollValueChanged = true; - masterVertical.scrollTop += fakeScrollValue; - } - } else if (target === topOverlay) { - tempScrollValue = (0, _element.getScrollLeft)(target); - - // if scrolling the top overlay - populate the horizontal scroll to the master table - this.horizontalScrolling = true; - this.overlayScrollPositions.top.left = tempScrollValue; - scrollValueChanged = true; - - if (this.pendingScrollCallbacks.top.left > 0) { - this.pendingScrollCallbacks.top.left--; - } else { - - if (fakeScrollValue == null) { - this.pendingScrollCallbacks.master.left++; - } - - masterHorizontal.scrollLeft = tempScrollValue; - } - - // "fake" scroll value calculated from the mousewheel event - if (fakeScrollValue !== null) { - scrollValueChanged = true; - masterVertical.scrollTop += fakeScrollValue; - } - - if (bottomOverlay && bottomOverlay.scrollLeft !== tempScrollValue) { - if (fakeScrollValue == null) { - this.pendingScrollCallbacks.bottom.left++; - } - - bottomOverlay.scrollLeft = tempScrollValue; - delegatedScroll = masterVertical !== window; - } - } else if (target === leftOverlay) { - tempScrollValue = (0, _element.getScrollTop)(target); - - // if scrolling the left overlay - populate the vertical scroll to the master table - if (this.overlayScrollPositions.left.top !== tempScrollValue) { - this.verticalScrolling = true; - this.overlayScrollPositions.left.top = tempScrollValue; - scrollValueChanged = true; - - if (this.pendingScrollCallbacks.left.top > 0) { - this.pendingScrollCallbacks.left.top--; - } else { - if (fakeScrollValue == null) { - this.pendingScrollCallbacks.master.top++; - } - - masterVertical.scrollTop = tempScrollValue; - } - } - - // "fake" scroll value calculated from the mousewheel event - if (fakeScrollValue !== null) { - scrollValueChanged = true; - masterVertical.scrollLeft += fakeScrollValue; - } - } else if (target === topLeftCornerOverlay || target === bottomLeftCornerOverlay) { - if (fakeScrollValue !== null) { - scrollValueChanged = true; - - if (fakeScrollDirection === 'x') { - masterVertical.scrollLeft += fakeScrollValue; - } else if (fakeScrollDirection === 'y') { - masterVertical.scrollTop += fakeScrollValue; - } - } - } - - if (!this.keyPressed && scrollValueChanged && event.type === 'scroll') { - if (this.delegatedScrollCallback) { - this.delegatedScrollCallback = false; - } else { - this.refreshAll(); - } - - if (delegatedScroll) { - this.delegatedScrollCallback = true; - } - } - } - - /** - * Synchronize overlay scrollbars with the master scrollbar - */ - - }, { - key: 'syncScrollWithMaster', - value: function syncScrollWithMaster() { - var master = this.topOverlay.mainTableScrollableElement; - var scrollLeft = master.scrollLeft, - scrollTop = master.scrollTop; - - - if (this.topOverlay.needFullRender) { - this.topOverlay.clone.wtTable.holder.scrollLeft = scrollLeft; - } - if (this.bottomOverlay.needFullRender) { - this.bottomOverlay.clone.wtTable.holder.scrollLeft = scrollLeft; - } - if (this.leftOverlay.needFullRender) { - this.leftOverlay.clone.wtTable.holder.scrollTop = scrollTop; - } - } - - /** - * Update the main scrollable elements for all the overlays. - */ - - }, { - key: 'updateMainScrollableElements', - value: function updateMainScrollableElements() { - this.deregisterListeners(); - - this.leftOverlay.updateMainScrollableElement(); - this.topOverlay.updateMainScrollableElement(); - - if (this.bottomOverlay.needFullRender) { - this.bottomOverlay.updateMainScrollableElement(); - } - - this.scrollableElement = (0, _element.getScrollableElement)(this.wot.wtTable.TABLE); - - this.registerListeners(); - } - - /** - * - */ - - }, { - key: 'destroy', - value: function destroy() { - this.eventManager.destroy(); - this.topOverlay.destroy(); - - if (this.bottomOverlay.clone) { - this.bottomOverlay.destroy(); - } - this.leftOverlay.destroy(); - - if (this.topLeftCornerOverlay) { - this.topLeftCornerOverlay.destroy(); - } - - if (this.bottomLeftCornerOverlay && this.bottomLeftCornerOverlay.clone) { - this.bottomLeftCornerOverlay.destroy(); - } - - if (this.debug) { - this.debug.destroy(); - } - this.destroyed = true; - } - - /** - * @param {Boolean} [fastDraw=false] - */ - - }, { - key: 'refresh', - value: function refresh() { - var fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (this.topOverlay.areElementSizesAdjusted && this.leftOverlay.areElementSizesAdjusted) { - var container = this.wot.wtTable.wtRootElement.parentNode || this.wot.wtTable.wtRootElement; - var width = container.clientWidth; - var height = container.clientHeight; - - if (width !== this.spreaderLastSize.width || height !== this.spreaderLastSize.height) { - this.spreaderLastSize.width = width; - this.spreaderLastSize.height = height; - this.adjustElementsSize(); - } - } - - if (this.bottomOverlay.clone) { - this.bottomOverlay.refresh(fastDraw); - } - - this.leftOverlay.refresh(fastDraw); - this.topOverlay.refresh(fastDraw); - - if (this.topLeftCornerOverlay) { - this.topLeftCornerOverlay.refresh(fastDraw); - } - - if (this.bottomLeftCornerOverlay && this.bottomLeftCornerOverlay.clone) { - this.bottomLeftCornerOverlay.refresh(fastDraw); - } - - if (this.debug) { - this.debug.refresh(fastDraw); - } - } - - /** - * Adjust overlays elements size and master table size - * - * @param {Boolean} [force=false] - */ - - }, { - key: 'adjustElementsSize', - value: function adjustElementsSize() { - var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - var totalColumns = this.wot.getSetting('totalColumns'); - var totalRows = this.wot.getSetting('totalRows'); - var headerRowSize = this.wot.wtViewport.getRowHeaderWidth(); - var headerColumnSize = this.wot.wtViewport.getColumnHeaderHeight(); - var hiderStyle = this.wot.wtTable.hider.style; - - hiderStyle.width = headerRowSize + this.leftOverlay.sumCellSizes(0, totalColumns) + 'px'; - hiderStyle.height = headerColumnSize + this.topOverlay.sumCellSizes(0, totalRows) + 1 + 'px'; - - this.topOverlay.adjustElementsSize(force); - this.leftOverlay.adjustElementsSize(force); - - if (this.bottomOverlay.clone) { - this.bottomOverlay.adjustElementsSize(force); - } - } - - /** - * - */ - - }, { - key: 'applyToDOM', - value: function applyToDOM() { - if (!this.topOverlay.areElementSizesAdjusted || !this.leftOverlay.areElementSizesAdjusted) { - this.adjustElementsSize(); - } - this.topOverlay.applyToDOM(); - - if (this.bottomOverlay.clone) { - this.bottomOverlay.applyToDOM(); - } - - this.leftOverlay.applyToDOM(); - } - - /** - * Get the parent overlay of the provided element. - * - * @param {HTMLElement} element - * @returns {Object|null} - */ - - }, { - key: 'getParentOverlay', - value: function getParentOverlay(element) { - if (!element) { - return null; - } - - var overlays = [this.topOverlay, this.leftOverlay, this.bottomOverlay, this.topLeftCornerOverlay, this.bottomLeftCornerOverlay]; - var result = null; - - (0, _array.arrayEach)(overlays, function (elem, i) { - if (!elem) { - return; - } - - if (elem.clone && elem.clone.wtTable.TABLE.contains(element)) { - result = elem.clone; - } - }); - - return result; - } - }]); - - return Overlays; -}(); - -exports.default = Overlays; - -/***/ }), -/* 162 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _number = __webpack_require__(6); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class Scroll - */ -var Scroll = function () { - /** - * @param {Walkontable} wotInstance - */ - function Scroll(wotInstance) { - _classCallCheck(this, Scroll); - - this.wot = wotInstance; - - // legacy support - this.instance = wotInstance; - } - - /** - * Scrolls viewport to a cell by minimum number of cells - * - * @param {CellCoords} coords - */ - - - _createClass(Scroll, [{ - key: 'scrollViewport', - value: function scrollViewport(coords) { - if (!this.wot.drawn) { - return; - } - - var _getVariables2 = this._getVariables(), - topOverlay = _getVariables2.topOverlay, - leftOverlay = _getVariables2.leftOverlay, - totalRows = _getVariables2.totalRows, - totalColumns = _getVariables2.totalColumns, - fixedRowsTop = _getVariables2.fixedRowsTop, - fixedRowsBottom = _getVariables2.fixedRowsBottom, - fixedColumnsLeft = _getVariables2.fixedColumnsLeft; - - if (coords.row < 0 || coords.row > Math.max(totalRows - 1, 0)) { - throw new Error('row ' + coords.row + ' does not exist'); - } - - if (coords.col < 0 || coords.col > Math.max(totalColumns - 1, 0)) { - throw new Error('column ' + coords.col + ' does not exist'); - } - - if (coords.row >= fixedRowsTop && coords.row < this.getFirstVisibleRow()) { - topOverlay.scrollTo(coords.row); - } else if (coords.row > this.getLastVisibleRow() && coords.row < totalRows - fixedRowsBottom) { - topOverlay.scrollTo(coords.row, true); - } - - if (coords.col >= fixedColumnsLeft && coords.col < this.getFirstVisibleColumn()) { - leftOverlay.scrollTo(coords.col); - } else if (coords.col > this.getLastVisibleColumn()) { - leftOverlay.scrollTo(coords.col, true); - } - } - - /** - * Get first visible row based on virtual dom and how table is visible in browser window viewport. - * - * @returns {Number} - */ - - }, { - key: 'getFirstVisibleRow', - value: function getFirstVisibleRow() { - var _getVariables3 = this._getVariables(), - topOverlay = _getVariables3.topOverlay, - wtTable = _getVariables3.wtTable, - wtViewport = _getVariables3.wtViewport, - totalRows = _getVariables3.totalRows, - fixedRowsTop = _getVariables3.fixedRowsTop; - - var firstVisibleRow = wtTable.getFirstVisibleRow(); - - if (topOverlay.mainTableScrollableElement === window) { - var rootElementOffset = (0, _element.offset)(wtTable.wtRootElement); - var totalTableHeight = (0, _element.innerHeight)(wtTable.hider); - var windowHeight = (0, _element.innerHeight)(window); - var windowScrollTop = (0, _element.getScrollTop)(window); - - // Only calculate firstVisibleRow when table didn't filled (from up) whole viewport space - if (rootElementOffset.top + totalTableHeight - windowHeight <= windowScrollTop) { - var rowsHeight = wtViewport.getColumnHeaderHeight(); - - rowsHeight += topOverlay.sumCellSizes(0, fixedRowsTop); - - (0, _number.rangeEachReverse)(totalRows, 1, function (row) { - rowsHeight += topOverlay.sumCellSizes(row - 1, row); - - if (rootElementOffset.top + totalTableHeight - rowsHeight <= windowScrollTop) { - // Return physical row + 1 - firstVisibleRow = row; - - return false; - } - }); - } - } - - return firstVisibleRow; - } - - /** - * Get last visible row based on virtual dom and how table is visible in browser window viewport. - * - * @returns {Number} - */ - - }, { - key: 'getLastVisibleRow', - value: function getLastVisibleRow() { - var _getVariables4 = this._getVariables(), - topOverlay = _getVariables4.topOverlay, - wtTable = _getVariables4.wtTable, - wtViewport = _getVariables4.wtViewport, - totalRows = _getVariables4.totalRows; - - var lastVisibleRow = wtTable.getLastVisibleRow(); - - if (topOverlay.mainTableScrollableElement === window) { - var rootElementOffset = (0, _element.offset)(wtTable.wtRootElement); - var windowHeight = (0, _element.innerHeight)(window); - var windowScrollTop = (0, _element.getScrollTop)(window); - - // Only calculate lastVisibleRow when table didn't filled (from bottom) whole viewport space - if (rootElementOffset.top > windowScrollTop) { - var rowsHeight = wtViewport.getColumnHeaderHeight(); - - (0, _number.rangeEach)(1, totalRows, function (row) { - rowsHeight += topOverlay.sumCellSizes(row - 1, row); - - if (rootElementOffset.top + rowsHeight - windowScrollTop >= windowHeight) { - // Return physical row - 1 (-2 because rangeEach gives row index + 1 - sumCellSizes requirements) - lastVisibleRow = row - 2; - - return false; - } - }); - } - } - - return lastVisibleRow; - } - - /** - * Get first visible column based on virtual dom and how table is visible in browser window viewport. - * - * @returns {Number} - */ - - }, { - key: 'getFirstVisibleColumn', - value: function getFirstVisibleColumn() { - var _getVariables5 = this._getVariables(), - leftOverlay = _getVariables5.leftOverlay, - wtTable = _getVariables5.wtTable, - wtViewport = _getVariables5.wtViewport, - totalColumns = _getVariables5.totalColumns, - fixedColumnsLeft = _getVariables5.fixedColumnsLeft; - - var firstVisibleColumn = wtTable.getFirstVisibleColumn(); - - if (leftOverlay.mainTableScrollableElement === window) { - var rootElementOffset = (0, _element.offset)(wtTable.wtRootElement); - var totalTableWidth = (0, _element.innerWidth)(wtTable.hider); - var windowWidth = (0, _element.innerWidth)(window); - var windowScrollLeft = (0, _element.getScrollLeft)(window); - - // Only calculate firstVisibleColumn when table didn't filled (from left) whole viewport space - if (rootElementOffset.left + totalTableWidth - windowWidth <= windowScrollLeft) { - var columnsWidth = wtViewport.getRowHeaderWidth(); - - (0, _number.rangeEachReverse)(totalColumns, 1, function (column) { - columnsWidth += leftOverlay.sumCellSizes(column - 1, column); - - if (rootElementOffset.left + totalTableWidth - columnsWidth <= windowScrollLeft) { - // Return physical column + 1 - firstVisibleColumn = column; - - return false; - } - }); - } - } - - return firstVisibleColumn; - } - - /** - * Get last visible column based on virtual dom and how table is visible in browser window viewport. - * - * @returns {Number} - */ - - }, { - key: 'getLastVisibleColumn', - value: function getLastVisibleColumn() { - var _getVariables6 = this._getVariables(), - leftOverlay = _getVariables6.leftOverlay, - wtTable = _getVariables6.wtTable, - wtViewport = _getVariables6.wtViewport, - totalColumns = _getVariables6.totalColumns; - - var lastVisibleColumn = wtTable.getLastVisibleColumn(); - - if (leftOverlay.mainTableScrollableElement === window) { - var rootElementOffset = (0, _element.offset)(wtTable.wtRootElement); - var windowWidth = (0, _element.innerWidth)(window); - var windowScrollLeft = (0, _element.getScrollLeft)(window); - - // Only calculate lastVisibleColumn when table didn't filled (from right) whole viewport space - if (rootElementOffset.left > windowScrollLeft) { - var columnsWidth = wtViewport.getRowHeaderWidth(); - - (0, _number.rangeEach)(1, totalColumns, function (column) { - columnsWidth += leftOverlay.sumCellSizes(column - 1, column); - - if (rootElementOffset.left + columnsWidth - windowScrollLeft >= windowWidth) { - // Return physical column - 1 (-2 because rangeEach gives column index + 1 - sumCellSizes requirements) - lastVisibleColumn = column - 2; - - return false; - } - }); - } - } - - return lastVisibleColumn; - } - - /** - * Returns collection of variables used to rows and columns visibility calculations. - * - * @returns {Object} - * @private - */ - - }, { - key: '_getVariables', - value: function _getVariables() { - var wot = this.wot; - var topOverlay = wot.wtOverlays.topOverlay; - var leftOverlay = wot.wtOverlays.leftOverlay; - var wtTable = wot.wtTable; - var wtViewport = wot.wtViewport; - var totalRows = wot.getSetting('totalRows'); - var totalColumns = wot.getSetting('totalColumns'); - var fixedRowsTop = wot.getSetting('fixedRowsTop'); - var fixedRowsBottom = wot.getSetting('fixedRowsBottom'); - var fixedColumnsLeft = wot.getSetting('fixedColumnsLeft'); - - return { - topOverlay: topOverlay, - leftOverlay: leftOverlay, - wtTable: wtTable, - wtViewport: wtViewport, - totalRows: totalRows, - totalColumns: totalColumns, - fixedRowsTop: fixedRowsTop, - fixedRowsBottom: fixedRowsBottom, - fixedColumnsLeft: fixedColumnsLeft - }; - } - }]); - - return Scroll; -}(); - -exports.default = Scroll; - -/***/ }), -/* 163 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _object = __webpack_require__(1); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class Settings - */ -var Settings = function () { - /** - * @param {Walkontable} wotInstance - * @param {Object} settings - */ - function Settings(wotInstance, settings) { - var _this = this; - - _classCallCheck(this, Settings); - - this.wot = wotInstance; - - // legacy support - this.instance = wotInstance; - - // default settings. void 0 means it is required, null means it can be empty - this.defaults = { - table: void 0, - debug: false, // shows WalkontableDebugOverlay - - // presentation mode - externalRowCalculator: false, - stretchH: 'none', // values: all, last, none - currentRowClassName: null, - currentColumnClassName: null, - preventOverflow: function preventOverflow() { - return false; - }, - - - // data source - data: void 0, - freezeOverlays: false, - fixedColumnsLeft: 0, - fixedRowsTop: 0, - fixedRowsBottom: 0, - minSpareRows: 0, - - // this must be array of functions: [function (row, TH) {}] - rowHeaders: function rowHeaders() { - return []; - }, - - - // this must be array of functions: [function (column, TH) {}] - columnHeaders: function columnHeaders() { - return []; - }, - - totalRows: void 0, - totalColumns: void 0, - cellRenderer: function cellRenderer(row, column, TD) { - var cellData = _this.getSetting('data', row, column); - - (0, _element.fastInnerText)(TD, cellData === void 0 || cellData === null ? '' : cellData); - }, - - // columnWidth: 50, - columnWidth: function columnWidth(col) { - // return undefined means use default size for the rendered cell content - }, - rowHeight: function rowHeight(row) { - // return undefined means use default size for the rendered cell content - }, - - defaultRowHeight: 23, - defaultColumnWidth: 50, - selections: null, - hideBorderOnMouseDownOver: false, - viewportRowCalculatorOverride: null, - viewportColumnCalculatorOverride: null, - - // callbacks - onCellMouseDown: null, - onCellMouseOver: null, - onCellMouseOut: null, - onCellMouseUp: null, - - // onCellMouseOut: null, - onCellDblClick: null, - onCellCornerMouseDown: null, - onCellCornerDblClick: null, - beforeDraw: null, - onDraw: null, - onBeforeDrawBorders: null, - onScrollVertically: null, - onScrollHorizontally: null, - onBeforeTouchScroll: null, - onAfterMomentumScroll: null, - onBeforeStretchingColumnWidth: function onBeforeStretchingColumnWidth(width) { - return width; - }, - onModifyRowHeaderWidth: null, - - // constants - scrollbarWidth: 10, - scrollbarHeight: 10, - - renderAllRows: false, - groups: false, - rowHeaderWidth: null, - columnHeaderHeight: null, - headerClassName: null - }; - - // reference to settings - this.settings = {}; - - for (var i in this.defaults) { - if ((0, _object.hasOwnProperty)(this.defaults, i)) { - if (settings[i] !== void 0) { - this.settings[i] = settings[i]; - } else if (this.defaults[i] === void 0) { - throw new Error('A required setting "' + i + '" was not provided'); - } else { - this.settings[i] = this.defaults[i]; - } - } - } - } - - /** - * Update settings - * - * @param {Object} settings - * @param {*} value - * @returns {Walkontable} - */ - - - _createClass(Settings, [{ - key: 'update', - value: function update(settings, value) { - if (value === void 0) { - // settings is object - for (var i in settings) { - if ((0, _object.hasOwnProperty)(settings, i)) { - this.settings[i] = settings[i]; - } - } - } else { - // if value is defined then settings is the key - this.settings[settings] = value; - } - return this.wot; - } - - /** - * Get setting by name - * - * @param {String} key - * @param {*} param1 - * @param {*} param2 - * @param {*} param3 - * @param {*} param4 - * @returns {*} - */ - - }, { - key: 'getSetting', - value: function getSetting(key, param1, param2, param3, param4) { - if (typeof this.settings[key] === 'function') { - // this is faster than .apply - https://github.com/handsontable/handsontable/wiki/JavaScript-&-DOM-performance-tips - return this.settings[key](param1, param2, param3, param4); - } else if (param1 !== void 0 && Array.isArray(this.settings[key])) { - // perhaps this can be removed, it is only used in tests - return this.settings[key][param1]; - } - - return this.settings[key]; - } - - /** - * Checks if setting exists - * - * @param {Boolean} key - * @returns {Boolean} - */ - - }, { - key: 'has', - value: function has(key) { - return !!this.settings[key]; - } - }]); - - return Settings; -}(); - -exports.default = Settings; - -/***/ }), -/* 164 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _function = __webpack_require__(35); - -var _coords = __webpack_require__(49); - -var _coords2 = _interopRequireDefault(_coords); - -var _range = __webpack_require__(79); - -var _range2 = _interopRequireDefault(_range); - -var _column = __webpack_require__(157); - -var _column2 = _interopRequireDefault(_column); - -var _row = __webpack_require__(158); - -var _row2 = _interopRequireDefault(_row); - -var _tableRenderer = __webpack_require__(165); - -var _tableRenderer2 = _interopRequireDefault(_tableRenderer); - -var _base = __webpack_require__(31); - -var _base2 = _interopRequireDefault(_base); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * - */ -var Table = function () { - /** - * @param {Walkontable} wotInstance - * @param {HTMLTableElement} table - */ - function Table(wotInstance, table) { - var _this = this; - - _classCallCheck(this, Table); - - this.wot = wotInstance; - - // legacy support - this.instance = this.wot; - this.TABLE = table; - this.TBODY = null; - this.THEAD = null; - this.COLGROUP = null; - this.tableOffset = 0; - this.holderOffset = 0; - - (0, _element.removeTextNodes)(this.TABLE); - - this.spreader = this.createSpreader(this.TABLE); - this.hider = this.createHider(this.spreader); - this.holder = this.createHolder(this.hider); - - this.wtRootElement = this.holder.parentNode; - this.alignOverlaysWithTrimmingContainer(); - this.fixTableDomTree(); - - this.colgroupChildrenLength = this.COLGROUP.childNodes.length; - this.theadChildrenLength = this.THEAD.firstChild ? this.THEAD.firstChild.childNodes.length : 0; - this.tbodyChildrenLength = this.TBODY.childNodes.length; - - this.rowFilter = null; - this.columnFilter = null; - this.correctHeaderWidth = false; - - var origRowHeaderWidth = this.wot.wtSettings.settings.rowHeaderWidth; - - // Fix for jumping row headers (https://github.com/handsontable/handsontable/issues/3850) - this.wot.wtSettings.settings.rowHeaderWidth = function () { - return _this._modifyRowHeaderWidth(origRowHeaderWidth); - }; - } - - /** - * - */ - - - _createClass(Table, [{ - key: 'fixTableDomTree', - value: function fixTableDomTree() { - this.TBODY = this.TABLE.querySelector('tbody'); - - if (!this.TBODY) { - this.TBODY = document.createElement('tbody'); - this.TABLE.appendChild(this.TBODY); - } - this.THEAD = this.TABLE.querySelector('thead'); - - if (!this.THEAD) { - this.THEAD = document.createElement('thead'); - this.TABLE.insertBefore(this.THEAD, this.TBODY); - } - this.COLGROUP = this.TABLE.querySelector('colgroup'); - - if (!this.COLGROUP) { - this.COLGROUP = document.createElement('colgroup'); - this.TABLE.insertBefore(this.COLGROUP, this.THEAD); - } - - if (this.wot.getSetting('columnHeaders').length && !this.THEAD.childNodes.length) { - this.THEAD.appendChild(document.createElement('TR')); - } - } - - /** - * @param table - * @returns {HTMLElement} - */ - - }, { - key: 'createSpreader', - value: function createSpreader(table) { - var parent = table.parentNode; - var spreader = void 0; - - if (!parent || parent.nodeType !== 1 || !(0, _element.hasClass)(parent, 'wtHolder')) { - spreader = document.createElement('div'); - spreader.className = 'wtSpreader'; - - if (parent) { - // if TABLE is detached (e.g. in Jasmine test), it has no parentNode so we cannot attach holder to it - parent.insertBefore(spreader, table); - } - spreader.appendChild(table); - } - spreader.style.position = 'relative'; - - return spreader; - } - - /** - * @param spreader - * @returns {HTMLElement} - */ - - }, { - key: 'createHider', - value: function createHider(spreader) { - var parent = spreader.parentNode; - var hider = void 0; - - if (!parent || parent.nodeType !== 1 || !(0, _element.hasClass)(parent, 'wtHolder')) { - hider = document.createElement('div'); - hider.className = 'wtHider'; - - if (parent) { - // if TABLE is detached (e.g. in Jasmine test), it has no parentNode so we cannot attach holder to it - parent.insertBefore(hider, spreader); - } - hider.appendChild(spreader); - } - - return hider; - } - - /** - * - * @param hider - * @returns {HTMLElement} - */ - - }, { - key: 'createHolder', - value: function createHolder(hider) { - var parent = hider.parentNode; - var holder = void 0; - - if (!parent || parent.nodeType !== 1 || !(0, _element.hasClass)(parent, 'wtHolder')) { - holder = document.createElement('div'); - holder.style.position = 'relative'; - holder.className = 'wtHolder'; - - if (parent) { - // if TABLE is detached (e.g. in Jasmine test), it has no parentNode so we cannot attach holder to it - parent.insertBefore(holder, hider); - } - if (!this.isWorkingOnClone()) { - holder.parentNode.className += 'ht_master handsontable'; - } - holder.appendChild(hider); - } - - return holder; - } - }, { - key: 'alignOverlaysWithTrimmingContainer', - value: function alignOverlaysWithTrimmingContainer() { - var trimmingElement = (0, _element.getTrimmingContainer)(this.wtRootElement); - - if (!this.isWorkingOnClone()) { - this.holder.parentNode.style.position = 'relative'; - - if (trimmingElement === window) { - var preventOverflow = this.wot.getSetting('preventOverflow'); - - if (!preventOverflow) { - this.holder.style.overflow = 'visible'; - this.wtRootElement.style.overflow = 'visible'; - } - } else { - this.holder.style.width = (0, _element.getStyle)(trimmingElement, 'width'); - this.holder.style.height = (0, _element.getStyle)(trimmingElement, 'height'); - this.holder.style.overflow = ''; - } - } - } - }, { - key: 'isWorkingOnClone', - value: function isWorkingOnClone() { - return !!this.wot.cloneSource; - } - - /** - * Redraws the table - * - * @param {Boolean} fastDraw If TRUE, will try to avoid full redraw and only update the border positions. If FALSE or UNDEFINED, will perform a full redraw - * @returns {Table} - */ - - }, { - key: 'draw', - value: function draw(fastDraw) { - var _wot = this.wot, - wtOverlays = _wot.wtOverlays, - wtViewport = _wot.wtViewport; - - var totalRows = this.instance.getSetting('totalRows'); - var rowHeaders = this.wot.getSetting('rowHeaders').length; - var columnHeaders = this.wot.getSetting('columnHeaders').length; - var syncScroll = false; - - if (!this.isWorkingOnClone()) { - this.holderOffset = (0, _element.offset)(this.holder); - fastDraw = wtViewport.createRenderCalculators(fastDraw); - - if (rowHeaders && !this.wot.getSetting('fixedColumnsLeft')) { - var leftScrollPos = wtOverlays.leftOverlay.getScrollPosition(); - var previousState = this.correctHeaderWidth; - - this.correctHeaderWidth = leftScrollPos > 0; - - if (previousState !== this.correctHeaderWidth) { - fastDraw = false; - } - } - } - - if (!this.isWorkingOnClone()) { - syncScroll = wtOverlays.prepareOverlays(); - } - - if (fastDraw) { - if (!this.isWorkingOnClone()) { - // in case we only scrolled without redraw, update visible rows information in oldRowsCalculator - wtViewport.createVisibleCalculators(); - } - if (wtOverlays) { - wtOverlays.refresh(true); - } - } else { - if (this.isWorkingOnClone()) { - this.tableOffset = this.wot.cloneSource.wtTable.tableOffset; - } else { - this.tableOffset = (0, _element.offset)(this.TABLE); - } - var startRow = void 0; - - if (_base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_DEBUG) || _base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_TOP) || _base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_TOP_LEFT_CORNER)) { - startRow = 0; - } else if (_base2.default.isOverlayTypeOf(this.instance.cloneOverlay, _base2.default.CLONE_BOTTOM) || _base2.default.isOverlayTypeOf(this.instance.cloneOverlay, _base2.default.CLONE_BOTTOM_LEFT_CORNER)) { - startRow = Math.max(totalRows - this.wot.getSetting('fixedRowsBottom'), 0); - } else { - startRow = wtViewport.rowsRenderCalculator.startRow; - } - var startColumn = void 0; - - if (_base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_DEBUG) || _base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_LEFT) || _base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_TOP_LEFT_CORNER) || _base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_BOTTOM_LEFT_CORNER)) { - startColumn = 0; - } else { - startColumn = wtViewport.columnsRenderCalculator.startColumn; - } - this.rowFilter = new _row2.default(startRow, totalRows, columnHeaders); - this.columnFilter = new _column2.default(startColumn, this.wot.getSetting('totalColumns'), rowHeaders); - - this.alignOverlaysWithTrimmingContainer(); - this._doDraw(); // creates calculator after draw - } - this.refreshSelections(fastDraw); - - if (!this.isWorkingOnClone()) { - wtOverlays.topOverlay.resetFixedPosition(); - - if (wtOverlays.bottomOverlay.clone) { - wtOverlays.bottomOverlay.resetFixedPosition(); - } - - wtOverlays.leftOverlay.resetFixedPosition(); - - if (wtOverlays.topLeftCornerOverlay) { - wtOverlays.topLeftCornerOverlay.resetFixedPosition(); - } - - if (wtOverlays.bottomLeftCornerOverlay && wtOverlays.bottomLeftCornerOverlay.clone) { - wtOverlays.bottomLeftCornerOverlay.resetFixedPosition(); - } - } - if (syncScroll) { - wtOverlays.syncScrollWithMaster(); - } - this.wot.drawn = true; - - return this; - } - }, { - key: '_doDraw', - value: function _doDraw() { - var wtRenderer = new _tableRenderer2.default(this); - - wtRenderer.render(); - } - }, { - key: 'removeClassFromCells', - value: function removeClassFromCells(className) { - var nodes = this.TABLE.querySelectorAll('.' + className); - - for (var i = 0, len = nodes.length; i < len; i++) { - (0, _element.removeClass)(nodes[i], className); - } - } - }, { - key: 'refreshSelections', - value: function refreshSelections(fastDraw) { - if (!this.wot.selections) { - return; - } - var len = this.wot.selections.length; - - if (fastDraw) { - for (var i = 0; i < len; i++) { - // there was no rerender, so we need to remove classNames by ourselves - if (this.wot.selections[i].settings.className) { - this.removeClassFromCells(this.wot.selections[i].settings.className); - } - if (this.wot.selections[i].settings.highlightHeaderClassName) { - this.removeClassFromCells(this.wot.selections[i].settings.highlightHeaderClassName); - } - if (this.wot.selections[i].settings.highlightRowClassName) { - this.removeClassFromCells(this.wot.selections[i].settings.highlightRowClassName); - } - if (this.wot.selections[i].settings.highlightColumnClassName) { - this.removeClassFromCells(this.wot.selections[i].settings.highlightColumnClassName); - } - } - } - for (var _i = 0; _i < len; _i++) { - this.wot.selections[_i].draw(this.wot, fastDraw); - } - } - - /** - * Get cell element at coords. - * - * @param {CellCoords} coords - * @returns {HTMLElement|Number} HTMLElement on success or Number one of the exit codes on error: - * -1 row before viewport - * -2 row after viewport - */ - - }, { - key: 'getCell', - value: function getCell(coords) { - if (this.isRowBeforeRenderedRows(coords.row)) { - // row before rendered rows - return -1; - } else if (this.isRowAfterRenderedRows(coords.row)) { - // row after rendered rows - return -2; - } - - var TR = this.TBODY.childNodes[this.rowFilter.sourceToRendered(coords.row)]; - - if (TR) { - return TR.childNodes[this.columnFilter.sourceColumnToVisibleRowHeadedColumn(coords.col)]; - } - } - - /** - * getColumnHeader - * - * @param {Number} col Column index - * @param {Number} [level=0] Header level (0 = most distant to the table) - * @returns {Object} HTMLElement on success or undefined on error - */ - - }, { - key: 'getColumnHeader', - value: function getColumnHeader(col) { - var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - - var TR = this.THEAD.childNodes[level]; - - if (TR) { - return TR.childNodes[this.columnFilter.sourceColumnToVisibleRowHeadedColumn(col)]; - } - } - - /** - * getRowHeader - * - * @param {Number} row Row index - * @returns {HTMLElement} HTMLElement on success or Number one of the exit codes on error: `null table doesn't have row headers` - */ - - }, { - key: 'getRowHeader', - value: function getRowHeader(row) { - if (this.columnFilter.sourceColumnToVisibleRowHeadedColumn(0) === 0) { - return null; - } - var TR = this.TBODY.childNodes[this.rowFilter.sourceToRendered(row)]; - - if (TR) { - return TR.childNodes[0]; - } - } - - /** - * Returns cell coords object for a given TD (or a child element of a TD element). - * - * @param {HTMLTableCellElement} TD A cell DOM element (or a child of one). - * @returns {CellCoords|null} The coordinates of the provided TD element (or the closest TD element) or null, if the provided element is not applicable. - */ - - }, { - key: 'getCoords', - value: function getCoords(TD) { - if (TD.nodeName !== 'TD' && TD.nodeName !== 'TH') { - TD = (0, _element.closest)(TD, ['TD', 'TH']); - } - - if (TD === null) { - return null; - } - - var TR = TD.parentNode; - var CONTAINER = TR.parentNode; - var row = (0, _element.index)(TR); - var col = TD.cellIndex; - - if ((0, _element.overlayContainsElement)(_base2.default.CLONE_TOP_LEFT_CORNER, TD) || (0, _element.overlayContainsElement)(_base2.default.CLONE_TOP, TD)) { - if (CONTAINER.nodeName === 'THEAD') { - row -= CONTAINER.childNodes.length; - } - } else if (CONTAINER === this.THEAD) { - row = this.rowFilter.visibleColHeadedRowToSourceRow(row); - } else { - row = this.rowFilter.renderedToSource(row); - } - - if ((0, _element.overlayContainsElement)(_base2.default.CLONE_TOP_LEFT_CORNER, TD) || (0, _element.overlayContainsElement)(_base2.default.CLONE_LEFT, TD)) { - col = this.columnFilter.offsettedTH(col); - } else { - col = this.columnFilter.visibleRowHeadedColumnToSourceColumn(col); - } - - return new _coords2.default(row, col); - } - }, { - key: 'getTrForRow', - value: function getTrForRow(row) { - return this.TBODY.childNodes[this.rowFilter.sourceToRendered(row)]; - } - }, { - key: 'getFirstRenderedRow', - value: function getFirstRenderedRow() { - return this.wot.wtViewport.rowsRenderCalculator.startRow; - } - }, { - key: 'getFirstVisibleRow', - value: function getFirstVisibleRow() { - return this.wot.wtViewport.rowsVisibleCalculator.startRow; - } - }, { - key: 'getFirstRenderedColumn', - value: function getFirstRenderedColumn() { - return this.wot.wtViewport.columnsRenderCalculator.startColumn; - } - - /** - * @returns {Number} Returns -1 if no row is visible - */ - - }, { - key: 'getFirstVisibleColumn', - value: function getFirstVisibleColumn() { - return this.wot.wtViewport.columnsVisibleCalculator.startColumn; - } - - /** - * @returns {Number} Returns -1 if no row is visible - */ - - }, { - key: 'getLastRenderedRow', - value: function getLastRenderedRow() { - return this.wot.wtViewport.rowsRenderCalculator.endRow; - } - }, { - key: 'getLastVisibleRow', - value: function getLastVisibleRow() { - return this.wot.wtViewport.rowsVisibleCalculator.endRow; - } - }, { - key: 'getLastRenderedColumn', - value: function getLastRenderedColumn() { - return this.wot.wtViewport.columnsRenderCalculator.endColumn; - } - - /** - * @returns {Number} Returns -1 if no column is visible - */ - - }, { - key: 'getLastVisibleColumn', - value: function getLastVisibleColumn() { - return this.wot.wtViewport.columnsVisibleCalculator.endColumn; - } - }, { - key: 'isRowBeforeRenderedRows', - value: function isRowBeforeRenderedRows(row) { - return this.rowFilter && this.rowFilter.sourceToRendered(row) < 0 && row >= 0; - } - }, { - key: 'isRowAfterViewport', - value: function isRowAfterViewport(row) { - return this.rowFilter && this.rowFilter.sourceToRendered(row) > this.getLastVisibleRow(); - } - }, { - key: 'isRowAfterRenderedRows', - value: function isRowAfterRenderedRows(row) { - return this.rowFilter && this.rowFilter.sourceToRendered(row) > this.getLastRenderedRow(); - } - }, { - key: 'isColumnBeforeViewport', - value: function isColumnBeforeViewport(column) { - return this.columnFilter && this.columnFilter.sourceToRendered(column) < 0 && column >= 0; - } - }, { - key: 'isColumnAfterViewport', - value: function isColumnAfterViewport(column) { - return this.columnFilter && this.columnFilter.sourceToRendered(column) > this.getLastVisibleColumn(); - } - }, { - key: 'isLastRowFullyVisible', - value: function isLastRowFullyVisible() { - return this.getLastVisibleRow() === this.getLastRenderedRow(); - } - }, { - key: 'isLastColumnFullyVisible', - value: function isLastColumnFullyVisible() { - return this.getLastVisibleColumn() === this.getLastRenderedColumn(); - } - }, { - key: 'getRenderedColumnsCount', - value: function getRenderedColumnsCount() { - var columnsCount = this.wot.wtViewport.columnsRenderCalculator.count; - var totalColumns = this.wot.getSetting('totalColumns'); - - if (this.wot.isOverlayName(_base2.default.CLONE_DEBUG)) { - columnsCount = totalColumns; - } else if (this.wot.isOverlayName(_base2.default.CLONE_LEFT) || this.wot.isOverlayName(_base2.default.CLONE_TOP_LEFT_CORNER) || this.wot.isOverlayName(_base2.default.CLONE_BOTTOM_LEFT_CORNER)) { - return Math.min(this.wot.getSetting('fixedColumnsLeft'), totalColumns); - } - - return columnsCount; - } - }, { - key: 'getRenderedRowsCount', - value: function getRenderedRowsCount() { - var rowsCount = this.wot.wtViewport.rowsRenderCalculator.count; - var totalRows = this.wot.getSetting('totalRows'); - - if (this.wot.isOverlayName(_base2.default.CLONE_DEBUG)) { - rowsCount = totalRows; - } else if (this.wot.isOverlayName(_base2.default.CLONE_TOP) || this.wot.isOverlayName(_base2.default.CLONE_TOP_LEFT_CORNER)) { - rowsCount = Math.min(this.wot.getSetting('fixedRowsTop'), totalRows); - } else if (this.wot.isOverlayName(_base2.default.CLONE_BOTTOM) || this.wot.isOverlayName(_base2.default.CLONE_BOTTOM_LEFT_CORNER)) { - rowsCount = Math.min(this.wot.getSetting('fixedRowsBottom'), totalRows); - } - - return rowsCount; - } - }, { - key: 'getVisibleRowsCount', - value: function getVisibleRowsCount() { - return this.wot.wtViewport.rowsVisibleCalculator.count; - } - }, { - key: 'allRowsInViewport', - value: function allRowsInViewport() { - return this.wot.getSetting('totalRows') == this.getVisibleRowsCount(); - } - - /** - * Checks if any of the row's cells content exceeds its initial height, and if so, returns the oversized height - * - * @param {Number} sourceRow - * @returns {Number} - */ - - }, { - key: 'getRowHeight', - value: function getRowHeight(sourceRow) { - var height = this.wot.wtSettings.settings.rowHeight(sourceRow); - var oversizedHeight = this.wot.wtViewport.oversizedRows[sourceRow]; - - if (oversizedHeight !== void 0) { - height = height === void 0 ? oversizedHeight : Math.max(height, oversizedHeight); - } - - return height; - } - }, { - key: 'getColumnHeaderHeight', - value: function getColumnHeaderHeight(level) { - var height = this.wot.wtSettings.settings.defaultRowHeight; - var oversizedHeight = this.wot.wtViewport.oversizedColumnHeaders[level]; - - if (oversizedHeight !== void 0) { - height = height ? Math.max(height, oversizedHeight) : oversizedHeight; - } - - return height; - } - }, { - key: 'getVisibleColumnsCount', - value: function getVisibleColumnsCount() { - return this.wot.wtViewport.columnsVisibleCalculator.count; - } - }, { - key: 'allColumnsInViewport', - value: function allColumnsInViewport() { - return this.wot.getSetting('totalColumns') == this.getVisibleColumnsCount(); - } - }, { - key: 'getColumnWidth', - value: function getColumnWidth(sourceColumn) { - var width = this.wot.wtSettings.settings.columnWidth; - - if (typeof width === 'function') { - width = width(sourceColumn); - } else if ((typeof width === 'undefined' ? 'undefined' : _typeof(width)) === 'object') { - width = width[sourceColumn]; - } - - return width || this.wot.wtSettings.settings.defaultColumnWidth; - } - }, { - key: 'getStretchedColumnWidth', - value: function getStretchedColumnWidth(sourceColumn) { - var columnWidth = this.getColumnWidth(sourceColumn); - var width = columnWidth == null ? this.instance.wtSettings.settings.defaultColumnWidth : columnWidth; - var calculator = this.wot.wtViewport.columnsRenderCalculator; - - if (calculator) { - var stretchedWidth = calculator.getStretchedColumnWidth(sourceColumn, width); - - if (stretchedWidth) { - width = stretchedWidth; - } - } - - return width; - } - - /** - * Modify row header widths provided by user in class contructor. - * - * @private - */ - - }, { - key: '_modifyRowHeaderWidth', - value: function _modifyRowHeaderWidth(rowHeaderWidthFactory) { - var widths = (0, _function.isFunction)(rowHeaderWidthFactory) ? rowHeaderWidthFactory() : null; - - if (Array.isArray(widths)) { - widths = [].concat(_toConsumableArray(widths)); - widths[widths.length - 1] = this._correctRowHeaderWidth(widths[widths.length - 1]); - } else { - widths = this._correctRowHeaderWidth(widths); - } - - return widths; - } - - /** - * Correct row header width if necessary. - * - * @private - */ - - }, { - key: '_correctRowHeaderWidth', - value: function _correctRowHeaderWidth(width) { - if (typeof width !== 'number') { - width = this.wot.getSetting('defaultColumnWidth'); - } - if (this.correctHeaderWidth) { - width++; - } - - return width; - } - }]); - - return Table; -}(); - -exports.default = Table; - -/***/ }), -/* 165 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _base = __webpack_require__(31); - -var _base2 = _interopRequireDefault(_base); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var performanceWarningAppeared = false; - -/** - * @class TableRenderer - */ - -var TableRenderer = function () { - /** - * @param {WalkontableTable} wtTable - */ - function TableRenderer(wtTable) { - _classCallCheck(this, TableRenderer); - - this.wtTable = wtTable; - this.wot = wtTable.instance; - - // legacy support - this.instance = wtTable.instance; - - this.rowFilter = wtTable.rowFilter; - this.columnFilter = wtTable.columnFilter; - - this.TABLE = wtTable.TABLE; - this.THEAD = wtTable.THEAD; - this.TBODY = wtTable.TBODY; - this.COLGROUP = wtTable.COLGROUP; - - this.rowHeaders = []; - this.rowHeaderCount = 0; - this.columnHeaders = []; - this.columnHeaderCount = 0; - this.fixedRowsTop = 0; - this.fixedRowsBottom = 0; - } - - /** - * - */ - - - _createClass(TableRenderer, [{ - key: 'render', - value: function render() { - if (!this.wtTable.isWorkingOnClone()) { - var skipRender = {}; - this.wot.getSetting('beforeDraw', true, skipRender); - - if (skipRender.skipRender === true) { - return; - } - } - - this.rowHeaders = this.wot.getSetting('rowHeaders'); - this.rowHeaderCount = this.rowHeaders.length; - this.fixedRowsTop = this.wot.getSetting('fixedRowsTop'); - this.fixedRowsBottom = this.wot.getSetting('fixedRowsBottom'); - this.columnHeaders = this.wot.getSetting('columnHeaders'); - this.columnHeaderCount = this.columnHeaders.length; - - var columnsToRender = this.wtTable.getRenderedColumnsCount(); - var rowsToRender = this.wtTable.getRenderedRowsCount(); - var totalColumns = this.wot.getSetting('totalColumns'); - var totalRows = this.wot.getSetting('totalRows'); - var workspaceWidth = void 0; - var adjusted = false; - - if (_base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_BOTTOM) || _base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_BOTTOM_LEFT_CORNER)) { - - // do NOT render headers on the bottom or bottom-left corner overlay - this.columnHeaders = []; - this.columnHeaderCount = 0; - } - - if (totalColumns >= 0) { - // prepare COL and TH elements for rendering - this.adjustAvailableNodes(); - adjusted = true; - - // adjust column widths according to user widths settings - this.renderColumnHeaders(); - - // Render table rows - this.renderRows(totalRows, rowsToRender, columnsToRender); - - if (!this.wtTable.isWorkingOnClone()) { - workspaceWidth = this.wot.wtViewport.getWorkspaceWidth(); - this.wot.wtViewport.containerWidth = null; - } - - this.adjustColumnWidths(columnsToRender); - this.markOversizedColumnHeaders(); - this.adjustColumnHeaderHeights(); - } - - if (!adjusted) { - this.adjustAvailableNodes(); - } - this.removeRedundantRows(rowsToRender); - - if (!this.wtTable.isWorkingOnClone() || this.wot.isOverlayName(_base2.default.CLONE_BOTTOM)) { - this.markOversizedRows(); - } - if (!this.wtTable.isWorkingOnClone()) { - this.wot.wtViewport.createVisibleCalculators(); - this.wot.wtOverlays.refresh(false); - - this.wot.wtOverlays.applyToDOM(); - - var hiderWidth = (0, _element.outerWidth)(this.wtTable.hider); - var tableWidth = (0, _element.outerWidth)(this.wtTable.TABLE); - - if (hiderWidth !== 0 && tableWidth !== hiderWidth) { - // Recalculate the column widths, if width changes made in the overlays removed the scrollbar, thus changing the viewport width. - this.adjustColumnWidths(columnsToRender); - } - - if (workspaceWidth !== this.wot.wtViewport.getWorkspaceWidth()) { - // workspace width changed though to shown/hidden vertical scrollbar. Let's reapply stretching - this.wot.wtViewport.containerWidth = null; - - var firstRendered = this.wtTable.getFirstRenderedColumn(); - var lastRendered = this.wtTable.getLastRenderedColumn(); - var defaultColumnWidth = this.wot.getSetting('defaultColumnWidth'); - var rowHeaderWidthSetting = this.wot.getSetting('rowHeaderWidth'); - - rowHeaderWidthSetting = this.instance.getSetting('onModifyRowHeaderWidth', rowHeaderWidthSetting); - - if (rowHeaderWidthSetting != null) { - for (var i = 0; i < this.rowHeaderCount; i++) { - var width = Array.isArray(rowHeaderWidthSetting) ? rowHeaderWidthSetting[i] : rowHeaderWidthSetting; - - width = width == null ? defaultColumnWidth : width; - - this.COLGROUP.childNodes[i].style.width = width + 'px'; - } - } - - for (var _i = firstRendered; _i < lastRendered; _i++) { - var _width = this.wtTable.getStretchedColumnWidth(_i); - var renderedIndex = this.columnFilter.sourceToRendered(_i); - - this.COLGROUP.childNodes[renderedIndex + this.rowHeaderCount].style.width = _width + 'px'; - } - } - - this.wot.getSetting('onDraw', true); - } else if (this.wot.isOverlayName(_base2.default.CLONE_BOTTOM)) { - this.wot.cloneSource.wtOverlays.adjustElementsSize(); - } - } - - /** - * @param {Number} renderedRowsCount - */ - - }, { - key: 'removeRedundantRows', - value: function removeRedundantRows(renderedRowsCount) { - while (this.wtTable.tbodyChildrenLength > renderedRowsCount) { - this.TBODY.removeChild(this.TBODY.lastChild); - this.wtTable.tbodyChildrenLength--; - } - } - - /** - * @param {Number} totalRows - * @param {Number} rowsToRender - * @param {Number} columnsToRender - */ - - }, { - key: 'renderRows', - value: function renderRows(totalRows, rowsToRender, columnsToRender) { - var lastTD = void 0, - TR = void 0; - var visibleRowIndex = 0; - var sourceRowIndex = this.rowFilter.renderedToSource(visibleRowIndex); - var isWorkingOnClone = this.wtTable.isWorkingOnClone(); - - while (sourceRowIndex < totalRows && sourceRowIndex >= 0) { - if (!performanceWarningAppeared && visibleRowIndex > 1000) { - performanceWarningAppeared = true; - console.warn('Performance tip: Handsontable rendered more than 1000 visible rows. Consider limiting the number ' + 'of rendered rows by specifying the table height and/or turning off the "renderAllRows" option.'); - } - if (rowsToRender !== void 0 && visibleRowIndex === rowsToRender) { - // We have as much rows as needed for this clone - break; - } - TR = this.getOrCreateTrForRow(visibleRowIndex, TR); - - // Render row headers - this.renderRowHeaders(sourceRowIndex, TR); - // Add and/or remove TDs to TR to match the desired number - this.adjustColumns(TR, columnsToRender + this.rowHeaderCount); - - lastTD = this.renderCells(sourceRowIndex, TR, columnsToRender); - - if (!isWorkingOnClone || - // Necessary to refresh oversized row heights after editing cell in overlays - this.wot.isOverlayName(_base2.default.CLONE_BOTTOM)) { - // Reset the oversized row cache for this row - this.resetOversizedRow(sourceRowIndex); - } - - if (TR.firstChild) { - // if I have 2 fixed columns with one-line content and the 3rd column has a multiline content, this is - // the way to make sure that the overlay will has same row height - var height = this.wot.wtTable.getRowHeight(sourceRowIndex); - - if (height) { - // Decrease height. 1 pixel will be "replaced" by 1px border top - height--; - TR.firstChild.style.height = height + 'px'; - } else { - TR.firstChild.style.height = ''; - } - } - visibleRowIndex++; - sourceRowIndex = this.rowFilter.renderedToSource(visibleRowIndex); - } - } - - /** - * Reset the oversized row cache for the provided index - * - * @param {Number} sourceRow Row index - */ - - }, { - key: 'resetOversizedRow', - value: function resetOversizedRow(sourceRow) { - if (this.wot.getSetting('externalRowCalculator')) { - return; - } - if (this.wot.wtViewport.oversizedRows && this.wot.wtViewport.oversizedRows[sourceRow]) { - this.wot.wtViewport.oversizedRows[sourceRow] = void 0; - } - } - - /** - * Check if any of the rendered rows is higher than expected, and if so, cache them - */ - - }, { - key: 'markOversizedRows', - value: function markOversizedRows() { - if (this.wot.getSetting('externalRowCalculator')) { - return; - } - var rowCount = this.instance.wtTable.TBODY.childNodes.length; - var expectedTableHeight = rowCount * this.instance.wtSettings.settings.defaultRowHeight; - var actualTableHeight = (0, _element.innerHeight)(this.instance.wtTable.TBODY) - 1; - var previousRowHeight = void 0; - var rowInnerHeight = void 0; - var sourceRowIndex = void 0; - var currentTr = void 0; - var rowHeader = void 0; - var totalRows = this.instance.getSetting('totalRows'); - - if (expectedTableHeight === actualTableHeight && !this.instance.getSetting('fixedRowsBottom')) { - // If the actual table height equals rowCount * default single row height, no row is oversized -> no need to iterate over them - return; - } - - while (rowCount) { - rowCount--; - sourceRowIndex = this.instance.wtTable.rowFilter.renderedToSource(rowCount); - previousRowHeight = this.instance.wtTable.getRowHeight(sourceRowIndex); - currentTr = this.instance.wtTable.getTrForRow(sourceRowIndex); - rowHeader = currentTr.querySelector('th'); - - if (rowHeader) { - rowInnerHeight = (0, _element.innerHeight)(rowHeader); - } else { - rowInnerHeight = (0, _element.innerHeight)(currentTr) - 1; - } - - if (!previousRowHeight && this.instance.wtSettings.settings.defaultRowHeight < rowInnerHeight || previousRowHeight < rowInnerHeight) { - this.instance.wtViewport.oversizedRows[sourceRowIndex] = ++rowInnerHeight; - } - } - } - - /** - * Check if any of the rendered columns is higher than expected, and if so, cache them. - */ - - }, { - key: 'markOversizedColumnHeaders', - value: function markOversizedColumnHeaders() { - var overlayName = this.wot.getOverlayName(); - - if (!this.columnHeaderCount || this.wot.wtViewport.hasOversizedColumnHeadersMarked[overlayName] || this.wtTable.isWorkingOnClone()) { - return; - } - var columnCount = this.wtTable.getRenderedColumnsCount(); - - for (var i = 0; i < this.columnHeaderCount; i++) { - for (var renderedColumnIndex = -1 * this.rowHeaderCount; renderedColumnIndex < columnCount; renderedColumnIndex++) { - this.markIfOversizedColumnHeader(renderedColumnIndex); - } - } - this.wot.wtViewport.hasOversizedColumnHeadersMarked[overlayName] = true; - } - - /** - * - */ - - }, { - key: 'adjustColumnHeaderHeights', - value: function adjustColumnHeaderHeights() { - var columnHeaders = this.wot.getSetting('columnHeaders'); - var children = this.wot.wtTable.THEAD.childNodes; - var oversizedColumnHeaders = this.wot.wtViewport.oversizedColumnHeaders; - - for (var i = 0, len = columnHeaders.length; i < len; i++) { - if (oversizedColumnHeaders[i]) { - if (!children[i] || children[i].childNodes.length === 0) { - return; - } - children[i].childNodes[0].style.height = oversizedColumnHeaders[i] + 'px'; - } - } - } - - /** - * Check if column header for the specified column is higher than expected, and if so, cache it - * - * @param {Number} col Index of column - */ - - }, { - key: 'markIfOversizedColumnHeader', - value: function markIfOversizedColumnHeader(col) { - var sourceColIndex = this.wot.wtTable.columnFilter.renderedToSource(col); - var level = this.columnHeaderCount; - var defaultRowHeight = this.wot.wtSettings.settings.defaultRowHeight; - var previousColHeaderHeight = void 0; - var currentHeader = void 0; - var currentHeaderHeight = void 0; - var columnHeaderHeightSetting = this.wot.getSetting('columnHeaderHeight') || []; - - while (level) { - level--; - - previousColHeaderHeight = this.wot.wtTable.getColumnHeaderHeight(level); - currentHeader = this.wot.wtTable.getColumnHeader(sourceColIndex, level); - - if (!currentHeader) { - /* eslint-disable no-continue */ - continue; - } - currentHeaderHeight = (0, _element.innerHeight)(currentHeader); - - if (!previousColHeaderHeight && defaultRowHeight < currentHeaderHeight || previousColHeaderHeight < currentHeaderHeight) { - this.wot.wtViewport.oversizedColumnHeaders[level] = currentHeaderHeight; - } - - if (Array.isArray(columnHeaderHeightSetting)) { - if (columnHeaderHeightSetting[level] != null) { - this.wot.wtViewport.oversizedColumnHeaders[level] = columnHeaderHeightSetting[level]; - } - } else if (!isNaN(columnHeaderHeightSetting)) { - this.wot.wtViewport.oversizedColumnHeaders[level] = columnHeaderHeightSetting; - } - - if (this.wot.wtViewport.oversizedColumnHeaders[level] < (columnHeaderHeightSetting[level] || columnHeaderHeightSetting)) { - this.wot.wtViewport.oversizedColumnHeaders[level] = columnHeaderHeightSetting[level] || columnHeaderHeightSetting; - } - } - } - - /** - * @param {Number} sourceRowIndex - * @param {HTMLTableRowElement} TR - * @param {Number} columnsToRender - * @returns {HTMLTableCellElement} - */ - - }, { - key: 'renderCells', - value: function renderCells(sourceRowIndex, TR, columnsToRender) { - var TD = void 0; - var sourceColIndex = void 0; - - for (var visibleColIndex = 0; visibleColIndex < columnsToRender; visibleColIndex++) { - sourceColIndex = this.columnFilter.renderedToSource(visibleColIndex); - - if (visibleColIndex === 0) { - TD = TR.childNodes[this.columnFilter.sourceColumnToVisibleRowHeadedColumn(sourceColIndex)]; - } else { - TD = TD.nextSibling; // http://jsperf.com/nextsibling-vs-indexed-childnodes - } - // If the number of headers has been reduced, we need to replace excess TH with TD - if (TD.nodeName == 'TH') { - TD = replaceThWithTd(TD, TR); - } - if (!(0, _element.hasClass)(TD, 'hide')) { - TD.className = ''; - } - TD.removeAttribute('style'); - this.wot.wtSettings.settings.cellRenderer(sourceRowIndex, sourceColIndex, TD); - } - - return TD; - } - - /** - * @param {Number} columnsToRender Number of columns to render. - */ - - }, { - key: 'adjustColumnWidths', - value: function adjustColumnWidths(columnsToRender) { - var scrollbarCompensation = 0; - var sourceInstance = this.wot.cloneSource ? this.wot.cloneSource : this.wot; - var mainHolder = sourceInstance.wtTable.holder; - var defaultColumnWidth = this.wot.getSetting('defaultColumnWidth'); - var rowHeaderWidthSetting = this.wot.getSetting('rowHeaderWidth'); - - if (mainHolder.offsetHeight < mainHolder.scrollHeight) { - scrollbarCompensation = (0, _element.getScrollbarWidth)(); - } - this.wot.wtViewport.columnsRenderCalculator.refreshStretching(this.wot.wtViewport.getViewportWidth() - scrollbarCompensation); - - rowHeaderWidthSetting = this.instance.getSetting('onModifyRowHeaderWidth', rowHeaderWidthSetting); - - if (rowHeaderWidthSetting != null) { - for (var i = 0; i < this.rowHeaderCount; i++) { - var width = Array.isArray(rowHeaderWidthSetting) ? rowHeaderWidthSetting[i] : rowHeaderWidthSetting; - - width = width == null ? defaultColumnWidth : width; - - this.COLGROUP.childNodes[i].style.width = width + 'px'; - } - } - - for (var renderedColIndex = 0; renderedColIndex < columnsToRender; renderedColIndex++) { - var _width2 = this.wtTable.getStretchedColumnWidth(this.columnFilter.renderedToSource(renderedColIndex)); - - this.COLGROUP.childNodes[renderedColIndex + this.rowHeaderCount].style.width = _width2 + 'px'; - } - } - - /** - * @param {HTMLTableCellElement} TR - */ - - }, { - key: 'appendToTbody', - value: function appendToTbody(TR) { - this.TBODY.appendChild(TR); - this.wtTable.tbodyChildrenLength++; - } - - /** - * @param {Number} rowIndex - * @param {HTMLTableRowElement} currentTr - * @returns {HTMLTableCellElement} - */ - - }, { - key: 'getOrCreateTrForRow', - value: function getOrCreateTrForRow(rowIndex, currentTr) { - var TR = void 0; - - if (rowIndex >= this.wtTable.tbodyChildrenLength) { - TR = this.createRow(); - this.appendToTbody(TR); - } else if (rowIndex === 0) { - TR = this.TBODY.firstChild; - } else { - // http://jsperf.com/nextsibling-vs-indexed-childnodes - TR = currentTr.nextSibling; - } - if (TR.className) { - TR.removeAttribute('class'); - } - - return TR; - } - - /** - * @returns {HTMLTableCellElement} - */ - - }, { - key: 'createRow', - value: function createRow() { - var TR = document.createElement('TR'); - - for (var visibleColIndex = 0; visibleColIndex < this.rowHeaderCount; visibleColIndex++) { - TR.appendChild(document.createElement('TH')); - } - - return TR; - } - - /** - * @param {Number} row - * @param {Number} col - * @param {HTMLTableCellElement} TH - */ - - }, { - key: 'renderRowHeader', - value: function renderRowHeader(row, col, TH) { - TH.className = ''; - TH.removeAttribute('style'); - this.rowHeaders[col](row, TH, col); - } - - /** - * @param {Number} row - * @param {HTMLTableCellElement} TR - */ - - }, { - key: 'renderRowHeaders', - value: function renderRowHeaders(row, TR) { - for (var TH = TR.firstChild, visibleColIndex = 0; visibleColIndex < this.rowHeaderCount; visibleColIndex++) { - // If the number of row headers increased we need to create TH or replace an existing TD node with TH - if (!TH) { - TH = document.createElement('TH'); - TR.appendChild(TH); - } else if (TH.nodeName == 'TD') { - TH = replaceTdWithTh(TH, TR); - } - this.renderRowHeader(row, visibleColIndex, TH); - // http://jsperf.com/nextsibling-vs-indexed-childnodes - TH = TH.nextSibling; - } - } - - /** - * Adjust the number of COL and TH elements to match the number of columns and headers that need to be rendered - */ - - }, { - key: 'adjustAvailableNodes', - value: function adjustAvailableNodes() { - this.adjustColGroups(); - this.adjustThead(); - } - - /** - * Renders the column headers - */ - - }, { - key: 'renderColumnHeaders', - value: function renderColumnHeaders() { - if (!this.columnHeaderCount) { - return; - } - var columnCount = this.wtTable.getRenderedColumnsCount(); - - for (var i = 0; i < this.columnHeaderCount; i++) { - var TR = this.getTrForColumnHeaders(i); - - for (var renderedColumnIndex = -1 * this.rowHeaderCount; renderedColumnIndex < columnCount; renderedColumnIndex++) { - var sourceCol = this.columnFilter.renderedToSource(renderedColumnIndex); - - this.renderColumnHeader(i, sourceCol, TR.childNodes[renderedColumnIndex + this.rowHeaderCount]); - } - } - } - - /** - * Adjusts the number of COL elements to match the number of columns that need to be rendered - */ - - }, { - key: 'adjustColGroups', - value: function adjustColGroups() { - var columnCount = this.wtTable.getRenderedColumnsCount(); - - while (this.wtTable.colgroupChildrenLength < columnCount + this.rowHeaderCount) { - this.COLGROUP.appendChild(document.createElement('COL')); - this.wtTable.colgroupChildrenLength++; - } - while (this.wtTable.colgroupChildrenLength > columnCount + this.rowHeaderCount) { - this.COLGROUP.removeChild(this.COLGROUP.lastChild); - this.wtTable.colgroupChildrenLength--; - } - if (this.rowHeaderCount) { - (0, _element.addClass)(this.COLGROUP.childNodes[0], 'rowHeader'); - } - } - - /** - * Adjusts the number of TH elements in THEAD to match the number of headers and columns that need to be rendered - */ - - }, { - key: 'adjustThead', - value: function adjustThead() { - var columnCount = this.wtTable.getRenderedColumnsCount(); - var TR = this.THEAD.firstChild; - - if (this.columnHeaders.length) { - for (var i = 0, len = this.columnHeaders.length; i < len; i++) { - TR = this.THEAD.childNodes[i]; - - if (!TR) { - TR = document.createElement('TR'); - this.THEAD.appendChild(TR); - } - this.theadChildrenLength = TR.childNodes.length; - - while (this.theadChildrenLength < columnCount + this.rowHeaderCount) { - TR.appendChild(document.createElement('TH')); - this.theadChildrenLength++; - } - while (this.theadChildrenLength > columnCount + this.rowHeaderCount) { - TR.removeChild(TR.lastChild); - this.theadChildrenLength--; - } - } - var theadChildrenLength = this.THEAD.childNodes.length; - - if (theadChildrenLength > this.columnHeaders.length) { - for (var _i2 = this.columnHeaders.length; _i2 < theadChildrenLength; _i2++) { - this.THEAD.removeChild(this.THEAD.lastChild); - } - } - } else if (TR) { - (0, _element.empty)(TR); - } - } - - /** - * @param {Number} index - * @returns {HTMLTableCellElement} - */ - - }, { - key: 'getTrForColumnHeaders', - value: function getTrForColumnHeaders(index) { - return this.THEAD.childNodes[index]; - } - - /** - * @param {Number} row - * @param {Number} col - * @param {HTMLTableCellElement} TH - * @returns {*} - */ - - }, { - key: 'renderColumnHeader', - value: function renderColumnHeader(row, col, TH) { - TH.className = ''; - TH.removeAttribute('style'); - - return this.columnHeaders[row](col, TH, row); - } - - /** - * Add and/or remove the TDs to match the desired number - * - * @param {HTMLTableCellElement} TR Table row in question - * @param {Number} desiredCount The desired number of TDs in the TR - */ - - }, { - key: 'adjustColumns', - value: function adjustColumns(TR, desiredCount) { - var count = TR.childNodes.length; - - while (count < desiredCount) { - var TD = document.createElement('TD'); - - TR.appendChild(TD); - count++; - } - while (count > desiredCount) { - TR.removeChild(TR.lastChild); - count--; - } - } - - /** - * @param {Number} columnsToRender - */ - - }, { - key: 'removeRedundantColumns', - value: function removeRedundantColumns(columnsToRender) { - while (this.wtTable.tbodyChildrenLength > columnsToRender) { - this.TBODY.removeChild(this.TBODY.lastChild); - this.wtTable.tbodyChildrenLength--; - } - } - }]); - - return TableRenderer; -}(); - -function replaceTdWithTh(TD, TR) { - var TH = document.createElement('TH'); - - TR.insertBefore(TH, TD); - TR.removeChild(TD); - - return TH; -} - -function replaceThWithTd(TH, TR) { - var TD = document.createElement('TD'); - - TR.insertBefore(TD, TH); - TR.removeChild(TH); - - return TD; -} - -exports.default = TableRenderer; - -/***/ }), -/* 166 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _object = __webpack_require__(1); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _viewportColumns = __webpack_require__(155); - -var _viewportColumns2 = _interopRequireDefault(_viewportColumns); - -var _viewportRows = __webpack_require__(156); - -var _viewportRows2 = _interopRequireDefault(_viewportRows); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class Viewport - */ -var Viewport = function () { - /** - * @param wotInstance - */ - function Viewport(wotInstance) { - var _this = this; - - _classCallCheck(this, Viewport); - - this.wot = wotInstance; - // legacy support - this.instance = this.wot; - - this.oversizedRows = []; - this.oversizedColumnHeaders = []; - this.hasOversizedColumnHeadersMarked = {}; - this.clientHeight = 0; - this.containerWidth = NaN; - this.rowHeaderWidth = NaN; - this.rowsVisibleCalculator = null; - this.columnsVisibleCalculator = null; - - this.eventManager = new _eventManager2.default(this.wot); - this.eventManager.addEventListener(window, 'resize', function () { - _this.clientHeight = _this.getWorkspaceHeight(); - }); - } - - /** - * @returns {number} - */ - - - _createClass(Viewport, [{ - key: 'getWorkspaceHeight', - value: function getWorkspaceHeight() { - var trimmingContainer = this.instance.wtOverlays.topOverlay.trimmingContainer; - var elemHeight = void 0; - var height = 0; - - if (trimmingContainer === window) { - height = document.documentElement.clientHeight; - } else { - elemHeight = (0, _element.outerHeight)(trimmingContainer); - // returns height without DIV scrollbar - height = elemHeight > 0 && trimmingContainer.clientHeight > 0 ? trimmingContainer.clientHeight : Infinity; - } - - return height; - } - }, { - key: 'getWorkspaceWidth', - value: function getWorkspaceWidth() { - var width = void 0; - var totalColumns = this.wot.getSetting('totalColumns'); - var trimmingContainer = this.instance.wtOverlays.leftOverlay.trimmingContainer; - var overflow = void 0; - var stretchSetting = this.wot.getSetting('stretchH'); - var docOffsetWidth = document.documentElement.offsetWidth; - var preventOverflow = this.wot.getSetting('preventOverflow'); - - if (preventOverflow) { - return (0, _element.outerWidth)(this.instance.wtTable.wtRootElement); - } - - if (this.wot.getSetting('freezeOverlays')) { - width = Math.min(docOffsetWidth - this.getWorkspaceOffset().left, docOffsetWidth); - } else { - width = Math.min(this.getContainerFillWidth(), docOffsetWidth - this.getWorkspaceOffset().left, docOffsetWidth); - } - - if (trimmingContainer === window && totalColumns > 0 && this.sumColumnWidths(0, totalColumns - 1) > width) { - // in case sum of column widths is higher than available stylesheet width, let's assume using the whole window - // otherwise continue below, which will allow stretching - // this is used in `scroll_window.html` - // TODO test me - return document.documentElement.clientWidth; - } - - if (trimmingContainer !== window) { - overflow = (0, _element.getStyle)(this.instance.wtOverlays.leftOverlay.trimmingContainer, 'overflow'); - - if (overflow == 'scroll' || overflow == 'hidden' || overflow == 'auto') { - // this is used in `scroll.html` - // TODO test me - return Math.max(width, trimmingContainer.clientWidth); - } - } - - if (stretchSetting === 'none' || !stretchSetting) { - // if no stretching is used, return the maximum used workspace width - return Math.max(width, (0, _element.outerWidth)(this.instance.wtTable.TABLE)); - } - - // if stretching is used, return the actual container width, so the columns can fit inside it - return width; - } - - /** - * Checks if viewport has vertical scroll - * - * @returns {Boolean} - */ - - }, { - key: 'hasVerticalScroll', - value: function hasVerticalScroll() { - return this.getWorkspaceActualHeight() > this.getWorkspaceHeight(); - } - - /** - * Checks if viewport has horizontal scroll - * - * @returns {Boolean} - */ - - }, { - key: 'hasHorizontalScroll', - value: function hasHorizontalScroll() { - return this.getWorkspaceActualWidth() > this.getWorkspaceWidth(); - } - - /** - * @param from - * @param length - * @returns {Number} - */ - - }, { - key: 'sumColumnWidths', - value: function sumColumnWidths(from, length) { - var sum = 0; - - while (from < length) { - sum += this.wot.wtTable.getColumnWidth(from); - from++; - } - - return sum; - } - - /** - * @returns {Number} - */ - - }, { - key: 'getContainerFillWidth', - value: function getContainerFillWidth() { - if (this.containerWidth) { - return this.containerWidth; - } - var mainContainer = this.instance.wtTable.holder; - var fillWidth = void 0; - var dummyElement = void 0; - - dummyElement = document.createElement('div'); - dummyElement.style.width = '100%'; - dummyElement.style.height = '1px'; - mainContainer.appendChild(dummyElement); - fillWidth = dummyElement.offsetWidth; - - this.containerWidth = fillWidth; - mainContainer.removeChild(dummyElement); - - return fillWidth; - } - - /** - * @returns {Number} - */ - - }, { - key: 'getWorkspaceOffset', - value: function getWorkspaceOffset() { - return (0, _element.offset)(this.wot.wtTable.TABLE); - } - - /** - * @returns {Number} - */ - - }, { - key: 'getWorkspaceActualHeight', - value: function getWorkspaceActualHeight() { - return (0, _element.outerHeight)(this.wot.wtTable.TABLE); - } - - /** - * @returns {Number} - */ - - }, { - key: 'getWorkspaceActualWidth', - value: function getWorkspaceActualWidth() { - return (0, _element.outerWidth)(this.wot.wtTable.TABLE) || (0, _element.outerWidth)(this.wot.wtTable.TBODY) || (0, _element.outerWidth)(this.wot.wtTable.THEAD); // IE8 reports 0 as offsetWidth; - } - - /** - * @returns {Number} - */ - - }, { - key: 'getColumnHeaderHeight', - value: function getColumnHeaderHeight() { - if (isNaN(this.columnHeaderHeight)) { - this.columnHeaderHeight = (0, _element.outerHeight)(this.wot.wtTable.THEAD); - } - - return this.columnHeaderHeight; - } - - /** - * @returns {Number} - */ - - }, { - key: 'getViewportHeight', - value: function getViewportHeight() { - var containerHeight = this.getWorkspaceHeight(); - var columnHeaderHeight = void 0; - - if (containerHeight === Infinity) { - return containerHeight; - } - columnHeaderHeight = this.getColumnHeaderHeight(); - - if (columnHeaderHeight > 0) { - containerHeight -= columnHeaderHeight; - } - - return containerHeight; - } - - /** - * @returns {Number} - */ - - }, { - key: 'getRowHeaderWidth', - value: function getRowHeaderWidth() { - var rowHeadersHeightSetting = this.instance.getSetting('rowHeaderWidth'); - var rowHeaders = this.instance.getSetting('rowHeaders'); - - if (rowHeadersHeightSetting) { - this.rowHeaderWidth = 0; - - for (var i = 0, len = rowHeaders.length; i < len; i++) { - this.rowHeaderWidth += rowHeadersHeightSetting[i] || rowHeadersHeightSetting; - } - } - - if (this.wot.cloneSource) { - return this.wot.cloneSource.wtViewport.getRowHeaderWidth(); - } - - if (isNaN(this.rowHeaderWidth)) { - - if (rowHeaders.length) { - var TH = this.instance.wtTable.TABLE.querySelector('TH'); - this.rowHeaderWidth = 0; - - for (var _i = 0, _len = rowHeaders.length; _i < _len; _i++) { - if (TH) { - this.rowHeaderWidth += (0, _element.outerWidth)(TH); - TH = TH.nextSibling; - } else { - // yes this is a cheat but it worked like that before, just taking assumption from CSS instead of measuring. - // TODO: proper fix - this.rowHeaderWidth += 50; - } - } - } else { - this.rowHeaderWidth = 0; - } - } - - this.rowHeaderWidth = this.instance.getSetting('onModifyRowHeaderWidth', this.rowHeaderWidth) || this.rowHeaderWidth; - - return this.rowHeaderWidth; - } - - /** - * @returns {Number} - */ - - }, { - key: 'getViewportWidth', - value: function getViewportWidth() { - var containerWidth = this.getWorkspaceWidth(); - var rowHeaderWidth = void 0; - - if (containerWidth === Infinity) { - return containerWidth; - } - rowHeaderWidth = this.getRowHeaderWidth(); - - if (rowHeaderWidth > 0) { - return containerWidth - rowHeaderWidth; - } - - return containerWidth; - } - - /** - * Creates: - * - rowsRenderCalculator (before draw, to qualify rows for rendering) - * - rowsVisibleCalculator (after draw, to measure which rows are actually visible) - * - * @returns {ViewportRowsCalculator} - */ - - }, { - key: 'createRowsCalculator', - value: function createRowsCalculator() { - var _this2 = this; - - var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - var height = void 0; - var pos = void 0; - var fixedRowsTop = void 0; - var scrollbarHeight = void 0; - var fixedRowsBottom = void 0; - var fixedRowsHeight = void 0; - var totalRows = void 0; - - this.rowHeaderWidth = NaN; - - if (this.wot.wtSettings.settings.renderAllRows) { - height = Infinity; - } else { - height = this.getViewportHeight(); - } - pos = this.wot.wtOverlays.topOverlay.getScrollPosition() - this.wot.wtOverlays.topOverlay.getTableParentOffset(); - - if (pos < 0) { - pos = 0; - } - fixedRowsTop = this.wot.getSetting('fixedRowsTop'); - fixedRowsBottom = this.wot.getSetting('fixedRowsBottom'); - totalRows = this.wot.getSetting('totalRows'); - - if (fixedRowsTop) { - fixedRowsHeight = this.wot.wtOverlays.topOverlay.sumCellSizes(0, fixedRowsTop); - pos += fixedRowsHeight; - height -= fixedRowsHeight; - } - - if (fixedRowsBottom && this.wot.wtOverlays.bottomOverlay.clone) { - fixedRowsHeight = this.wot.wtOverlays.bottomOverlay.sumCellSizes(totalRows - fixedRowsBottom, totalRows); - - height -= fixedRowsHeight; - } - - if (this.wot.wtTable.holder.clientHeight === this.wot.wtTable.holder.offsetHeight) { - scrollbarHeight = 0; - } else { - scrollbarHeight = (0, _element.getScrollbarWidth)(); - } - - return new _viewportRows2.default(height, pos, this.wot.getSetting('totalRows'), function (sourceRow) { - return _this2.wot.wtTable.getRowHeight(sourceRow); - }, visible ? null : this.wot.wtSettings.settings.viewportRowCalculatorOverride, visible, scrollbarHeight); - } - - /** - * Creates: - * - columnsRenderCalculator (before draw, to qualify columns for rendering) - * - columnsVisibleCalculator (after draw, to measure which columns are actually visible) - * - * @returns {ViewportRowsCalculator} - */ - - }, { - key: 'createColumnsCalculator', - value: function createColumnsCalculator() { - var _this3 = this; - - var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - var width = this.getViewportWidth(); - var pos = void 0; - var fixedColumnsLeft = void 0; - - this.columnHeaderHeight = NaN; - - pos = this.wot.wtOverlays.leftOverlay.getScrollPosition() - this.wot.wtOverlays.leftOverlay.getTableParentOffset(); - - if (pos < 0) { - pos = 0; - } - fixedColumnsLeft = this.wot.getSetting('fixedColumnsLeft'); - - if (fixedColumnsLeft) { - var fixedColumnsWidth = this.wot.wtOverlays.leftOverlay.sumCellSizes(0, fixedColumnsLeft); - pos += fixedColumnsWidth; - width -= fixedColumnsWidth; - } - if (this.wot.wtTable.holder.clientWidth !== this.wot.wtTable.holder.offsetWidth) { - width -= (0, _element.getScrollbarWidth)(); - } - - return new _viewportColumns2.default(width, pos, this.wot.getSetting('totalColumns'), function (sourceCol) { - return _this3.wot.wtTable.getColumnWidth(sourceCol); - }, visible ? null : this.wot.wtSettings.settings.viewportColumnCalculatorOverride, visible, this.wot.getSetting('stretchH'), function (stretchedWidth, column) { - return _this3.wot.getSetting('onBeforeStretchingColumnWidth', stretchedWidth, column); - }); - } - - /** - * Creates rowsRenderCalculator and columnsRenderCalculator (before draw, to determine what rows and - * cols should be rendered) - * - * @param fastDraw {Boolean} If `true`, will try to avoid full redraw and only update the border positions. - * If `false` or `undefined`, will perform a full redraw - * @returns fastDraw {Boolean} The fastDraw value, possibly modified - */ - - }, { - key: 'createRenderCalculators', - value: function createRenderCalculators() { - var fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (fastDraw) { - var proposedRowsVisibleCalculator = this.createRowsCalculator(true); - var proposedColumnsVisibleCalculator = this.createColumnsCalculator(true); - - if (!(this.areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator) && this.areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator))) { - fastDraw = false; - } - } - - if (!fastDraw) { - this.rowsRenderCalculator = this.createRowsCalculator(); - this.columnsRenderCalculator = this.createColumnsCalculator(); - } - // delete temporarily to make sure that renderers always use rowsRenderCalculator, not rowsVisibleCalculator - this.rowsVisibleCalculator = null; - this.columnsVisibleCalculator = null; - - return fastDraw; - } - - /** - * Creates rowsVisibleCalculator and columnsVisibleCalculator (after draw, to determine what are - * the actually visible rows and columns) - */ - - }, { - key: 'createVisibleCalculators', - value: function createVisibleCalculators() { - this.rowsVisibleCalculator = this.createRowsCalculator(true); - this.columnsVisibleCalculator = this.createColumnsCalculator(true); - } - - /** - * Returns information whether proposedRowsVisibleCalculator viewport - * is contained inside rows rendered in previous draw (cached in rowsRenderCalculator) - * - * @param {Object} proposedRowsVisibleCalculator - * @returns {Boolean} Returns `true` if all proposed visible rows are already rendered (meaning: redraw is not needed). - * Returns `false` if at least one proposed visible row is not already rendered (meaning: redraw is needed) - */ - - }, { - key: 'areAllProposedVisibleRowsAlreadyRendered', - value: function areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator) { - if (this.rowsVisibleCalculator) { - if (proposedRowsVisibleCalculator.startRow < this.rowsRenderCalculator.startRow || proposedRowsVisibleCalculator.startRow === this.rowsRenderCalculator.startRow && proposedRowsVisibleCalculator.startRow > 0) { - return false; - } else if (proposedRowsVisibleCalculator.endRow > this.rowsRenderCalculator.endRow || proposedRowsVisibleCalculator.endRow === this.rowsRenderCalculator.endRow && proposedRowsVisibleCalculator.endRow < this.wot.getSetting('totalRows') - 1) { - return false; - } - return true; - } - - return false; - } - - /** - * Returns information whether proposedColumnsVisibleCalculator viewport - * is contained inside column rendered in previous draw (cached in columnsRenderCalculator) - * - * @param {Object} proposedColumnsVisibleCalculator - * @returns {Boolean} Returns `true` if all proposed visible columns are already rendered (meaning: redraw is not needed). - * Returns `false` if at least one proposed visible column is not already rendered (meaning: redraw is needed) - */ - - }, { - key: 'areAllProposedVisibleColumnsAlreadyRendered', - value: function areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator) { - if (this.columnsVisibleCalculator) { - if (proposedColumnsVisibleCalculator.startColumn < this.columnsRenderCalculator.startColumn || proposedColumnsVisibleCalculator.startColumn === this.columnsRenderCalculator.startColumn && proposedColumnsVisibleCalculator.startColumn > 0) { - return false; - } else if (proposedColumnsVisibleCalculator.endColumn > this.columnsRenderCalculator.endColumn || proposedColumnsVisibleCalculator.endColumn === this.columnsRenderCalculator.endColumn && proposedColumnsVisibleCalculator.endColumn < this.wot.getSetting('totalColumns') - 1) { - return false; - } - return true; - } - - return false; - } - - /** - * Resets values in keys of the hasOversizedColumnHeadersMarked object after updateSettings. - */ - - }, { - key: 'resetHasOversizedColumnHeadersMarked', - value: function resetHasOversizedColumnHeadersMarked() { - (0, _object.objectEach)(this.hasOversizedColumnHeadersMarked, function (value, key, object) { - object[key] = void 0; - }); - } - }]); - - return Viewport; -}(); - -exports.default = Viewport; - -/***/ }), -/* 167 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _event = __webpack_require__(8); - -var _object = __webpack_require__(1); - -var _browser = __webpack_require__(26); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _coords = __webpack_require__(49); - -var _coords2 = _interopRequireDefault(_coords); - -var _base = __webpack_require__(31); - -var _base2 = _interopRequireDefault(_base); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * - */ -var Border = function () { - /** - * @param {Walkontable} wotInstance - * @param {Object} settings - */ - function Border(wotInstance, settings) { - _classCallCheck(this, Border); - - if (!settings) { - return; - } - this.eventManager = new _eventManager2.default(wotInstance); - this.instance = wotInstance; - this.wot = wotInstance; - this.settings = settings; - this.mouseDown = false; - this.main = null; - - this.top = null; - this.left = null; - this.bottom = null; - this.right = null; - - this.topStyle = null; - this.leftStyle = null; - this.bottomStyle = null; - this.rightStyle = null; - - this.cornerDefaultStyle = { - width: '5px', - height: '5px', - borderWidth: '2px', - borderStyle: 'solid', - borderColor: '#FFF' - }; - this.corner = null; - this.cornerStyle = null; - - this.createBorders(settings); - this.registerListeners(); - } - - /** - * Register all necessary events - */ - - - _createClass(Border, [{ - key: 'registerListeners', - value: function registerListeners() { - var _this2 = this; - - this.eventManager.addEventListener(document.body, 'mousedown', function () { - return _this2.onMouseDown(); - }); - this.eventManager.addEventListener(document.body, 'mouseup', function () { - return _this2.onMouseUp(); - }); - - var _loop = function _loop(c, len) { - _this2.eventManager.addEventListener(_this2.main.childNodes[c], 'mouseenter', function (event) { - return _this2.onMouseEnter(event, _this2.main.childNodes[c]); - }); - }; - - for (var c = 0, len = this.main.childNodes.length; c < len; c++) { - _loop(c, len); - } - } - - /** - * Mouse down listener - * - * @private - */ - - }, { - key: 'onMouseDown', - value: function onMouseDown() { - this.mouseDown = true; - } - - /** - * Mouse up listener - * - * @private - */ - - }, { - key: 'onMouseUp', - value: function onMouseUp() { - this.mouseDown = false; - } - - /** - * Mouse enter listener for fragment selection functionality. - * - * @private - * @param {Event} event Dom event - * @param {HTMLElement} parentElement Part of border element. - */ - - }, { - key: 'onMouseEnter', - value: function onMouseEnter(event, parentElement) { - if (!this.mouseDown || !this.wot.getSetting('hideBorderOnMouseDownOver')) { - return; - } - event.preventDefault(); - (0, _event.stopImmediatePropagation)(event); - - var _this = this; - var bounds = parentElement.getBoundingClientRect(); - // Hide border to prevents selection jumping when fragmentSelection is enabled. - parentElement.style.display = 'none'; - - function isOutside(event) { - if (event.clientY < Math.floor(bounds.top)) { - return true; - } - if (event.clientY > Math.ceil(bounds.top + bounds.height)) { - return true; - } - if (event.clientX < Math.floor(bounds.left)) { - return true; - } - if (event.clientX > Math.ceil(bounds.left + bounds.width)) { - return true; - } - } - - function handler(event) { - if (isOutside(event)) { - _this.eventManager.removeEventListener(document.body, 'mousemove', handler); - parentElement.style.display = 'block'; - } - } - - this.eventManager.addEventListener(document.body, 'mousemove', handler); - } - - /** - * Create border elements - * - * @param {Object} settings - */ - - }, { - key: 'createBorders', - value: function createBorders(settings) { - this.main = document.createElement('div'); - - var borderDivs = ['top', 'left', 'bottom', 'right', 'corner']; - var style = this.main.style; - style.position = 'absolute'; - style.top = 0; - style.left = 0; - - for (var i = 0; i < 5; i++) { - var position = borderDivs[i]; - var div = document.createElement('div'); - div.className = 'wtBorder ' + (this.settings.className || ''); // + borderDivs[i]; - - if (this.settings[position] && this.settings[position].hide) { - div.className += ' hidden'; - } - style = div.style; - style.backgroundColor = this.settings[position] && this.settings[position].color ? this.settings[position].color : settings.border.color; - style.height = this.settings[position] && this.settings[position].width ? this.settings[position].width + 'px' : settings.border.width + 'px'; - style.width = this.settings[position] && this.settings[position].width ? this.settings[position].width + 'px' : settings.border.width + 'px'; - - this.main.appendChild(div); - } - this.top = this.main.childNodes[0]; - this.left = this.main.childNodes[1]; - this.bottom = this.main.childNodes[2]; - this.right = this.main.childNodes[3]; - - this.topStyle = this.top.style; - this.leftStyle = this.left.style; - this.bottomStyle = this.bottom.style; - this.rightStyle = this.right.style; - - this.corner = this.main.childNodes[4]; - this.corner.className += ' corner'; - this.cornerStyle = this.corner.style; - this.cornerStyle.width = this.cornerDefaultStyle.width; - this.cornerStyle.height = this.cornerDefaultStyle.height; - this.cornerStyle.border = [this.cornerDefaultStyle.borderWidth, this.cornerDefaultStyle.borderStyle, this.cornerDefaultStyle.borderColor].join(' '); - - if ((0, _browser.isMobileBrowser)()) { - this.createMultipleSelectorHandles(); - } - this.disappear(); - - if (!this.wot.wtTable.bordersHolder) { - this.wot.wtTable.bordersHolder = document.createElement('div'); - this.wot.wtTable.bordersHolder.className = 'htBorders'; - this.wot.wtTable.spreader.appendChild(this.wot.wtTable.bordersHolder); - } - this.wot.wtTable.bordersHolder.insertBefore(this.main, this.wot.wtTable.bordersHolder.firstChild); - } - - /** - * Create multiple selector handler for mobile devices - */ - - }, { - key: 'createMultipleSelectorHandles', - value: function createMultipleSelectorHandles() { - this.selectionHandles = { - topLeft: document.createElement('DIV'), - topLeftHitArea: document.createElement('DIV'), - bottomRight: document.createElement('DIV'), - bottomRightHitArea: document.createElement('DIV') - }; - var width = 10; - var hitAreaWidth = 40; - - this.selectionHandles.topLeft.className = 'topLeftSelectionHandle'; - this.selectionHandles.topLeftHitArea.className = 'topLeftSelectionHandle-HitArea'; - this.selectionHandles.bottomRight.className = 'bottomRightSelectionHandle'; - this.selectionHandles.bottomRightHitArea.className = 'bottomRightSelectionHandle-HitArea'; - - this.selectionHandles.styles = { - topLeft: this.selectionHandles.topLeft.style, - topLeftHitArea: this.selectionHandles.topLeftHitArea.style, - bottomRight: this.selectionHandles.bottomRight.style, - bottomRightHitArea: this.selectionHandles.bottomRightHitArea.style - }; - - var hitAreaStyle = { - position: 'absolute', - height: hitAreaWidth + 'px', - width: hitAreaWidth + 'px', - 'border-radius': parseInt(hitAreaWidth / 1.5, 10) + 'px' - }; - - for (var prop in hitAreaStyle) { - if ((0, _object.hasOwnProperty)(hitAreaStyle, prop)) { - this.selectionHandles.styles.bottomRightHitArea[prop] = hitAreaStyle[prop]; - this.selectionHandles.styles.topLeftHitArea[prop] = hitAreaStyle[prop]; - } - } - - var handleStyle = { - position: 'absolute', - height: width + 'px', - width: width + 'px', - 'border-radius': parseInt(width / 1.5, 10) + 'px', - background: '#F5F5FF', - border: '1px solid #4285c8' - }; - - for (var _prop in handleStyle) { - if ((0, _object.hasOwnProperty)(handleStyle, _prop)) { - this.selectionHandles.styles.bottomRight[_prop] = handleStyle[_prop]; - this.selectionHandles.styles.topLeft[_prop] = handleStyle[_prop]; - } - } - this.main.appendChild(this.selectionHandles.topLeft); - this.main.appendChild(this.selectionHandles.bottomRight); - this.main.appendChild(this.selectionHandles.topLeftHitArea); - this.main.appendChild(this.selectionHandles.bottomRightHitArea); - } - }, { - key: 'isPartRange', - value: function isPartRange(row, col) { - if (this.wot.selections.area.cellRange) { - if (row != this.wot.selections.area.cellRange.to.row || col != this.wot.selections.area.cellRange.to.col) { - return true; - } - } - - return false; - } - }, { - key: 'updateMultipleSelectionHandlesPosition', - value: function updateMultipleSelectionHandlesPosition(row, col, top, left, width, height) { - var handleWidth = parseInt(this.selectionHandles.styles.topLeft.width, 10); - var hitAreaWidth = parseInt(this.selectionHandles.styles.topLeftHitArea.width, 10); - - this.selectionHandles.styles.topLeft.top = parseInt(top - handleWidth, 10) + 'px'; - this.selectionHandles.styles.topLeft.left = parseInt(left - handleWidth, 10) + 'px'; - - this.selectionHandles.styles.topLeftHitArea.top = parseInt(top - hitAreaWidth / 4 * 3, 10) + 'px'; - this.selectionHandles.styles.topLeftHitArea.left = parseInt(left - hitAreaWidth / 4 * 3, 10) + 'px'; - - this.selectionHandles.styles.bottomRight.top = parseInt(top + height, 10) + 'px'; - this.selectionHandles.styles.bottomRight.left = parseInt(left + width, 10) + 'px'; - - this.selectionHandles.styles.bottomRightHitArea.top = parseInt(top + height - hitAreaWidth / 4, 10) + 'px'; - this.selectionHandles.styles.bottomRightHitArea.left = parseInt(left + width - hitAreaWidth / 4, 10) + 'px'; - - if (this.settings.border.multipleSelectionHandlesVisible && this.settings.border.multipleSelectionHandlesVisible()) { - this.selectionHandles.styles.topLeft.display = 'block'; - this.selectionHandles.styles.topLeftHitArea.display = 'block'; - - if (this.isPartRange(row, col)) { - this.selectionHandles.styles.bottomRight.display = 'none'; - this.selectionHandles.styles.bottomRightHitArea.display = 'none'; - } else { - this.selectionHandles.styles.bottomRight.display = 'block'; - this.selectionHandles.styles.bottomRightHitArea.display = 'block'; - } - } else { - this.selectionHandles.styles.topLeft.display = 'none'; - this.selectionHandles.styles.bottomRight.display = 'none'; - this.selectionHandles.styles.topLeftHitArea.display = 'none'; - this.selectionHandles.styles.bottomRightHitArea.display = 'none'; - } - - if (row == this.wot.wtSettings.getSetting('fixedRowsTop') || col == this.wot.wtSettings.getSetting('fixedColumnsLeft')) { - this.selectionHandles.styles.topLeft.zIndex = '9999'; - this.selectionHandles.styles.topLeftHitArea.zIndex = '9999'; - } else { - this.selectionHandles.styles.topLeft.zIndex = ''; - this.selectionHandles.styles.topLeftHitArea.zIndex = ''; - } - } - - /** - * Show border around one or many cells - * - * @param {Array} corners - */ - - }, { - key: 'appear', - value: function appear(corners) { - if (this.disabled) { - return; - } - var isMultiple, fromTD, toTD, fromOffset, toOffset, containerOffset, top, minTop, left, minLeft, height, width, fromRow, fromColumn, toRow, toColumn, trimmingContainer, cornerOverlappingContainer, ilen; - - ilen = this.wot.wtTable.getRenderedRowsCount(); - - for (var i = 0; i < ilen; i++) { - var s = this.wot.wtTable.rowFilter.renderedToSource(i); - - if (s >= corners[0] && s <= corners[2]) { - fromRow = s; - break; - } - } - - for (var _i = ilen - 1; _i >= 0; _i--) { - var _s = this.wot.wtTable.rowFilter.renderedToSource(_i); - - if (_s >= corners[0] && _s <= corners[2]) { - toRow = _s; - break; - } - } - - ilen = this.wot.wtTable.getRenderedColumnsCount(); - - for (var _i2 = 0; _i2 < ilen; _i2++) { - var _s2 = this.wot.wtTable.columnFilter.renderedToSource(_i2); - - if (_s2 >= corners[1] && _s2 <= corners[3]) { - fromColumn = _s2; - break; - } - } - - for (var _i3 = ilen - 1; _i3 >= 0; _i3--) { - var _s3 = this.wot.wtTable.columnFilter.renderedToSource(_i3); - - if (_s3 >= corners[1] && _s3 <= corners[3]) { - toColumn = _s3; - break; - } - } - if (fromRow === void 0 || fromColumn === void 0) { - this.disappear(); - - return; - } - isMultiple = fromRow !== toRow || fromColumn !== toColumn; - fromTD = this.wot.wtTable.getCell(new _coords2.default(fromRow, fromColumn)); - toTD = isMultiple ? this.wot.wtTable.getCell(new _coords2.default(toRow, toColumn)) : fromTD; - fromOffset = (0, _element.offset)(fromTD); - toOffset = isMultiple ? (0, _element.offset)(toTD) : fromOffset; - containerOffset = (0, _element.offset)(this.wot.wtTable.TABLE); - - minTop = fromOffset.top; - height = toOffset.top + (0, _element.outerHeight)(toTD) - minTop; - minLeft = fromOffset.left; - width = toOffset.left + (0, _element.outerWidth)(toTD) - minLeft; - - top = minTop - containerOffset.top - 1; - left = minLeft - containerOffset.left - 1; - var style = (0, _element.getComputedStyle)(fromTD); - - if (parseInt(style.borderTopWidth, 10) > 0) { - top += 1; - height = height > 0 ? height - 1 : 0; - } - if (parseInt(style.borderLeftWidth, 10) > 0) { - left += 1; - width = width > 0 ? width - 1 : 0; - } - - this.topStyle.top = top + 'px'; - this.topStyle.left = left + 'px'; - this.topStyle.width = width + 'px'; - this.topStyle.display = 'block'; - - this.leftStyle.top = top + 'px'; - this.leftStyle.left = left + 'px'; - this.leftStyle.height = height + 'px'; - this.leftStyle.display = 'block'; - - var delta = Math.floor(this.settings.border.width / 2); - - this.bottomStyle.top = top + height - delta + 'px'; - this.bottomStyle.left = left + 'px'; - this.bottomStyle.width = width + 'px'; - this.bottomStyle.display = 'block'; - - this.rightStyle.top = top + 'px'; - this.rightStyle.left = left + width - delta + 'px'; - this.rightStyle.height = height + 1 + 'px'; - this.rightStyle.display = 'block'; - - if ((0, _browser.isMobileBrowser)() || !this.hasSetting(this.settings.border.cornerVisible) || this.isPartRange(toRow, toColumn)) { - this.cornerStyle.display = 'none'; - } else { - this.cornerStyle.top = top + height - 4 + 'px'; - this.cornerStyle.left = left + width - 4 + 'px'; - this.cornerStyle.borderRightWidth = this.cornerDefaultStyle.borderWidth; - this.cornerStyle.width = this.cornerDefaultStyle.width; - - // Hide the fill handle, so the possible further adjustments won't force unneeded scrollbars. - this.cornerStyle.display = 'none'; - - trimmingContainer = (0, _element.getTrimmingContainer)(this.wot.wtTable.TABLE); - - if (toColumn === this.wot.getSetting('totalColumns') - 1) { - cornerOverlappingContainer = toTD.offsetLeft + (0, _element.outerWidth)(toTD) + parseInt(this.cornerDefaultStyle.width, 10) / 2 >= (0, _element.innerWidth)(trimmingContainer); - - if (cornerOverlappingContainer) { - this.cornerStyle.left = Math.floor(left + width - 3 - parseInt(this.cornerDefaultStyle.width, 10) / 2) + 'px'; - this.cornerStyle.borderRightWidth = 0; - } - } - - if (toRow === this.wot.getSetting('totalRows') - 1) { - cornerOverlappingContainer = toTD.offsetTop + (0, _element.outerHeight)(toTD) + parseInt(this.cornerDefaultStyle.height, 10) / 2 >= (0, _element.innerHeight)(trimmingContainer); - - if (cornerOverlappingContainer) { - this.cornerStyle.top = Math.floor(top + height - 3 - parseInt(this.cornerDefaultStyle.height, 10) / 2) + 'px'; - this.cornerStyle.borderBottomWidth = 0; - } - } - - this.cornerStyle.display = 'block'; - } - - if ((0, _browser.isMobileBrowser)()) { - this.updateMultipleSelectionHandlesPosition(fromRow, fromColumn, top, left, width, height); - } - } - - /** - * Hide border - */ - - }, { - key: 'disappear', - value: function disappear() { - this.topStyle.display = 'none'; - this.leftStyle.display = 'none'; - this.bottomStyle.display = 'none'; - this.rightStyle.display = 'none'; - this.cornerStyle.display = 'none'; - - if ((0, _browser.isMobileBrowser)()) { - this.selectionHandles.styles.topLeft.display = 'none'; - this.selectionHandles.styles.bottomRight.display = 'none'; - } - } - - /** - * @param {Function} setting - * @returns {*} - */ - - }, { - key: 'hasSetting', - value: function hasSetting(setting) { - if (typeof setting === 'function') { - return setting(); - } - - return !!setting; - } - }]); - - return Border; -}(); - -exports.default = Border; - -/***/ }), -/* 168 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _unicode = __webpack_require__(17); - -var _mixed = __webpack_require__(22); - -var _string = __webpack_require__(32); - -var _array = __webpack_require__(2); - -var _element = __webpack_require__(0); - -var _handsontableEditor = __webpack_require__(169); - -var _handsontableEditor2 = _interopRequireDefault(_handsontableEditor); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var AutocompleteEditor = _handsontableEditor2.default.prototype.extend(); - -/** - * @private - * @editor AutocompleteEditor - * @class AutocompleteEditor - * @dependencies HandsontableEditor - */ -AutocompleteEditor.prototype.init = function () { - _handsontableEditor2.default.prototype.init.apply(this, arguments); - this.query = null; - this.strippedChoices = []; - this.rawChoices = []; -}; - -AutocompleteEditor.prototype.getValue = function () { - var _this2 = this; - - var selectedValue = this.rawChoices.find(function (value) { - var strippedValue = _this2.stripValueIfNeeded(value); - - return strippedValue === _this2.TEXTAREA.value; - }); - - if ((0, _mixed.isDefined)(selectedValue)) { - return selectedValue; - } - - return this.TEXTAREA.value; -}; - -AutocompleteEditor.prototype.createElements = function () { - _handsontableEditor2.default.prototype.createElements.apply(this, arguments); - - (0, _element.addClass)(this.htContainer, 'autocompleteEditor'); - (0, _element.addClass)(this.htContainer, window.navigator.platform.indexOf('Mac') === -1 ? '' : 'htMacScroll'); -}; - -var skipOne = false; -function onBeforeKeyDown(event) { - skipOne = false; - var editor = this.getActiveEditor(); - - if ((0, _unicode.isPrintableChar)(event.keyCode) || event.keyCode === _unicode.KEY_CODES.BACKSPACE || event.keyCode === _unicode.KEY_CODES.DELETE || event.keyCode === _unicode.KEY_CODES.INSERT) { - var timeOffset = 0; - - // on ctl+c / cmd+c don't update suggestion list - if (event.keyCode === _unicode.KEY_CODES.C && (event.ctrlKey || event.metaKey)) { - return; - } - if (!editor.isOpened()) { - timeOffset += 10; - } - - if (editor.htEditor) { - editor.instance._registerTimeout(setTimeout(function () { - editor.queryChoices(editor.TEXTAREA.value); - skipOne = true; - }, timeOffset)); - } - } -} - -AutocompleteEditor.prototype.prepare = function () { - this.instance.addHook('beforeKeyDown', onBeforeKeyDown); - _handsontableEditor2.default.prototype.prepare.apply(this, arguments); -}; - -AutocompleteEditor.prototype.open = function () { - // Ugly fix for handsontable which grab window object for autocomplete scroll listener instead table element. - this.TEXTAREA_PARENT.style.overflow = 'auto'; - _handsontableEditor2.default.prototype.open.apply(this, arguments); - this.TEXTAREA_PARENT.style.overflow = ''; - - var choicesListHot = this.htEditor.getInstance(); - var _this = this; - var trimDropdown = this.cellProperties.trimDropdown === void 0 ? true : this.cellProperties.trimDropdown; - - this.TEXTAREA.style.visibility = 'visible'; - this.focus(); - - choicesListHot.updateSettings({ - colWidths: trimDropdown ? [(0, _element.outerWidth)(this.TEXTAREA) - 2] : void 0, - width: trimDropdown ? (0, _element.outerWidth)(this.TEXTAREA) + (0, _element.getScrollbarWidth)() + 2 : void 0, - afterRenderer: function afterRenderer(TD, row, col, prop, value, cellProperties) { - var _this$cellProperties = _this.cellProperties, - filteringCaseSensitive = _this$cellProperties.filteringCaseSensitive, - allowHtml = _this$cellProperties.allowHtml; - - var indexOfMatch = void 0; - var match = void 0; - - value = (0, _mixed.stringify)(value); - - if (value && !allowHtml) { - indexOfMatch = filteringCaseSensitive === true ? value.indexOf(this.query) : value.toLowerCase().indexOf(_this.query.toLowerCase()); - - if (indexOfMatch !== -1) { - match = value.substr(indexOfMatch, _this.query.length); - value = value.replace(match, '' + match + ''); - } - } - TD.innerHTML = value; - }, - - autoColumnSize: true, - modifyColWidth: function modifyColWidth(width, col) { - // workaround for text overlapping the dropdown, not really accurate - var autoWidths = this.getPlugin('autoColumnSize').widths; - - if (autoWidths[col]) { - width = autoWidths[col]; - } - - return trimDropdown ? width : width + 15; - } - }); - - // Add additional space for autocomplete holder - this.htEditor.view.wt.wtTable.holder.parentNode.style['padding-right'] = (0, _element.getScrollbarWidth)() + 2 + 'px'; - - if (skipOne) { - skipOne = false; - } - - _this.instance._registerTimeout(setTimeout(function () { - _this.queryChoices(_this.TEXTAREA.value); - }, 0)); -}; - -AutocompleteEditor.prototype.close = function () { - _handsontableEditor2.default.prototype.close.apply(this, arguments); -}; -AutocompleteEditor.prototype.queryChoices = function (query) { - var _this3 = this; - - this.query = query; - var source = this.cellProperties.source; - - if (typeof source == 'function') { - source.call(this.cellProperties, query, function (choices) { - _this3.rawChoices = choices; - _this3.updateChoicesList(_this3.stripValuesIfNeeded(choices)); - }); - } else if (Array.isArray(source)) { - this.rawChoices = source; - this.updateChoicesList(this.stripValuesIfNeeded(source)); - } else { - this.updateChoicesList([]); - } -}; - -AutocompleteEditor.prototype.updateChoicesList = function (choices) { - var pos = (0, _element.getCaretPosition)(this.TEXTAREA); - var endPos = (0, _element.getSelectionEndPosition)(this.TEXTAREA); - var sortByRelevanceSetting = this.cellProperties.sortByRelevance; - var filterSetting = this.cellProperties.filter; - var orderByRelevance = null; - var highlightIndex = null; - - if (sortByRelevanceSetting) { - orderByRelevance = AutocompleteEditor.sortByRelevance(this.stripValueIfNeeded(this.getValue()), choices, this.cellProperties.filteringCaseSensitive); - } - var orderByRelevanceLength = Array.isArray(orderByRelevance) ? orderByRelevance.length : 0; - - if (filterSetting === false) { - if (orderByRelevanceLength) { - highlightIndex = orderByRelevance[0]; - } - } else { - var sorted = []; - - for (var i = 0, choicesCount = choices.length; i < choicesCount; i++) { - if (sortByRelevanceSetting && orderByRelevanceLength <= i) { - break; - } - if (orderByRelevanceLength) { - sorted.push(choices[orderByRelevance[i]]); - } else { - sorted.push(choices[i]); - } - } - - highlightIndex = 0; - choices = sorted; - } - - this.strippedChoices = choices; - this.htEditor.loadData((0, _array.pivot)([choices])); - - this.updateDropdownHeight(); - - this.flipDropdownIfNeeded(); - - if (this.cellProperties.strict === true) { - this.highlightBestMatchingChoice(highlightIndex); - } - - this.instance.listen(); - this.TEXTAREA.focus(); - (0, _element.setCaretPosition)(this.TEXTAREA, pos, pos === endPos ? void 0 : endPos); -}; - -AutocompleteEditor.prototype.flipDropdownIfNeeded = function () { - var textareaOffset = (0, _element.offset)(this.TEXTAREA); - var textareaHeight = (0, _element.outerHeight)(this.TEXTAREA); - var dropdownHeight = this.getDropdownHeight(); - var trimmingContainer = (0, _element.getTrimmingContainer)(this.instance.view.wt.wtTable.TABLE); - var trimmingContainerScrollTop = trimmingContainer.scrollTop; - var headersHeight = (0, _element.outerHeight)(this.instance.view.wt.wtTable.THEAD); - var containerOffset = { - row: 0, - col: 0 - }; - - if (trimmingContainer !== window) { - containerOffset = (0, _element.offset)(trimmingContainer); - } - - var spaceAbove = textareaOffset.top - containerOffset.top - headersHeight + trimmingContainerScrollTop; - var spaceBelow = trimmingContainer.scrollHeight - spaceAbove - headersHeight - textareaHeight; - var flipNeeded = dropdownHeight > spaceBelow && spaceAbove > spaceBelow; - - if (flipNeeded) { - this.flipDropdown(dropdownHeight); - } else { - this.unflipDropdown(); - } - - this.limitDropdownIfNeeded(flipNeeded ? spaceAbove : spaceBelow, dropdownHeight); - - return flipNeeded; -}; - -AutocompleteEditor.prototype.limitDropdownIfNeeded = function (spaceAvailable, dropdownHeight) { - if (dropdownHeight > spaceAvailable) { - var tempHeight = 0; - var i = 0; - var lastRowHeight = 0; - var height = null; - - do { - lastRowHeight = this.htEditor.getRowHeight(i) || this.htEditor.view.wt.wtSettings.settings.defaultRowHeight; - tempHeight += lastRowHeight; - i++; - } while (tempHeight < spaceAvailable); - - height = tempHeight - lastRowHeight; - - if (this.htEditor.flipped) { - this.htEditor.rootElement.style.top = parseInt(this.htEditor.rootElement.style.top, 10) + dropdownHeight - height + 'px'; - } - - this.setDropdownHeight(tempHeight - lastRowHeight); - } -}; - -AutocompleteEditor.prototype.flipDropdown = function (dropdownHeight) { - var dropdownStyle = this.htEditor.rootElement.style; - - dropdownStyle.position = 'absolute'; - dropdownStyle.top = -dropdownHeight + 'px'; - - this.htEditor.flipped = true; -}; - -AutocompleteEditor.prototype.unflipDropdown = function () { - var dropdownStyle = this.htEditor.rootElement.style; - - if (dropdownStyle.position === 'absolute') { - dropdownStyle.position = ''; - dropdownStyle.top = ''; - } - - this.htEditor.flipped = void 0; -}; - -AutocompleteEditor.prototype.updateDropdownHeight = function () { - var currentDropdownWidth = this.htEditor.getColWidth(0) + (0, _element.getScrollbarWidth)() + 2; - var trimDropdown = this.cellProperties.trimDropdown; - - this.htEditor.updateSettings({ - height: this.getDropdownHeight(), - width: trimDropdown ? void 0 : currentDropdownWidth - }); - - this.htEditor.view.wt.wtTable.alignOverlaysWithTrimmingContainer(); -}; - -AutocompleteEditor.prototype.setDropdownHeight = function (height) { - this.htEditor.updateSettings({ - height: height - }); -}; - -AutocompleteEditor.prototype.finishEditing = function (restoreOriginalValue) { - if (!restoreOriginalValue) { - this.instance.removeHook('beforeKeyDown', onBeforeKeyDown); - } - _handsontableEditor2.default.prototype.finishEditing.apply(this, arguments); -}; - -AutocompleteEditor.prototype.highlightBestMatchingChoice = function (index) { - if (typeof index === 'number') { - this.htEditor.selectCell(index, 0); - } else { - this.htEditor.deselectCell(); - } -}; - -/** - * Filters and sorts by relevance - * @param value - * @param choices - * @param caseSensitive - * @returns {Array} array of indexes in original choices array - */ -AutocompleteEditor.sortByRelevance = function (value, choices, caseSensitive) { - var choicesRelevance = []; - var currentItem = void 0; - var valueLength = value.length; - var valueIndex = void 0; - var charsLeft = void 0; - var result = []; - var i = void 0; - var choicesCount = choices.length; - - if (valueLength === 0) { - for (i = 0; i < choicesCount; i++) { - result.push(i); - } - return result; - } - - for (i = 0; i < choicesCount; i++) { - currentItem = (0, _string.stripTags)((0, _mixed.stringify)(choices[i])); - - if (caseSensitive) { - valueIndex = currentItem.indexOf(value); - } else { - valueIndex = currentItem.toLowerCase().indexOf(value.toLowerCase()); - } - - if (valueIndex !== -1) { - charsLeft = currentItem.length - valueIndex - valueLength; - - choicesRelevance.push({ - baseIndex: i, - index: valueIndex, - charsLeft: charsLeft, - value: currentItem - }); - } - } - - choicesRelevance.sort(function (a, b) { - - if (b.index === -1) { - return -1; - } - if (a.index === -1) { - return 1; - } - - if (a.index < b.index) { - return -1; - } else if (b.index < a.index) { - return 1; - } else if (a.index === b.index) { - if (a.charsLeft < b.charsLeft) { - return -1; - } else if (a.charsLeft > b.charsLeft) { - return 1; - } - } - - return 0; - }); - - for (i = 0, choicesCount = choicesRelevance.length; i < choicesCount; i++) { - result.push(choicesRelevance[i].baseIndex); - } - - return result; -}; - -AutocompleteEditor.prototype.getDropdownHeight = function () { - var firstRowHeight = this.htEditor.getInstance().getRowHeight(0) || 23; - var visibleRows = this.cellProperties.visibleRows; - - return this.strippedChoices.length >= visibleRows ? visibleRows * firstRowHeight : this.strippedChoices.length * firstRowHeight + 8; -}; - -AutocompleteEditor.prototype.stripValueIfNeeded = function (value) { - return this.stripValuesIfNeeded([value])[0]; -}; - -AutocompleteEditor.prototype.stripValuesIfNeeded = function (values) { - var allowHtml = this.cellProperties.allowHtml; - - - var stringifiedValues = (0, _array.arrayMap)(values, function (value) { - return (0, _mixed.stringify)(value); - }); - var strippedValues = (0, _array.arrayMap)(stringifiedValues, function (value) { - return allowHtml ? value : (0, _string.stripTags)(value); - }); - - return strippedValues; -}; - -AutocompleteEditor.prototype.allowKeyEventPropagation = function (keyCode) { - var selected = { row: this.htEditor.getSelectedRange() ? this.htEditor.getSelectedRange().from.row : -1 }; - var allowed = false; - - if (keyCode === _unicode.KEY_CODES.ARROW_DOWN && selected.row > 0 && selected.row < this.htEditor.countRows() - 1) { - allowed = true; - } - if (keyCode === _unicode.KEY_CODES.ARROW_UP && selected.row > -1) { - allowed = true; - } - - return allowed; -}; - -AutocompleteEditor.prototype.discardEditor = function (result) { - _handsontableEditor2.default.prototype.discardEditor.apply(this, arguments); - - this.instance.view.render(); -}; - -exports.default = AutocompleteEditor; - -/***/ }), -/* 169 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _unicode = __webpack_require__(17); - -var _object = __webpack_require__(1); - -var _element = __webpack_require__(0); - -var _event = __webpack_require__(8); - -var _textEditor = __webpack_require__(51); - -var _textEditor2 = _interopRequireDefault(_textEditor); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var HandsontableEditor = _textEditor2.default.prototype.extend(); - -/** - * @private - * @editor HandsontableEditor - * @class HandsontableEditor - * @dependencies TextEditor - */ -HandsontableEditor.prototype.createElements = function () { - _textEditor2.default.prototype.createElements.apply(this, arguments); - - var DIV = document.createElement('DIV'); - DIV.className = 'handsontableEditor'; - this.TEXTAREA_PARENT.appendChild(DIV); - - this.htContainer = DIV; - this.assignHooks(); -}; - -HandsontableEditor.prototype.prepare = function (td, row, col, prop, value, cellProperties) { - _textEditor2.default.prototype.prepare.apply(this, arguments); - - var parent = this; - var options = { - startRows: 0, - startCols: 0, - minRows: 0, - minCols: 0, - className: 'listbox', - copyPaste: false, - autoColumnSize: false, - autoRowSize: false, - readOnly: true, - fillHandle: false, - afterOnCellMouseDown: function afterOnCellMouseDown(_, coords) { - var value = this.getSourceData(coords.row, coords.col); - - // if the value is undefined then it means we don't want to set the value - if (value !== void 0) { - parent.setValue(value); - } - parent.instance.destroyEditor(); - } - }; - - if (this.cellProperties.handsontable) { - (0, _object.extend)(options, cellProperties.handsontable); - } - this.htOptions = options; -}; - -var onBeforeKeyDown = function onBeforeKeyDown(event) { - if ((0, _event.isImmediatePropagationStopped)(event)) { - return; - } - var editor = this.getActiveEditor(); - - var innerHOT = editor.htEditor.getInstance(); - - var rowToSelect; - var selectedRow; - - if (event.keyCode == _unicode.KEY_CODES.ARROW_DOWN) { - if (!innerHOT.getSelected() && !innerHOT.flipped) { - rowToSelect = 0; - } else if (innerHOT.getSelected()) { - if (innerHOT.flipped) { - rowToSelect = innerHOT.getSelected()[0] + 1; - } else if (!innerHOT.flipped) { - selectedRow = innerHOT.getSelected()[0]; - var lastRow = innerHOT.countRows() - 1; - rowToSelect = Math.min(lastRow, selectedRow + 1); - } - } - } else if (event.keyCode == _unicode.KEY_CODES.ARROW_UP) { - if (!innerHOT.getSelected() && innerHOT.flipped) { - rowToSelect = innerHOT.countRows() - 1; - } else if (innerHOT.getSelected()) { - if (innerHOT.flipped) { - selectedRow = innerHOT.getSelected()[0]; - rowToSelect = Math.max(0, selectedRow - 1); - } else { - selectedRow = innerHOT.getSelected()[0]; - rowToSelect = selectedRow - 1; - } - } - } - - if (rowToSelect !== void 0) { - if (rowToSelect < 0 || innerHOT.flipped && rowToSelect > innerHOT.countRows() - 1) { - innerHOT.deselectCell(); - } else { - innerHOT.selectCell(rowToSelect, 0); - } - if (innerHOT.getData().length) { - event.preventDefault(); - (0, _event.stopImmediatePropagation)(event); - - editor.instance.listen(); - editor.TEXTAREA.focus(); - } - } -}; - -HandsontableEditor.prototype.open = function () { - this.instance.addHook('beforeKeyDown', onBeforeKeyDown); - - _textEditor2.default.prototype.open.apply(this, arguments); - - if (this.htEditor) { - this.htEditor.destroy(); - } - // Construct and initialise a new Handsontable - this.htEditor = new this.instance.constructor(this.htContainer, this.htOptions); - this.htEditor.init(); - - if (this.cellProperties.strict) { - this.htEditor.selectCell(0, 0); - this.TEXTAREA.style.visibility = 'hidden'; - } else { - this.htEditor.deselectCell(); - this.TEXTAREA.style.visibility = 'visible'; - } - - (0, _element.setCaretPosition)(this.TEXTAREA, 0, this.TEXTAREA.value.length); -}; - -HandsontableEditor.prototype.close = function () { - this.instance.removeHook('beforeKeyDown', onBeforeKeyDown); - this.instance.listen(); - - _textEditor2.default.prototype.close.apply(this, arguments); -}; - -HandsontableEditor.prototype.focus = function () { - this.instance.listen(); - _textEditor2.default.prototype.focus.apply(this, arguments); -}; - -HandsontableEditor.prototype.beginEditing = function (initialValue) { - var onBeginEditing = this.instance.getSettings().onBeginEditing; - - if (onBeginEditing && onBeginEditing() === false) { - return; - } - _textEditor2.default.prototype.beginEditing.apply(this, arguments); -}; - -HandsontableEditor.prototype.finishEditing = function (isCancelled, ctrlDown) { - if (this.htEditor && this.htEditor.isListening()) { - // if focus is still in the HOT editor - - this.instance.listen(); // return the focus to the parent HOT instance - } - - if (this.htEditor && this.htEditor.getSelected()) { - var value = this.htEditor.getInstance().getValue(); - - if (value !== void 0) { - // if the value is undefined then it means we don't want to set the value - this.setValue(value); - } - } - - return _textEditor2.default.prototype.finishEditing.apply(this, arguments); -}; - -HandsontableEditor.prototype.assignHooks = function () { - var _this = this; - - this.instance.addHook('afterDestroy', function () { - if (_this.htEditor) { - _this.htEditor.destroy(); - } - }); -}; - -exports.default = HandsontableEditor; - -/***/ }), -/* 170 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.getNormalizedDate = getNormalizedDate; -/* eslint-disable import/prefer-default-export */ - -/** - * Get normalized Date object for the ISO formatted date strings. - * Natively, the date object parsed from a ISO 8601 string will be offsetted by the timezone difference, which may result in returning a wrong date. - * See: Github issue #3338. - * - * @param {String} dateString String representing the date. - * @returns {Date} The proper Date object. - */ -function getNormalizedDate(dateString) { - var nativeDate = new Date(dateString); - - // NaN if dateString is not in ISO format - if (!isNaN(new Date(dateString + "T00:00").getDate())) { - - // Compensate timezone offset - return new Date(nativeDate.getTime() + nativeDate.getTimezoneOffset() * 60000); - } - - return nativeDate; -} - -/***/ }), -/* 171 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * SheetClip - Spreadsheet Clipboard Parser - * version 0.2 - * - * This tiny library transforms JavaScript arrays to strings that are pasteable by LibreOffice, OpenOffice, - * Google Docs and Microsoft Excel. - * - * Copyright 2012, Marcin Warpechowski - * Licensed under the MIT license. - * http://github.com/warpech/sheetclip/ - */ -/*jslint white: true*/ -(function (global) { - "use strict"; - - function countQuotes(str) { - return str.split('"').length - 1; - } - - var SheetClip = { - /** - * Decode spreadsheet string into array - * - * @param {String} str - * @returns {Array} - */ - parse: function parse(str) { - var r, - rLen, - rows, - arr = [], - a = 0, - c, - cLen, - multiline, - last; - - rows = str.split('\n'); - - if (rows.length > 1 && rows[rows.length - 1] === '') { - rows.pop(); - } - for (r = 0, rLen = rows.length; r < rLen; r += 1) { - rows[r] = rows[r].split('\t'); - - for (c = 0, cLen = rows[r].length; c < cLen; c += 1) { - if (!arr[a]) { - arr[a] = []; - } - if (multiline && c === 0) { - last = arr[a].length - 1; - arr[a][last] = arr[a][last] + '\n' + rows[r][0]; - - if (multiline && countQuotes(rows[r][0]) & 1) { - //& 1 is a bitwise way of performing mod 2 - multiline = false; - arr[a][last] = arr[a][last].substring(0, arr[a][last].length - 1).replace(/""/g, '"'); - } - } else { - if (c === cLen - 1 && rows[r][c].indexOf('"') === 0 && countQuotes(rows[r][c]) & 1) { - arr[a].push(rows[r][c].substring(1).replace(/""/g, '"')); - multiline = true; - } else { - arr[a].push(rows[r][c].replace(/""/g, '"')); - multiline = false; - } - } - } - if (!multiline) { - a += 1; - } - } - - return arr; - }, - - /** - * Encode array into valid spreadsheet string - * - * @param arr - * @returns {String} - */ - stringify: function stringify(arr) { - var r, - rLen, - c, - cLen, - str = '', - val; - - for (r = 0, rLen = arr.length; r < rLen; r += 1) { - cLen = arr[r].length; - - for (c = 0; c < cLen; c += 1) { - if (c > 0) { - str += '\t'; - } - val = arr[r][c]; - - if (typeof val === 'string') { - if (val.indexOf('\n') > -1) { - str += '"' + val.replace(/"/g, '""') + '"'; - } else { - str += val; - } - } else if (val === null || val === void 0) { - // void 0 resolves to undefined - str += ''; - } else { - str += val; - } - } - - if (r !== rLen - 1) { - str += '\n'; - } - } - - return str; - } - }; - - if (true) { - exports.parse = SheetClip.parse; - exports.stringify = SheetClip.stringify; - } else { - global.SheetClip = SheetClip; - } -})(window); - -/***/ }), -/* 172 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.RecordTranslator = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -exports.registerIdentity = registerIdentity; -exports.getTranslator = getTranslator; - -var _core = __webpack_require__(82); - -var _core2 = _interopRequireDefault(_core); - -var _object = __webpack_require__(1); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class RecordTranslator - * @util - */ -var RecordTranslator = function () { - function RecordTranslator(hot) { - _classCallCheck(this, RecordTranslator); - - this.hot = hot; - } - - /** - * Translate physical row index into visual. - * - * @param {Number} row Physical row index. - * @returns {Number} Returns visual row index. - */ - - - _createClass(RecordTranslator, [{ - key: 'toVisualRow', - value: function toVisualRow(row) { - return this.hot.runHooks('unmodifyRow', row); - } - - /** - * Translate physical column index into visual. - * - * @param {Number} column Physical column index. - * @returns {Number} Returns visual column index. - */ - - }, { - key: 'toVisualColumn', - value: function toVisualColumn(column) { - return this.hot.runHooks('unmodifyCol', column); - } - - /** - * Translate physical coordinates into visual. Can be passed as separate 2 arguments (row, column) or as an object in first - * argument with `row` and `column` keys. - * - * @param {Number|Object} row Physical coordinates or row index. - * @param {Number} [column] Physical column index. - * @returns {Object|Array} Returns an object with visual records or an array if coordinates passed as separate arguments. - */ - - }, { - key: 'toVisual', - value: function toVisual(row, column) { - var result = void 0; - - if ((0, _object.isObject)(row)) { - result = { - row: this.toVisualRow(row.row), - column: this.toVisualColumn(row.column) - }; - } else { - result = [this.toVisualRow(row), this.toVisualColumn(column)]; - } - - return result; - } - - /** - * Translate visual row index into physical. - * - * @param {Number} row Visual row index. - * @returns {Number} Returns physical row index. - */ - - }, { - key: 'toPhysicalRow', - value: function toPhysicalRow(row) { - return this.hot.runHooks('modifyRow', row); - } - - /** - * Translate visual column index into physical. - * - * @param {Number} column Visual column index. - * @returns {Number} Returns physical column index. - */ - - }, { - key: 'toPhysicalColumn', - value: function toPhysicalColumn(column) { - return this.hot.runHooks('modifyCol', column); - } - - /** - * Translate visual coordinates into physical. Can be passed as separate 2 arguments (row, column) or as an object in first - * argument with `row` and `column` keys. - * - * @param {Number|Object} row Visual coordinates or row index. - * @param {Number} [column] Visual column index. - * @returns {Object|Array} Returns an object with physical records or an array if coordinates passed as separate arguments. - */ - - }, { - key: 'toPhysical', - value: function toPhysical(row, column) { - var result = void 0; - - if ((0, _object.isObject)(row)) { - result = { - row: this.toPhysicalRow(row.row), - column: this.toPhysicalColumn(row.column) - }; - } else { - result = [this.toPhysicalRow(row), this.toPhysicalColumn(column)]; - } - - return result; - } - }]); - - return RecordTranslator; -}(); - -exports.RecordTranslator = RecordTranslator; - - -var identities = new WeakMap(); -var translatorSingletons = new WeakMap(); - -function registerIdentity(identity, hot) { - identities.set(identity, hot); -} - -function getTranslator(identity) { - var singleton = void 0; - - if (!(identity instanceof _core2.default)) { - if (!identities.has(identity)) { - throw Error('Record translator was not registered for this object identity'); - } - identity = identities.get(identity); - } - if (translatorSingletons.has(identity)) { - singleton = translatorSingletons.get(identity); - } else { - singleton = new RecordTranslator(identity); - translatorSingletons.set(identity, singleton); - } - - return singleton; -} - -/***/ }), -/* 173 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.registerAsRootInstance = registerAsRootInstance; -exports.hasValidParameter = hasValidParameter; -exports.isRootInstance = isRootInstance; -var holder = exports.holder = new WeakMap(); - -var rootInstanceSymbol = exports.rootInstanceSymbol = Symbol('rootInstance'); - -/** - * Register an object as a root instance. - * - * @param {Object} object An object to associate with root instance flag. - */ -function registerAsRootInstance(object) { - holder.set(object, true); -} - -/** - * Check if the source of the root indication call is valid. - * - * @param {Symbol} rootSymbol A symbol as a source of truth. - * @return {Boolean} - */ -function hasValidParameter(rootSymbol) { - return rootSymbol === rootInstanceSymbol; -} - -/** - * Check if passed an object was flagged as a root instance. - * - * @param {Object} object An object to check. - * @return {Boolean} - */ -function isRootInstance(object) { - return holder.has(object); -} - -/***/ }), -/* 174 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _mixed = __webpack_require__(22); - -var _object = __webpack_require__(1); - -/** - * @alias Options - * @constructor - * @description - - * ## Constructor options - * - * Constructor options are applied using an object literal passed as a second argument to the Handsontable constructor. - * - * ```js - * var hot = new Handsontable(document.getElementById('example1'), { - * data: myArray, - * width: 400, - * height: 300 - * }); - * ``` - * - * --- - * ## Cascading configuration - * - * Handsontable 0.9 and newer is using *Cascading Configuration*, which is a fast way to provide configuration options - * for the entire table, including its columns and particular cells. - * - * Consider the following example: - * ```js - * var hot = new Handsontable(document.getElementById('example'), { - * readOnly: true, - * columns: [ - * {readOnly: false}, - * {}, - * {} - * ], - * cells: function (row, col, prop) { - * var cellProperties = {}; - * - * if (row === 0 && col === 0) { - * cellProperties.readOnly = true; - * } - * - * return cellProperties; - * } - * }); - * ``` - * - * The above notation will result in all TDs being *read only*, except for first column TDs which will be *editable*, except for the TD in top left corner which will still be *read only*. - * - * ### The Cascading Configuration model - * - * ##### 1. Constructor - * - * Configuration options that are provided using first-level `handsontable(container, {option: "value"})` and `updateSettings` method. - * - * ##### 2. Columns - * - * Configuration options that are provided using second-level object `handsontable(container, {columns: {option: "value"}]})` - * - * ##### 3. Cells - * - * Configuration options that are provided using third-level function `handsontable(container, {cells: function: (row, col, prop){ }})` - * - * --- - * ## Architecture performance - * - * The Cascading Configuration model is based on prototypical inheritance. It is much faster and memory efficient compared - * to the previous model that used jQuery extend. See: [http://jsperf.com/extending-settings](http://jsperf.com/extending-settings). - * - * --- - * __Important notice:__ In order for the data separation to work properly, make sure that each instance of Handsontable has a unique `id`. - */ -function DefaultSettings() {}; - -DefaultSettings.prototype = { - /** - * License key for commercial version of Handsontable. - * - * @pro - * @type {String} - * @default 'trial' - */ - licenseKey: 'trial', - - /** - * @description - * Initial data source that will be bound to the data grid __by reference__ (editing data grid alters the data source). - * Can be declared as an Array of Arrays, Array of Objects or a Function. - * - * See [Understanding binding as reference](http://docs.handsontable.com/tutorial-data-binding.html#page-reference). - * - * @type {Array|Function} - * @default undefined - */ - data: void 0, - - /** - * @description - * Defines the structure of a new row when data source is an array of objects. - * - * See [data-schema](http://docs.handsontable.com/tutorial-data-sources.html#page-data-schema) for examples. - * - * @type {Object} - * @default undefined - */ - dataSchema: void 0, - - /** - * Width of the grid. Can be a value or a function that returns a value. - * - * @type {Number|Function} - * @default undefined - */ - width: void 0, - - /** - * Height of the grid. Can be a number or a function that returns a number. - * - * @type {Number|Function} - * @default undefined - */ - height: void 0, - - /** - * @description - * Initial number of rows. - * - * __Notice:__ This option only has effect in Handsontable constructor and only if `data` option is not provided - * - * @type {Number} - * @default 5 - */ - startRows: 5, - - /** - * @description - * Initial number of columns. - * - * __Notice:__ This option only has effect in Handsontable constructor and only if `data` option is not provided - * - * @type {Number} - * @default 5 - */ - startCols: 5, - - /** - * Setting `true` or `false` will enable or disable the default row headers (1, 2, 3). - * You can also define an array `['One', 'Two', 'Three', ...]` or a function to define the headers. - * If a function is set the index of the row is passed as a parameter. - * - * @type {Boolean|Array|Function} - * @default null - * @example - * ```js - * ... - * // as boolean - * rowHeaders: true, - * ... - * - * ... - * // as array - * rowHeaders: [1, 2, 3], - * ... - * - * ... - * // as function - * rowHeaders: function(index) { - * return index + ': AB'; - * }, - * ... - * ``` - */ - rowHeaders: void 0, - - /** - * Setting `true` or `false` will enable or disable the default column headers (A, B, C). - * You can also define an array `['One', 'Two', 'Three', ...]` or a function to define the headers. - * If a function is set, then the index of the column is passed as a parameter. - * - * @type {Boolean|Array|Function} - * @default null - * @example - * ```js - * ... - * // as boolean - * colHeaders: true, - * ... - * - * ... - * // as array - * colHeaders: ['A', 'B', 'C'], - * ... - * - * ... - * // as function - * colHeaders: function(index) { - * return index + ': AB'; - * }, - * ... - * ``` - */ - colHeaders: null, - - /** - * Defines column widths in pixels. Accepts number, string (that will be converted to a number), - * array of numbers (if you want to define column width separately for each column) or a - * function (if you want to set column width dynamically on each render). - * - * @type {Array|Function|Number|String} - * @default undefined - * @example - * ```js - * ... - * // as numeric, for each column. - * colWidths: 100, - * ... - * - * * ... - * // as string, for each column. - * colWidths: '100px', - * ... - * - * ... - * // as array, based on visual indexes. The rest of the columns have a default width. - * colWidths: [100, 120, 90], - * ... - * - * ... - * // as function, based on visual indexes. - * colWidths: function(index) { - * return index * 10; - * }, - * ... - * ``` - */ - colWidths: void 0, - - /** - * Defines row heights in pixels. Accepts numbers, strings (that will be converted into a number), - * array of numbers (if you want to define row height separately for each row) or a - * function (if you want to set row height dynamically on each render). - * If the ManualRowResize or AutoRowSize plugins are enabled, this is also the minimum height that can be set - * via either of those two plugins. - * Height should be equal or greater than 23px. Table is rendered incorrectly if height is less than 23px. - * - * @type {Array|Function|Number|String} - * @default undefined - * @example - * ```js - * ... - * // as numeric, for each row. - * rowHeights: 100, - * ... - * - * * ... - * // as string, for each row. - * rowHeights: '100px', - * ... - * - * ... - * // as array, based on visual indexes. The rest of the rows have a default height. - * rowHeights: [100, 120, 90], - * ... - * - * ... - * // as function, based on visual indexes. - * rowHeights: function(index) { - * return index * 10; - * }, - * ... - * ``` - */ - rowHeights: void 0, - - /** - * @description - * Defines the cell properties and data binding for certain columns. - * - * __Notice:__ Using this option sets a fixed number of columns (options `startCols`, `minCols`, `maxCols` will be ignored). - * - * See [documentation -> datasources.html](http://docs.handsontable.com/tutorial-data-sources.html#page-nested) for examples. - * - * @type {Array|Function} - * @default undefined - * @example - * ```js - * ... - * // as an array of objects. Order of the objects in array is representation of physical indexes. - * columns: [ - * { - * // column options for the first column - * type: 'numeric', - * format: '0,0.00 $' - * }, - * { - * // column options for the second column - * type: 'text', - * readOnly: true - * } - * ], - * ... - * - * // or as function, based on physical indexes - * ... - * columns: function(index) { - * return { - * type: index > 0 ? 'numeric' : 'text', - * readOnly: index < 1 - * } - * } - * ... - * ``` - */ - columns: void 0, - - /** - * @description - * Defines the cell properties for given `row`, `col`, `prop` coordinates. - * Any constructor or column option may be overwritten for a particular cell (row/column combination) - * using the `cells` property in the Handsontable constructor. - * - * __Note:__ Parameters `row` and `col` always represent __physical indexes__. Example below show how to execute - * operations based on the __visual__ representation of Handsontable. - * - * Possible values of `prop`: - * - property name for column's data source object, when dataset is an [array of objects](/tutorial-data-sources.html#page-object) - * - the same number as `col`, when dataset is an [array of arrays](/tutorial-data-sources.html#page-array) - * - * @type {Function} - * @default undefined - * @example - * ```js - * ... - * cells: function (row, col, prop) { - * var cellProperties = {}; - * var visualRowIndex = this.instance.toVisualRow(row); - * var visualColIndex = this.instance.toVisualColumn(col); - * - * if (visualRowIndex === 0 && visualColIndex === 0) { - * cellProperties.readOnly = true; - * } - * - * return cellProperties; - * }, - * ... - * ``` - */ - cells: void 0, - - /** - * Any constructor or column option may be overwritten for a particular cell (row/column combination), using `cell` - * array passed to the Handsontable constructor. - * - * @type {Array} - * @default [] - * @example - * ```js - * ... - * cell: [ - * {row: 0, col: 0, readOnly: true} - * ], - * ... - * ``` - */ - cell: [], - - /** - * @description - * If `true`, enables the {@link Comments} plugin, which enables an option to apply cell comments through the context menu - * (configurable with context menu keys `commentsAddEdit`, `commentsRemove`). - * - * To initialize Handsontable with predefined comments, provide cell coordinates and comment text values in a form of an array. - * - * See [Comments](http://docs.handsontable.com/demo-comments_.html) demo for examples. - * - * @since 0.11.0 - * @type {Boolean|Array} - * @default false - * @example - * ```js - * ... - * comments: [{row: 1, col: 1, comment: {value: "Test comment"}}], - * ... - * ``` - */ - comments: false, - - /** - * @description - * If `true`, enables the Custom Borders plugin, which enables an option to apply custom borders through the context menu (configurable with context menu key `borders`). - * - * To initialize Handsontable with predefined custom borders, provide cell coordinates and border styles in a form of an array. - * - * See [Custom Borders](http://docs.handsontable.com/demo-custom-borders.html) demo for examples. - * - * @since 0.11.0 - * @type {Boolean|Array} - * @default false - * @example - * ```js - * ... - * customBorders: [ - * {range: { - * from: {row: 1, col: 1}, - * to: {row: 3, col: 4}}, - * left: {}, - * right: {}, - * top: {}, - * bottom: {} - * } - * ], - * ... - * - * // or - * ... - * customBorders: [ - * {row: 2, col: 2, left: {width: 2, color: 'red'}, - * right: {width: 1, color: 'green'}, top: '', bottom: ''} - * ], - * ... - * ``` - */ - customBorders: false, - - /** - * Minimum number of rows. At least that number of rows will be created during initialization. - * - * @type {Number} - * @default 0 - */ - minRows: 0, - - /** - * Minimum number of columns. At least that number of columns will be created during initialization. - * - * @type {Number} - * @default 0 - */ - minCols: 0, - - /** - * Maximum number of rows. If set to a value lower than the initial row count, the data will be trimmed to the provided value as the number of rows. - * - * @type {Number} - * @default Infinity - */ - maxRows: Infinity, - - /** - * Maximum number of cols. If set to a value lower than the initial col count, the data will be trimmed to the provided value as the number of cols. - * - * @type {Number} - * @default Infinity - */ - maxCols: Infinity, - - /** - * When set to 1 (or more), Handsontable will add a new row at the end of grid if there are no more empty rows. - * (unless the number of rows exceeds the one set in the `maxRows` property) - * - * @type {Number} - * @default 0 - */ - minSpareRows: 0, - - /** - * When set to 1 (or more), Handsontable will add a new column at the end of grid if there are no more empty columns. - * (unless the number of rows exceeds the one set in the `maxCols` property) - * - * @type {Number} - * @default 0 - */ - minSpareCols: 0, - - /** - * If set to `false`, there won't be an option to insert new rows in the Context Menu. - * - * @type {Boolean} - * @default true - */ - allowInsertRow: true, - - /** - * If set to `false`, there won't be an option to insert new columns in the Context Menu. - * - * @type {Boolean} - * @default true - */ - allowInsertColumn: true, - - /** - * If set to `false`, there won't be an option to remove rows in the Context Menu. - * - * @type {Boolean} - * @default true - */ - allowRemoveRow: true, - - /** - * If set to `false`, there won't be an option to remove columns in the Context Menu. - * - * @type {Boolean} - * @default true - */ - allowRemoveColumn: true, - - /** - * If true, selection of multiple cells using keyboard or mouse is allowed. - * - * @type {Boolean} - * @default true - */ - multiSelect: true, - - /** - * Enables the fill handle (drag-down and copy-down) functionality, which shows a small rectangle in bottom - * right corner of the selected area, that let's you expand values to the adjacent cells. - * - * Possible values: `true` (to enable in all directions), `'vertical'` or `'horizontal'` (to enable in one direction), - * `false` (to disable completely). Setting to `true` enables the fillHandle plugin. - * - * Since 0.23.0 you can pass object to plugin which allows you to add more options for this functionality. If `autoInsertRow` - * option is `true`, fill-handler will create new rows till it reaches the last row. It is enabled by default. - * - * @example - * ```js - * ... - * fillHandle: true // enable plugin in all directions and with autoInsertRow as true - * ... - * // or - * ... - * fillHandle: 'vertical' // enable plugin in vertical direction and with autoInsertRow as true - * ... - * // or - * ... - * fillHandle: { // enable plugin in both directions and with autoInsertRow as false - * autoInsertRow: false, - * } - * // or - * ... - * fillHandle: { // enable plugin in vertical direction and with autoInsertRow as false - * autoInsertRow: false, - * direction: 'vertical' // 'vertical' or 'horizontal' - * } - * ``` - * - * @type {Boolean|String|Object} - * @default true - */ - fillHandle: true, - - /** - * Allows to specify the number of fixed (or *frozen*) rows at the top of the table. - * - * @type {Number} - * @default 0 - * @example - * ```js - * fixedRowsTop: 3 // This would freeze the top 3 rows of the table. - * ``` - */ - fixedRowsTop: 0, - - /** - * Allows to specify the number of fixed (or *frozen*) rows at the bottom of the table. - * - * @pro - * @type {Number} - * @default 0 - * @example - * ```js - * fixedRowsBottom: 3 // This would freeze the top 3 rows of the table. - * ``` - */ - fixedRowsBottom: 0, - - /** - * Allows to specify the number of fixed (or *frozen*) columns on the left of the table. - * - * @type {Number} - * @default 0 - * @example - * ```js - * fixedColumnsLeft: 3 // This would freeze the top 3 rows of the table. - * ``` - */ - fixedColumnsLeft: 0, - - /** - * If `true`, mouse click outside the grid will deselect the current selection. - * Can be a function that takes the click event target and returns a boolean. - * - * @type {Boolean|Function} - * @default true - */ - outsideClickDeselects: true, - - /** - * If `true`, ENTER begins editing mode (like in Google Docs). If `false`, ENTER moves to next - * row (like Excel) and adds a new row if necessary. TAB adds new column if necessary. - * - * @type {Boolean} - * @default true - */ - enterBeginsEditing: true, - - /** - * Defines the cursor movement after ENTER was pressed (SHIFT + ENTER uses a negative vector). - * Can be an object or a function that returns an object. The event argument passed to the function - * is a DOM Event object received after the ENTER key has been pressed. This event object can be used to check - * whether user pressed ENTER or SHIFT + ENTER. - * - * @type {Object|Function} - * @default {row: 1, col: 0} - */ - enterMoves: { row: 1, col: 0 }, - - /** - * Defines the cursor movement after TAB is pressed (SHIFT + TAB uses a negative vector). - * Can be an object or a function that returns an object. The event argument passed to the function - * is a DOM Event object received after the TAB key has been pressed. This event object can be used to check - * whether user pressed TAB or SHIFT + TAB. - * - * @type {Object} - * @default {row: 0, col: 1} - */ - tabMoves: { row: 0, col: 1 }, - - /** - * If `true`, pressing TAB or right arrow in the last column will move to first column in next row. - * - * @type {Boolean} - * @default false - */ - autoWrapRow: false, - - /** - * If `true`, pressing ENTER or down arrow in the last row will move to the first row in the next column. - * - * @type {Boolean} - * @default false - */ - autoWrapCol: false, - - /** - * @description - * Turns on saving the state of column sorting, column positions and column sizes in local storage. - * - * You can save any sort of data in local storage to preserve table state between page reloads. - * In order to enable data storage mechanism, `persistentState` option must be set to `true` (you can set it - * either during Handsontable initialization or using the `updateSettings` method). When `persistentState` is enabled it exposes 3 hooks: - * - * __persistentStateSave__ (key: String, value: Mixed) - * - * * Saves value under given key in browser local storage. - * - * __persistentStateLoad__ (key: String, valuePlaceholder: Object) - * - * * Loads `value`, saved under given key, form browser local storage. The loaded `value` will be saved in `valuePlaceholder.value` - * (this is due to specific behaviour of `Hooks.run()` method). If no value have been saved under key `valuePlaceholder.value` - * will be `undefined`. - * - * __persistentStateReset__ (key: String) - * - * * Clears the value saved under `key`. If no `key` is given, all values associated with table will be cleared. - * - * __Note:__ The main reason behind using `persistentState` hooks rather than regular LocalStorage API is that it - * ensures separation of data stored by multiple Handsontable instances. In other words, if you have two (or more) - * instances of Handsontable on one page, data saved by one instance won't be accessible by the second instance. - * Those two instances can store data under the same key and no data would be overwritten. - * - * __Important:__ In order for the data separation to work properly, make sure that each instance of Handsontable has a unique `id`. - * - * @type {Boolean} - * @default false - */ - persistentState: void 0, - - /** - * Class name for all visible rows in the current selection. - * - * @type {String} - * @default undefined - * @example - * ```js - * currentRowClassName: 'currentRow' // This will add a 'currentRow' class name to appropriate table cells. - * ``` - */ - currentRowClassName: void 0, - - /** - * Class name for all visible columns in the current selection. - * - * @type {String} - * @default undefined - * @example - * ```js - * currentColClassName: 'currentColumn' // This will add a 'currentColumn' class name to appropriate table cells. - * ``` - */ - currentColClassName: void 0, - - /** - * Class name for all visible headers in current selection. - * - * @type {String} - * @since 0.27.0 - * @default 'ht__highlight' - * @example - * ```js - * currentHeaderClassName: 'ht__highlight' // This will add a 'ht__highlight' class name to appropriate table headers. - * ``` - */ - currentHeaderClassName: 'ht__highlight', - /** - * Class name for the Handsontable container element. - * - * @type {String|Array} - * @default undefined - */ - className: void 0, - - /** - * Class name for all tables inside container element. - * - * @since 0.17.0 - * @type {String|Array} - * @default undefined - */ - tableClassName: void 0, - - /** - * @description - * Defines how the columns react, when the declared table width is different than the calculated sum of all column widths. - * [See more](http://docs.handsontable.com/demo-stretching.html) mode. Possible values: - * * `'none'` Disable stretching - * * `'last'` Stretch only the last column - * * `'all'` Stretch all the columns evenly - * - * @type {String} - * @default 'none' - */ - stretchH: 'none', - - /** - * Lets you overwrite the default `isEmptyRow` method, which checks if row at the provided index is empty. - * - * @type {Function} - * @param {Number} row Visual row index. - * @returns {Boolean} - */ - isEmptyRow: function isEmptyRow(row) { - var col, colLen, value, meta; - - for (col = 0, colLen = this.countCols(); col < colLen; col++) { - value = this.getDataAtCell(row, col); - - if (value !== '' && value !== null && (0, _mixed.isDefined)(value)) { - if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') { - meta = this.getCellMeta(row, col); - - return (0, _object.isObjectEquals)(this.getSchema()[meta.prop], value); - } - return false; - } - } - - return true; - }, - - - /** - * Lets you overwrite the default `isEmptyCol` method, which checks if column at the provided index is empty. - * - * @type {Function} - * @param {Number} col Visual column index - * @returns {Boolean} - */ - isEmptyCol: function isEmptyCol(col) { - var row, rowLen, value; - - for (row = 0, rowLen = this.countRows(); row < rowLen; row++) { - value = this.getDataAtCell(row, col); - - if (value !== '' && value !== null && (0, _mixed.isDefined)(value)) { - return false; - } - } - - return true; - }, - - - /** - * When set to `true`, the table is re-rendered when it is detected that it was made visible in DOM. - * - * @type {Boolean} - * @default true - */ - observeDOMVisibility: true, - - /** - * If set to `true`, Handsontable will accept values that were marked as invalid by the cell `validator`. - * It will result with *invalid* cells being treated as *valid* (will save the *invalid* value into the Handsontable data source). - * If set to `false`, Handsontable will *not* accept the invalid values and won't allow the user to close the editor. - * This option will be particularly useful when used with the Autocomplete's `strict` mode. - * - * @type {Boolean} - * @default true - * @since 0.9.5 - */ - allowInvalid: true, - - /** - * If set to `true`, Handsontable will accept values that are empty (`null`, `undefined` or `''`). - * If set to `false`, Handsontable will *not* accept the empty values and mark cell as invalid. - * - * @example - * ```js - * ... - * allowEmpty: true // allow empty values for all cells (whole table) - * ... - * // or - * ... - * columns: [ - * // allow empty values only for 'date' column - * {data: 'date', dateFormat: 'DD/MM/YYYY', allowEmpty: true} - * ] - * ... - * ``` - * - * @type {Boolean} - * @default true - * @since 0.23.0 - */ - allowEmpty: true, - - /** - * CSS class name for cells that did not pass validation. - * - * @type {String} - * @default 'htInvalid' - */ - invalidCellClassName: 'htInvalid', - - /** - * When set to an non-empty string, displayed as the cell content for empty cells. If a value of a different type is provided, - * it will be stringified and applied as a string. - * - * @type {Mixed} - * @default false - */ - placeholder: false, - - /** - * CSS class name for cells that have a placeholder in use. - * - * @type {String} - * @default 'htPlaceholder' - */ - placeholderCellClassName: 'htPlaceholder', - - /** - * CSS class name for read-only cells. - * - * @type {String} - * @default 'htDimmed' - */ - readOnlyCellClassName: 'htDimmed', - - /** - * @description - * If a string is provided, it may be one of the following predefined values: - * * `autocomplete`, - * * `checkbox`, - * * `html`, - * * `numeric`, - * * `password`. - * * `text`. - * - * Or you can [register](http://docs.handsontable.com/demo-custom-renderers.html) the custom renderer under specified name and use - * its name as an alias in your configuration. - * - * If a function is provided, it will receive the following arguments: - * ```js - * function(instance, TD, row, col, prop, value, cellProperties) {} - * ``` - * - * You can read more about custom renderes [in the documentation](http://docs.handsontable.com/demo-custom-renderers.html). - * - * @example - * ```js - * ... - * Handsontable.renderers.registerRenderer('my.renderer', function(instance, TD, row, col, prop, value, cellProperties) { - * TD.innerHTML = value; - * }); - * ... - * columns: [ - * { - * editor: 'select', - * renderer: 'autocomplete' // as string - * }, - * { - * renderer: 'my.renderer' // custom renderer as an alias - * }, - * { - * // renderer as custom function - * renderer: function(hotInstance, TD, row, col, prop, value, cellProperties) { - * TD.style.color = 'blue'; - * TD.innerHTML = value; - * } - * } - * ] - * ... - * ``` - * - * @type {String|Function} - * @default undefined - */ - renderer: void 0, - - /** - * CSS class name added to the commented cells. - * - * @type {String} - * @default 'htCommentCell' - */ - commentedCellClassName: 'htCommentCell', - - /** - * If set to `true`, it enables the browser's native selection of a fragment of the text within a single cell, between adjacent cells or in a whole table. - * If set to `'cell'`, it enables the possibility of selecting a fragment of the text within a single cell's body. - * - * @type {Boolean|String} - * @default false - */ - fragmentSelection: false, - - /** - * @description - * Make cell [read only](http://docs.handsontable.com/demo-read-only.html). - * - * @type {Boolean} - * @default false - */ - readOnly: false, - - /** - * @description - * When added to a `column` property, it skips the column on paste and pastes the data on the next column to the right. - * - * @type {Boolean} - * @default false - */ - skipColumnOnPaste: false, - - /** - * @description - * Setting to true enables the search plugin (see [demo](http://docs.handsontable.com/demo-search-for-values.html)). - * - * @type {Boolean} - * @default false - */ - search: false, - - /** - * @description - * Shortcut to define the combination of the cell renderer, editor and validator for the column, cell or whole table. - * - * Possible values: - * * [autocomplete](http://docs.handsontable.com/demo-autocomplete.html) - * * [checkbox](http://docs.handsontable.com/demo-checkbox.html) - * * [date](http://docs.handsontable.com/demo-date.html) - * * [dropdown](http://docs.handsontable.com/demo-dropdown.html) - * * [handsontable](http://docs.handsontable.com/demo-handsontable.html) - * * [numeric](http://docs.handsontable.com/demo-numeric.html) - * * [password](http://docs.handsontable.com/demo-password.html) - * * text - * * [time](http://docs.handsontable.com/demo-time.html) - * - * Or you can register the custom cell type under specified name and use - * its name as an alias in your configuration. - * - * @example - * ```js - * ... - * Handsontable.cellTypes.registerCellType('my.type', { - * editor: MyEditorClass, - * renderer: function(hot, td, row, col, prop, value, cellProperties) { - * td.innerHTML = value; - * }, - * validator: function(value, callback) { - * callback(value === 'foo' ? true : false); - * } - * }); - * ... - * columns: [ - * { - * type: 'text' - * }, - * { - * type: 'my.type' // an alias to custom type - * }, - * { - * type: 'checkbox' - * } - * ] - * ... - * ``` - * - * @type {String} - * @default 'text' - */ - type: 'text', - - /** - * @description - * Make cell copyable (pressing CTRL + C on your keyboard moves its value to system clipboard). - * - * __Note:__ this setting is `false` by default for cells with type `password`. - * - * @type {Boolean} - * @default true - * @since 0.10.2 - */ - copyable: true, - - /** - * Defines the editor for the table/column/cell. - * - * If a string is provided, it may be one of the following predefined values: - * * [autocomplete](http://docs.handsontable.com/demo-autocomplete.html) - * * [checkbox](http://docs.handsontable.com/demo-checkbox.html) - * * [date](http://docs.handsontable.com/demo-date.html) - * * [dropdown](http://docs.handsontable.com/demo-dropdown.html) - * * [handsontable](http://docs.handsontable.com/demo-handsontable.html) - * * [mobile](http://docs.handsontable.com/demo-mobiles-and-tablets.html) - * * [password](http://docs.handsontable.com/demo-password.html) - * * [select](http://docs.handsontable.com/demo-select.html) - * * text - * - * Or you can [register](http://docs.handsontable.com/tutorial-cell-editor.html#registering-an-editor) the custom editor under specified name and use - * its name as an alias in your configuration. - * - * To disable cell editing completely set `editor` property to `false`. - * - * @example - * ```js - * ... - * columns: [ - * { - * editor: 'select' - * }, - * { - * editor: false - * } - * ] - * ... - * ``` - * - * @type {String|Function|Boolean} - * @default 'text' - */ - editor: void 0, - - /** - * @description - * Autocomplete definitions. See [autocomplete demo](http://docs.handsontable.com/demo-autocomplete.html) for examples and definitions. - * - * @type {Array} - * @default undefined - */ - autoComplete: void 0, - - /** - * Control number of choices for the autocomplete (or dropdown) typed cells. After exceeding it, a scrollbar for the dropdown list of choices will appear. - * - * @since 0.18.0 - * @type {Number} - * @default 10 - */ - visibleRows: 10, - - /** - * Makes autocomplete or dropdown width the same as the edited cell width. If `false` then editor will be scaled - * according to its content. - * - * @since 0.17.0 - * @type {Boolean} - * @default true - */ - trimDropdown: true, - - /** - * Setting to true enables the debug mode, currently used to test the correctness of the row and column - * header fixed positioning on a layer above the master table. - * - * @type {Boolean} - * @default false - */ - debug: false, - - /** - * When set to `true`, the text of the cell content is wrapped if it does not fit in the fixed column width. - * - * @type {Boolean} - * @default true - * @since 0.11.0 - */ - wordWrap: true, - - /** - * CSS class name added to cells with cell meta `wordWrap: false`. - * - * @type {String} - * @default 'htNoWrap' - * @since 0.11.0 - */ - noWordWrapClassName: 'htNoWrap', - - /** - * @description - * Defines if the right-click context menu should be enabled. Context menu allows to create new row or - * column at any place in the grid among [other features](http://docs.handsontable.com/demo-context-menu.html). - * Possible values: - * * `true` (to enable default options), - * * `false` (to disable completely) - * * an array of [predefined options](https://docs.handsontable.com/demo-context-menu.html#page-specific), - * * an object [with defined structure](http://docs.handsontable.com/demo-context-menu.html#page-custom) - * - * See [the context menu demo](http://docs.handsontable.com/demo-context-menu.html) for examples. - * - * @example - * ```js - * ... - * // as a boolean - * contextMenu: true - * ... - * // as an array - * contextMenu: ['row_above', 'row_below', '--------', 'undo', 'redo'] - * ... - * ``` - * ... - * // as an object (`name` attribute is required in the custom keys) - * contextMenu: { - * items: { - * "option1": { - * name: "option1" - * }, - * "option2": { - * name: "option2", - * submenu: { - * items: [ - * { - * key: "option2:suboption1", - * name: "option2:suboption1", - * callback: function(key, options) { - * ... - * } - * }, - * ... - * ] - * } - * } - * } - * } - * ... - * ``` - * @type {Boolean|Array|Object} - * @default undefined - */ - contextMenu: void 0, - - /** - * @description - * Disable or enable the copy/paste functionality. - * - * @example - * ```js - * ... - * copyPaste: false, - * ... - * ``` - * - * @type {Boolean} - * @default true - */ - copyPaste: true, - - /** - * If `true`, undo/redo functionality is enabled. - * - * @type {Boolean} - * @default undefined - */ - undo: void 0, - - /** - * @description - * Turns on [Column sorting](http://docs.handsontable.com/demo-sorting-data.html). - * Can be either a boolean (true/false) or an object with a declared sorting options. See the below example: - * - * @example - * ```js - * ... - * // as boolean - * columnSorting: true - * ... - * // as a object with initial order (sort ascending column at index 2) - * columnSorting: { - * column: 2, - * sortOrder: true, // true = ascending, false = descending, undefined = original order - * sortEmptyCells: true // true = the table sorts empty cells, false = the table moves all empty cells to the end of the table - * } - * ... - * ``` - * - * @type {Boolean|Object} - * @default undefined - */ - columnSorting: void 0, - - /** - * @description - * Turns on [Manual column move](http://docs.handsontable.com/demo-moving-rows-and-columns.html), if set to a boolean or define initial - * column order, if set to an array of column indexes. - * - * @example - * ```js - * ... - * // as boolean - * manualColumnMove: true - * ... - * // as a array with initial order (move column index at 0 to 1 and move column index at 1 to 4) - * manualColumnMove: [1, 4] - * ... - * ``` - * - * @type {Boolean|Array} - * @default undefined - */ - manualColumnMove: void 0, - - /** - * @description - * Turns on [Manual column resize](http://docs.handsontable.com/demo-resizing.html), if set to a boolean or define initial - * column resized widths, if set to an array of numbers. - * - * @example - * ```js - * ... - * // as boolean - * manualColumnResize: true - * ... - * // as a array with initial widths (column at 0 index has 40px and column at 1 index has 50px) - * manualColumnResize: [40, 50] - * ... - * ``` - * - * @type {Boolean|Array} - * @default undefined - */ - manualColumnResize: void 0, - - /** - * @description - * Turns on [Manual row move](http://docs.handsontable.com/demo-moving-rows-and-columns.html), if set to a boolean or define initial - * row order, if set to an array of row indexes. - * - * @example - * ```js - * ... - * // as boolean - * manualRowMove: true - * ... - * // as a array with initial order (move row index at 0 to 1 and move row index at 1 to 4) - * manualRowMove: [1, 4] - * ... - * ``` - * - * @type {Boolean|Array} - * @default undefined - * @since 0.11.0 - */ - manualRowMove: void 0, - - /** - * @description - * Turns on [Manual row resize](http://docs.handsontable.com/demo-resizing.html), if set to a boolean or define initial - * row resized heights, if set to an array of numbers. - * - * @example - * ```js - * ... - * // as boolean - * manualRowResize: true - * ... - * // as a array with initial heights (row at 0 index has 40px and row at 1 index has 50px) - * manualRowResize: [40, 50] - * ... - * ``` - * - * @type {Boolean|Array} - * @default undefined - * @since 0.11.0 - */ - manualRowResize: void 0, - - /** - * @description - * If set to `true`, it enables a possibility to merge cells. If set to an array of objects, it merges the cells provided in the objects (see the example below). - * [More information on the demo page.](http://docs.handsontable.com/demo-merge-cells.html) - * - * @example - * ```js - * // enables the mergeCells plugin: - * margeCells: true - * ... - * // declares a list of merged sections: - * mergeCells: [ - * {row: 1, col: 1, rowspan: 3, colspan: 3}, // rowspan and colspan properties declare the width and height of a merged section in cells - * {row: 3, col: 4, rowspan: 2, colspan: 2}, - * {row: 5, col: 6, rowspan: 3, colspan: 3} - * ] - * ``` - * @type {Boolean|Array} - * @default false - */ - mergeCells: false, - - /** - * Number of rows to be rendered outside of the visible part of the table. - * By default, it's set to `'auto'`, which makes Handsontable to attempt to calculate the best offset performance-wise. - * - * You may test out different values to find the best one that works for your specific implementation. - * - * @type {Number|String} - * @default 'auto' - */ - viewportRowRenderingOffset: 'auto', - - /** - * Number of columns to be rendered outside of the visible part of the table. - * By default, it's set to `'auto'`, which makes Handsontable try calculating the best offset performance-wise. - * - * You may experiment with the value to find the one that works best for your specific implementation. - * - * @type {Number|String} - * @default 'auto' - */ - viewportColumnRenderingOffset: 'auto', - - /** - * A function, regular expression or a string, which will be used in the process of cell validation. - * If a function is used, be sure to execute the callback argument with either `true` (`callback(true)`) if the validation passed - * or with `false` (`callback(false)`), if the validation failed. - * Note, that `this` in the function points to the `cellProperties` object. - * - * If a string is provided, it may be one of the following predefined values: - * * `autocomplete`, - * * `date`, - * * `numeric`, - * * `time`. - * - * Or you can [register](http://docs.handsontable.com/demo-data-validation.html) the validator function under specified name and use - * its name as an alias in your configuration. - * - * See more [in the demo](http://docs.handsontable.com/demo-data-validation.html). - * - * @example - * ```js - * // as a function - * columns: [ - * { - * validator: function(value, callback) { // validation rules } - * } - * ] - * ... - * // as a regexp - * columns: [ - * { - * validator: /^[0-9]$/ // regular expression - * } - * ] - * // as a string - * columns: [ - * { - * validator: 'numeric' - * } - * ] - * ``` - * @type {Function|RegExp|String} - * @default undefined - * @since 0.9.5 - */ - validator: void 0, - - /** - * @description - * Disable visual cells selection. - * - * Possible values: - * * `true` - Disables any type of visual selection (current and area selection), - * * `false` - Enables any type of visual selection. This is default value. - * * `current` - Disables the selection of a currently selected cell, the area selection is still present. - * * `area` - Disables the area selection, the currently selected cell selection is still present. - * - * @type {Boolean|String|Array} - * @default false - * @since 0.13.2 - * @example - * ```js - * ... - * // as boolean - * disableVisualSelection: true, - * ... - * - * ... - * // as string ('current' or 'area') - * disableVisualSelection: 'current', - * ... - * - * ... - * // as array - * disableVisualSelection: ['current', 'area'], - * ... - * ``` - */ - disableVisualSelection: false, - - /** - * @description - * Set whether to display the current sorting order indicator (a triangle icon in the column header, specifying the sorting order). - * - * @type {Boolean} - * @default false - * @since 0.15.0-beta3 - */ - sortIndicator: void 0, - - /** - * Disable or enable ManualColumnFreeze plugin. - * - * @type {Boolean} - * @default false - */ - manualColumnFreeze: void 0, - - /** - * @description - * Defines whether Handsontable should trim the whitespace at the beginning and the end of the cell contents. - * - * @type {Boolean} - * @default true - */ - trimWhitespace: true, - - settings: void 0, - - /** - * @description - * Defines data source for Autocomplete or Dropdown cell types. - * - * @example - * ```js - * ... - * // source as a array - * columns: [{ - * type: 'autocomplete', - * source: ['A', 'B', 'C', 'D'] - * }] - * ... - * // source as a function - * columns: [{ - * type: 'autocomplete', - * source: function(query, callback) { - * fetch('http://example.com/query?q=' + query, function(response) { - * callback(response.items); - * }) - * } - * }] - * ... - * ``` - * - * @type {Array|Function} - * @default undefined - */ - source: void 0, - - /** - * @description - * Defines the column header name. - * - * @example - * ```js - * ... - * columns: [{ - * title: 'First name', - * type: 'text', - * }, - * { - * title: 'Last name', - * type: 'text', - * }] - * ... - * ``` - * - * @type {String} - * @default undefined - */ - title: void 0, - - /** - * Data template for `'checkbox'` type when checkbox is checked. - * - * @example - * ```js - * checkedTemplate: 'good' - * - * // if a checkbox-typed cell is checked, then getDataAtCell(x,y), where x and y are the coordinates of the cell - * // will return 'good'. - * ``` - * @type {Boolean|String} - * @default true - */ - checkedTemplate: void 0, - - /** - * Data template for `'checkbox'` type when checkbox is unchecked. - * - * @example - * ```js - * uncheckedTemplate: 'bad' - * - * // if a checkbox-typed cell is not checked, then getDataAtCell(x,y), where x and y are the coordinates of the cell - * // will return 'bad'. - * ``` - * @type {Boolean|String} - * @default false - */ - uncheckedTemplate: void 0, - - /** - * @description - * Object which describes if renderer should create checkbox element with label element as a parent. Option desired for - * [checkbox](http://docs.handsontable.com/demo-checkbox.html)-typed cells. - * - * By default the [checkbox](http://docs.handsontable.com/demo-checkbox.html) renderer renders the checkbox without a label. - * - * Possible object properties: - * * `property` - Defines the property name of the data object, which will to be used as a label. - * (eg. `label: {property: 'name.last'}`). This option works only if data was passed as an array of objects. - * * `position` - String which describes where to place the label text (before or after checkbox element). - * Valid values are `'before'` and '`after`' (defaults to `'after'`). - * * `value` - String or a Function which will be used as label text. - * - * @example - * ```js - * ... - * columns: [{ - * type: 'checkbox', - * label: {position: 'after', value: 'My label: '} - * }] - * ... - * ``` - * - * @since 0.19.0 - * @type {Object} - * @default undefined - */ - label: void 0, - - /** - * Display format. See [numbrojs](http://numbrojs.com). This option is desired for - * [numeric](http://docs.handsontable.com/demo-numeric.html)-typed cells. - * - * Since 0.26.0 Handsontable uses [numbro](http://numbrojs.com/) as a main library for numbers formatting. - * - * @example - * ```js - * ... - * columns: [{ - * type: 'numeric', - * format: '0,00' - * }] - * ... - * ``` - * - * @type {String} - * @default '0' - */ - format: void 0, - - /** - * Language display format. See [numbrojs](http://numbrojs.com/languages.html#supported-languages). This option is desired for - * [numeric](http://docs.handsontable.com/demo-numeric.html)-typed cells. - * - * Since 0.26.0 Handsontable uses [numbro](http://numbrojs.com/) as a main library for numbers formatting. - * - * @example - * ```js - * ... - * columns: [{ - * type: 'numeric', - * language: 'en-US' - * }] - * ... - * ``` - * - * @type {String} - * @default 'en-US' - */ - language: void 0, - - /** - * @description - * Data source for [select](http://docs.handsontable.com/demo-select.html)-typed cells. - * - * @example - * ```js - * ... - * columns: [{ - * editor: 'select', - * selectOptions: ['A', 'B', 'C'], - * }] - * ... - * ``` - * - * @type {Array} - */ - selectOptions: void 0, - - /** - * Enables or disables the autoColumnSize plugin. Default value is `undefined`, which has the same effect as `true`. - * Disabling this plugin can increase performance, as no size-related calculations would be done. - * - * Column width calculations are divided into sync and async part. Each of this parts has their own advantages and - * disadvantages. Synchronous calculations are faster but they block the browser UI, while the slower asynchronous operations don't - * block the browser UI. - * - * To configure the sync/async distribution, you can pass an absolute value (number of columns) or a percentage value. - * `syncLimit` option is available since 0.16.0. - * - * You can also use the `useHeaders` option to take the column headers with into calculation. - * - * @example - * ```js - * ... - * // as a number (300 columns in sync, rest async) - * autoColumnSize: {syncLimit: 300}, - * ... - * - * ... - * // as a string (percent) - * autoColumnSize: {syncLimit: '40%'}, - * ... - * - * ... - * // use headers width while calculation the column width - * autoColumnSize: {useHeaders: true}, - * ... - * - * ``` - * - * @type {Object|Boolean} - * @default {syncLimit: 50} - */ - autoColumnSize: void 0, - - /** - * Enables or disables autoRowSize plugin. Default value is `undefined`, which has the same effect as `false` (disabled). - * Enabling this plugin can decrease performance, as size-related calculations would be performed. - * - * Row height calculations are divided into sync and async stages. Each of these stages has their own advantages and - * disadvantages. Synchronous calculations are faster but they block the browser UI, while the slower asynchronous operations don't - * block the browser UI. - * - * To configure the sync/async distribution, you can pass an absolute value (number of columns) or a percentage value. - * `syncLimit` options is available since 0.16.0. - * - * @example - * ```js - * ... - * // as number (300 columns in sync, rest async) - * autoRowSize: {syncLimit: 300}, - * ... - * - * ... - * // as string (percent) - * autoRowSize: {syncLimit: '40%'}, - * ... - * ``` - * @type {Object|Boolean} - * @default {syncLimit: 1000} - */ - autoRowSize: void 0, - - /** - * Date validation format. - * - * Option desired for `'date'` - typed cells. - * - * @example - * ```js - * ... - * columns: [{ - * type: 'date', - * dateFormat: 'MM/DD/YYYY' - * }] - * ... - * ``` - * - * @type {String} - * @default 'DD/MM/YYYY' - */ - dateFormat: void 0, - - /** - * If `true` then dates will be automatically formatted to match the desired format. - * - * Option desired for `'date'`-typed typed cells. - * - * @example - * ```js - * ... - * columns: [{ - * type: 'date', - * dateFormat: 'YYYY-MM-DD', - * correctFormat: true - * }] - * ... - * ``` - * - * @type {Boolean} - * @default false - */ - correctFormat: false, - - /** - * Definition of default value which will fill the empty cells. - * - * Option desired for `'date'`-typed cells. - * - * @example - * ```js - * ... - * columns: [{ - * type: 'date', - * defaultData: '2015-02-02' - * }] - * ... - * ``` - * - * @type {String} - */ - defaultDate: void 0, - - /** - * If set to `true`, the value entered into the cell must match (case-sensitive) the autocomplete source. Otherwise, cell won't pass the validation. - * When filtering the autocomplete source list, the editor will be working in case-insensitive mode. - * - * Option desired for `autocomplete`-typed cells. - * - * @example - * ```js - * ... - * columns: [{ - * type: 'autocomplete', - * source: ['A', 'B', 'C'], - * strict: true - * }] - * ... - * ``` - * - * @type {Boolean} - */ - strict: void 0, - - /** - * @description - * If typed `true`, data defined in `source` of the autocomplete or dropdown cell will be treated as HTML. - * - * __Warning:__ Enabling this option can cause serious XSS vulnerabilities. - * - * Option desired for `'autocomplete'`-typed cells. - * @example - * ```js - * ... - * columns: [{ - * type: 'autocomplete', - * allowHtml: true, - * source: ['foo', 'bar'] - * }] - * ... - * ``` - * @type {Boolean} - * @default false - */ - allowHtml: false, - - /** - * If typed `true` then virtual rendering mechanism for handsontable will be disabled. - * - * @type {Boolean} - */ - renderAllRows: void 0, - - /** - * Prevents table to overlap outside the parent element. If `'horizontal'` option is chosen then table will appear horizontal - * scrollbar in case where parent's width is narrower then table's width. - * - * Possible values: - * * `false` - Disables functionality (Default option). - * * `horizontal` - Prevents horizontal overflow table. - * * `vertical` - Prevents vertical overflow table (Not implemented yet). - * - * @since 0.20.3 - * @example - * ```js - * ... - * preventOverflow: 'horizontal' - * ... - * ``` - * - * @type {String|Boolean} - */ - preventOverflow: false, - - /** - * @description - * Plugin allowing binding the table rows with their headers. - * If the plugin is enabled, the table row headers will "stick" to the rows, when they are hidden/moved. Basically, if at the initialization - * row 0 has a header titled "A", it will have it no matter what you do with the table. - * - * @pro - * @since 1.0.0-beta1 - * @type {Boolean|String} - * @example - * - * ```js - * ... - * var hot = new Handsontable(document.getElementById('example'), { - * date: getData(), - * bindRowsWithHeaders: true - * }); - * ... - * ``` - * - */ - bindRowsWithHeaders: void 0, - - /** - * @description - * The CollapsibleColumns plugin allows collapsing of columns, covered by a header with the `colspan` property defined. - * - * Clicking the "collapse/expand" button collapses (or expands) all "child" headers except the first one. - * - * Setting the `collapsibleColumns` property to `true` will display a "collapse/expand" button in every header with a defined - * `colspan` property. - * - * To limit this functionality to a smaller group of headers, define the `collapsibleColumns` property as an array of objects, as in - * the example below. - * - * @pro - * @since 1.0.0-beta1 - * @type {Boolean|Array} - * @example - * ```js - * ... - * collapsibleColumns: [ - * {row: -4, col: 1, collapsible: true}, - * {row: -3, col: 5, collapsible: true} - * ] - * ... - * // or - * ... - * collapsibleColumns: true - * ... - * ``` - */ - collapsibleColumns: void 0, - - /** - * @description - * Allows making pre-defined calculations on the cell values and display the results within Handsontable. - * See the demo for more information. - * - * @pro - * @since 1.0.0-beta1 - * @type {Object} - */ - columnSummary: void 0, - - /** - * This plugin allows adding a configurable dropdown menu to the table's column headers. - * The dropdown menu acts like the Context Menu, but is triggered by clicking the button in the header. - * - * @pro - * @since 1.0.0-beta1 - * @type {Boolean|Object|Array} - */ - dropdownMenu: void 0, - - /** - * The filters plugin. - * It allows filtering the table data either by the built-in component or with the API. - * - * @pro - * @since 1.0.0-beta1 - * @type {Boolean} - */ - filters: void 0, - - /** - * It allows Handsontable to process formula expressions defined in the provided data. - * - * @pro - * @since 1.7.0 - * @type {Boolean} - */ - formulas: void 0, - - /** - * @description - * GanttChart plugin enables a possibility to create a Gantt chart using a Handsontable instance. - * In this case, the whole table becomes read-only. - * - * @pro - * @since 1.0.0-beta1 - * @type {Object} - */ - ganttChart: void 0, - - /** - * @description - * Allows adding a tooltip to the table headers. - * - * Available options: - * * the `rows` property defines if tooltips should be added to row headers, - * * the `columns` property defines if tooltips should be added to column headers, - * * the `onlyTrimmed` property defines if tooltips should be added only to headers, which content is trimmed by the header itself (the content being wider then the header). - * - * @pro - * @since 1.0.0-beta1 - * @type {Boolean|Object} - */ - headerTooltips: void 0, - - /** - * Plugin allowing hiding of certain columns. - * - * @pro - * @since 1.0.0-beta1 - * @type {Boolean|Object} - */ - hiddenColumns: void 0, - - /** - * @description - * Plugin allowing hiding of certain rows. - * - * @pro - * @since 1.0.0-beta1 - * @type {Boolean|Object} - */ - hiddenRows: void 0, - - /** - * @description - * Allows creating a nested header structure, using the HTML's colspan attribute. - * - * @pro - * @since 1.0.0-beta1 - * @type {Array} - */ - nestedHeaders: void 0, - - /** - * @description - * Plugin allowing hiding of certain rows. - * - * @pro - * @since 1.0.0-beta1 - * @type {Boolean|Array} - */ - trimRows: void 0, - - /** - * @description - * Allows setting a custom width of the row headers. You can provide a number or an array of widths, if many row header levels are defined. - * - * @since 0.22.0 - * @type {Number|Array} - */ - rowHeaderWidth: void 0, - - /** - * @description - * Allows setting a custom height of the column headers. You can provide a number or an array of heights, if many column header levels are defined. - * - * @since 0.22.0 - * @type {Number|Array} - */ - columnHeaderHeight: void 0, - - /** - * @description - * Enabling this plugin switches table into one-way data binding where changes are applied into data source (from outside table) - * will be automatically reflected in the table. - * - * For every data change [afterChangesObserved](Hooks.html#event:afterChangesObserved) hook will be fired. - * - * @type {Boolean} - * @default false - */ - observeChanges: void 0, - - /** - * @description - * When passed to the `column` property, allows specifying a custom sorting function for the desired column. - * - * @since 0.24.0 - * @type {Function} - * @example - * ```js - * columns: [ - * { - * sortFunction: function(sortOrder) { - * return function(a, b) { - * // sorting function body. - * // - * // Function parameters: - * // sortOrder: If true, the order is ascending, if false - descending. undefined = original order - * // a, b: Two compared elements. These are 2-element arrays, with the first element being the row index, the second - cell value. - * } - * } - * } - * ] - * ``` - */ - sortFunction: void 0, - - /** - * If defined as 'true', the Autocomplete's suggestion list would be sorted by relevance (the closer to the left the match is, the higher the suggestion). - * - * Option desired for cells of the `'autocomplete'` type. - * - * @type {Boolean} - * @default true - */ - sortByRelevance: true, - - /** - * If defined as 'true', when the user types into the input area the Autocomplete's suggestion list is updated to only - * include those choices starting with what has been typed; if defined as 'false' all suggestions remain shown, with - * those matching what has been typed marked in bold. - * - * @type {Boolean} - * @default true - */ - filter: true, - - /** - * If defined as 'true', filtering in the Autocomplete Editor will be case-sensitive. - * - * @type {Boolean} - * @default: false - */ - filteringCaseSensitive: false -}; - -exports.default = DefaultSettings; - -/***/ }), -/* 175 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _object = __webpack_require__(1); - -var _number = __webpack_require__(6); - -var _mixed = __webpack_require__(22); - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class SamplesGenerator - * @util - */ -var SamplesGenerator = function () { - _createClass(SamplesGenerator, null, [{ - key: 'SAMPLE_COUNT', - - /** - * Number of samples to take of each value length. - * - * @type {Number} - */ - get: function get() { - return 3; - } - }]); - - function SamplesGenerator(dataFactory) { - _classCallCheck(this, SamplesGenerator); - - /** - * Samples prepared for calculations. - * - * @type {Map} - * @default {null} - */ - this.samples = null; - /** - * Function which give the data to collect samples. - * - * @type {Function} - */ - this.dataFactory = dataFactory; - /** - * Custom number of samples to take of each value length. - * - * @type {Number} - * @default {null} - */ - this.customSampleCount = null; - /** - * `true` if duplicate samples collection should be allowed, `false` otherwise. - * - * @type {Boolean} - * @default {false} - */ - this.allowDuplicates = false; - } - - /** - * Get the sample count for this instance. - * - * @returns {Number} - */ - - - _createClass(SamplesGenerator, [{ - key: 'getSampleCount', - value: function getSampleCount() { - if (this.customSampleCount) { - return this.customSampleCount; - } - return SamplesGenerator.SAMPLE_COUNT; - } - }, { - key: 'setSampleCount', - - - /** - * Set the sample count. - * - * @param {Number} sampleCount Number of samples to be collected. - */ - value: function setSampleCount(sampleCount) { - this.customSampleCount = sampleCount; - } - - /** - * Set if the generator should accept duplicate values. - * - * @param {Boolean} allowDuplicates `true` to allow duplicate values. - */ - - }, { - key: 'setAllowDuplicates', - value: function setAllowDuplicates(allowDuplicates) { - this.allowDuplicates = allowDuplicates; - } - - /** - * Generate samples for row. You can control which area should be sampled by passing `rowRange` object and `colRange` object. - * - * @param {Object|Number} rowRange - * @param {Object} colRange - * @returns {Object} - */ - - }, { - key: 'generateRowSamples', - value: function generateRowSamples(rowRange, colRange) { - return this.generateSamples('row', colRange, rowRange); - } - - /** - * Generate samples for column. You can control which area should be sampled by passing `colRange` object and `rowRange` object. - * - * @param {Object} colRange Column index. - * @param {Object} rowRange Column index. - * @returns {Object} - */ - - }, { - key: 'generateColumnSamples', - value: function generateColumnSamples(colRange, rowRange) { - return this.generateSamples('col', rowRange, colRange); - } - - /** - * Generate collection of samples. - * - * @param {String} type Type to generate. Can be `col` or `row`. - * @param {Object} range - * @param {Object|Number} specifierRange - * @returns {Map} - */ - - }, { - key: 'generateSamples', - value: function generateSamples(type, range, specifierRange) { - var _this = this; - - var samples = new Map(); - - if (typeof specifierRange === 'number') { - specifierRange = { from: specifierRange, to: specifierRange }; - } - (0, _number.rangeEach)(specifierRange.from, specifierRange.to, function (index) { - var sample = _this.generateSample(type, range, index); - - samples.set(index, sample); - }); - - return samples; - } - - /** - * Generate sample for specified type (`row` or `col`). - * - * @param {String} type Samples type `row` or `col`. - * @param {Object} range - * @param {Number} specifierValue - * @returns {Map} - */ - - }, { - key: 'generateSample', - value: function generateSample(type, range, specifierValue) { - var _this2 = this; - - var samples = new Map(); - var sampledValues = []; - var length = void 0; - - (0, _number.rangeEach)(range.from, range.to, function (index) { - var value = void 0; - - if (type === 'row') { - value = _this2.dataFactory(specifierValue, index); - } else if (type === 'col') { - value = _this2.dataFactory(index, specifierValue); - } else { - throw new Error('Unsupported sample type'); - } - - if ((0, _object.isObject)(value)) { - length = Object.keys(value).length; - } else if (Array.isArray(value)) { - length = value.length; - } else { - length = (0, _mixed.stringify)(value).length; - } - - if (!samples.has(length)) { - samples.set(length, { - needed: _this2.getSampleCount(), - strings: [] - }); - } - var sample = samples.get(length); - - if (sample.needed) { - var duplicate = sampledValues.indexOf(value) > -1; - - if (!duplicate || _this2.allowDuplicates) { - var computedKey = type === 'row' ? 'col' : 'row'; - - sample.strings.push(_defineProperty({ value: value }, computedKey, index)); - sampledValues.push(value); - sample.needed--; - } - } - }); - - return samples; - } - }]); - - return SamplesGenerator; -}(); - -exports.default = SamplesGenerator; - -/***/ }), -/* 176 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _array = __webpack_require__(2); - -var _object = __webpack_require__(1); - -var _number = __webpack_require__(6); - -var MIXIN_NAME = 'arrayMapper'; - -/** - * @type {Object} - */ -var arrayMapper = { - _arrayMap: [], - - /** - * Get value by map index. - * - * @param {Number} index Array index. - * @return {*} Returns value mapped to passed index. - */ - getValueByIndex: function getValueByIndex(index) { - var value = void 0; - - // eslint-disable-next-line no-cond-assign, no-return-assign - return (value = this._arrayMap[index]) === void 0 ? null : value; - }, - - - /** - * Get map index by its value. - * - * @param {*} value Value to search. - * @returns {Number} Returns array index. - */ - getIndexByValue: function getIndexByValue(value) { - var index = void 0; - - // eslint-disable-next-line no-cond-assign, no-return-assign - return (index = this._arrayMap.indexOf(value)) === -1 ? null : index; - }, - - - /** - * Insert new items to array mapper starting at passed index. New entries will be a continuation of last value in the array. - * - * @param {Number} index Array index. - * @param {Number} [amount=1] Defines how many items will be created to an array. - * @returns {Array} Returns added items. - */ - insertItems: function insertItems(index) { - var _this = this; - - var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - - var newIndex = (0, _array.arrayMax)(this._arrayMap) + 1; - var addedItems = []; - - (0, _number.rangeEach)(amount - 1, function (count) { - addedItems.push(_this._arrayMap.splice(index + count, 0, newIndex + count)); - }); - - return addedItems; - }, - - - /** - * Remove items from array mapper. - * - * @param {Number} index Array index. - * @param {Number} [amount=1] Defines how many items will be created to an array. - * @returns {Array} Returns removed items. - */ - removeItems: function removeItems(index) { - var _this2 = this; - - var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - - var removedItems = []; - - if (Array.isArray(index)) { - var mapCopy = [].concat(this._arrayMap); - - // Sort descending - index.sort(function (a, b) { - return b - a; - }); - - removedItems = (0, _array.arrayReduce)(index, function (acc, item) { - _this2._arrayMap.splice(item, 1); - - return acc.concat(mapCopy.slice(item, item + 1)); - }, []); - } else { - removedItems = this._arrayMap.splice(index, amount); - } - - return removedItems; - }, - - - /** - * Unshift items (remove and shift chunk of array to the left). - * - * @param {Number|Array} index Array index or Array of indexes to unshift. - * @param {Number} [amount=1] Defines how many items will be removed from an array (when index is passed as number). - */ - unshiftItems: function unshiftItems(index) { - var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - - var removedItems = this.removeItems(index, amount); - - function countRowShift(logicalRow) { - // Todo: compare perf between reduce vs sort->each->brake - return (0, _array.arrayReduce)(removedItems, function (count, removedLogicalRow) { - if (logicalRow > removedLogicalRow) { - count++; - } - - return count; - }, 0); - } - - this._arrayMap = (0, _array.arrayMap)(this._arrayMap, function (logicalRow, physicalRow) { - var rowShift = countRowShift(logicalRow); - - if (rowShift) { - logicalRow -= rowShift; - } - - return logicalRow; - }); - }, - - - /** - * Shift (right shifting) items starting at passed index. - * - * @param {Number} index Array index. - * @param {Number} [amount=1] Defines how many items will be created to an array. - */ - shiftItems: function shiftItems(index) { - var _this3 = this; - - var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - - this._arrayMap = (0, _array.arrayMap)(this._arrayMap, function (row) { - if (row >= index) { - row += amount; - } - - return row; - }); - - (0, _number.rangeEach)(amount - 1, function (count) { - _this3._arrayMap.splice(index + count, 0, index + count); - }); - }, - - - /** - * Clear all stored index<->value information from an array. - */ - clearMap: function clearMap() { - this._arrayMap.length = 0; - } -}; - -(0, _object.defineGetter)(arrayMapper, 'MIXIN_NAME', MIXIN_NAME, { - writable: false, - enumerable: false -}); - -exports.default = arrayMapper; - -/***/ }), -/* 177 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _number = __webpack_require__(6); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var STATE_INITIALIZED = 0; -var STATE_BUILT = 1; -var STATE_APPENDED = 2; -var UNIT = 'px'; - -/** - * @class - * @private - */ - -var BaseUI = function () { - function BaseUI(hotInstance) { - _classCallCheck(this, BaseUI); - - /** - * Instance of Handsontable. - * - * @type {Core} - */ - this.hot = hotInstance; - /** - * DOM element representing the ui element. - * - * @type {HTMLElement} - * @private - */ - this._element = null; - /** - * Flag which determines build state of element. - * - * @type {Boolean} - */ - this.state = STATE_INITIALIZED; - } - - /** - * Add created UI elements to table. - * - * @param {HTMLElement} wrapper Element which are parent for our UI element. - */ - - - _createClass(BaseUI, [{ - key: 'appendTo', - value: function appendTo(wrapper) { - wrapper.appendChild(this._element); - - this.state = STATE_APPENDED; - } - - /** - * Method for create UI element. Only create, without append to table. - */ - - }, { - key: 'build', - value: function build() { - this._element = document.createElement('div'); - this.state = STATE_BUILT; - } - - /** - * Method for remove UI element. - */ - - }, { - key: 'destroy', - value: function destroy() { - if (this.isAppended()) { - this._element.parentElement.removeChild(this._element); - } - - this._element = null; - this.state = STATE_INITIALIZED; - } - - /** - * Check if UI element are appended. - * - * @returns {Boolean} - */ - - }, { - key: 'isAppended', - value: function isAppended() { - return this.state === STATE_APPENDED; - } - - /** - * Check if UI element are built. - * - * @returns {Boolean} - */ - - }, { - key: 'isBuilt', - value: function isBuilt() { - return this.state >= STATE_BUILT; - } - - /** - * Setter for position. - * - * @param {Number} top New top position of the element. - * @param {Number} left New left position of the element. - */ - - }, { - key: 'setPosition', - value: function setPosition(top, left) { - if ((0, _number.isNumeric)(top)) { - this._element.style.top = top + UNIT; - } - if ((0, _number.isNumeric)(left)) { - this._element.style.left = left + UNIT; - } - } - - /** - * Getter for the element position. - * - * @returns {Object} Object contains left and top position of the element. - */ - - }, { - key: 'getPosition', - value: function getPosition() { - return { - top: this._element.style.top ? parseInt(this._element.style.top, 10) : 0, - left: this._element.style.left ? parseInt(this._element.style.left, 10) : 0 - }; - } - - /** - * Setter for the element size. - * - * @param {Number} width New width of the element. - * @param {Number} height New height of the element. - */ - - }, { - key: 'setSize', - value: function setSize(width, height) { - if ((0, _number.isNumeric)(width)) { - this._element.style.width = width + UNIT; - } - if ((0, _number.isNumeric)(height)) { - this._element.style.height = height + UNIT; - } - } - - /** - * Getter for the element position. - * - * @returns {Object} Object contains height and width of the element. - */ - - }, { - key: 'getSize', - value: function getSize() { - return { - width: this._element.style.width ? parseInt(this._element.style.width, 10) : 0, - height: this._element.style.height ? parseInt(this._element.style.height, 10) : 0 - }; - } - - /** - * Setter for the element offset. Offset means marginTop and marginLeft of the element. - * - * @param {Number} top New margin top of the element. - * @param {Number} left New margin left of the element. - */ - - }, { - key: 'setOffset', - value: function setOffset(top, left) { - if ((0, _number.isNumeric)(top)) { - this._element.style.marginTop = top + UNIT; - } - if ((0, _number.isNumeric)(left)) { - this._element.style.marginLeft = left + UNIT; - } - } - - /** - * Getter for the element offset. - * - * @returns {Object} Object contains top and left offset of the element. - */ - - }, { - key: 'getOffset', - value: function getOffset() { - return { - top: this._element.style.marginTop ? parseInt(this._element.style.marginTop, 10) : 0, - left: this._element.style.marginLeft ? parseInt(this._element.style.marginLeft, 10) : 0 - }; - } - }]); - - return BaseUI; -}(); - -exports.default = BaseUI; - -/***/ }), -/* 178 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var STATE_INITIALIZED = 0; -var STATE_BUILT = 1; -var STATE_APPENDED = 2; -var UNIT = 'px'; - -/** - * @class - * @private - */ - -var BaseUI = function () { - function BaseUI(hotInstance) { - _classCallCheck(this, BaseUI); - - /** - * Instance of Handsontable. - * - * @type {Core} - */ - this.hot = hotInstance; - /** - * DOM element representing the ui element. - * - * @type {HTMLElement} - * @private - */ - this._element = null; - /** - * Flag which determines build state of element. - * - * @type {Boolean} - */ - this.state = STATE_INITIALIZED; - } - - /** - * Add created UI elements to table. - * - * @param {HTMLElement} wrapper Element which are parent for our UI element. - */ - - - _createClass(BaseUI, [{ - key: 'appendTo', - value: function appendTo(wrapper) { - wrapper.appendChild(this._element); - - this.state = STATE_APPENDED; - } - - /** - * Method for create UI element. Only create, without append to table. - */ - - }, { - key: 'build', - value: function build() { - this._element = document.createElement('div'); - this.state = STATE_BUILT; - } - - /** - * Method for remove UI element. - */ - - }, { - key: 'destroy', - value: function destroy() { - if (this.isAppended()) { - this._element.parentElement.removeChild(this._element); - } - - this._element = null; - this.state = STATE_INITIALIZED; - } - - /** - * Check if UI element are appended. - * - * @returns {Boolean} - */ - - }, { - key: 'isAppended', - value: function isAppended() { - return this.state === STATE_APPENDED; - } - - /** - * Check if UI element are built. - * - * @returns {Boolean} - */ - - }, { - key: 'isBuilt', - value: function isBuilt() { - return this.state >= STATE_BUILT; - } - - /** - * Setter for position. - * - * @param {Number} top New top position of the element. - * @param {Number} left New left position of the element. - */ - - }, { - key: 'setPosition', - value: function setPosition(top, left) { - if (top !== void 0) { - this._element.style.top = top + UNIT; - } - if (left !== void 0) { - this._element.style.left = left + UNIT; - } - } - - /** - * Getter for the element position. - * - * @returns {Object} Object contains left and top position of the element. - */ - - }, { - key: 'getPosition', - value: function getPosition() { - return { - top: this._element.style.top ? parseInt(this._element.style.top, 10) : 0, - left: this._element.style.left ? parseInt(this._element.style.left, 10) : 0 - }; - } - - /** - * Setter for the element size. - * - * @param {Number} width New width of the element. - * @param {Number} height New height of the element. - */ - - }, { - key: 'setSize', - value: function setSize(width, height) { - if (width) { - this._element.style.width = width + UNIT; - } - if (height) { - this._element.style.height = height + UNIT; - } - } - - /** - * Getter for the element position. - * - * @returns {Object} Object contains height and width of the element. - */ - - }, { - key: 'getSize', - value: function getSize() { - return { - width: this._element.style.width ? parseInt(this._element.style.width, 10) : 0, - height: this._element.style.height ? parseInt(this._element.style.height, 10) : 0 - }; - } - - /** - * Setter for the element offset. Offset means marginTop and marginLeft of the element. - * - * @param {Number} top New margin top of the element. - * @param {Number} left New margin left of the element. - */ - - }, { - key: 'setOffset', - value: function setOffset(top, left) { - if (top) { - this._element.style.marginTop = top + UNIT; - } - if (left) { - this._element.style.marginLeft = left + UNIT; - } - } - - /** - * Getter for the element offset. - * - * @returns {Object} Object contains top and left offset of the element. - */ - - }, { - key: 'getOffset', - value: function getOffset() { - return { - top: this._element.style.marginTop ? parseInt(this._element.style.marginTop, 10) : 0, - left: this._element.style.marginLeft ? parseInt(this._element.style.marginLeft, 10) : 0 - }; - } - }]); - - return BaseUI; -}(); - -exports.default = BaseUI; - -/***/ }), -/* 179 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -/*! - * https://github.com/Starcounter-Jack/JSON-Patch - * json-patch-duplex.js version: 0.5.7 - * (c) 2013 Joachim Wester - * MIT license - */ -var __extends = undefined && undefined.__extends || function (d, b) { - for (var p in b) { - if (b.hasOwnProperty(p)) d[p] = b[p]; - }function __() { - this.constructor = d; - } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; -var OriginalError = Error; -var jsonpatch; -(function (jsonpatch) { - var _objectKeys = function _objectKeys(obj) { - if (_isArray(obj)) { - var keys = new Array(obj.length); - for (var k = 0; k < keys.length; k++) { - keys[k] = "" + k; - } - return keys; - } - if (Object.keys) { - return Object.keys(obj); - } - var keys = []; - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - keys.push(i); - } - } - return keys; - }; - function _equals(a, b) { - switch (typeof a === 'undefined' ? 'undefined' : _typeof(a)) { - case 'undefined': //backward compatibility, but really I think we should return false - case 'boolean': - case 'string': - case 'number': - return a === b; - case 'object': - if (a === null) return b === null; - if (_isArray(a)) { - if (!_isArray(b) || a.length !== b.length) return false; - for (var i = 0, l = a.length; i < l; i++) { - if (!_equals(a[i], b[i])) return false; - }return true; - } - var bKeys = _objectKeys(b); - var bLength = bKeys.length; - if (_objectKeys(a).length !== bLength) return false; - for (var i = 0; i < bLength; i++) { - if (!_equals(a[i], b[i])) return false; - }return true; - default: - return false; - } - } - /* We use a Javascript hash to store each - function. Each hash entry (property) uses - the operation identifiers specified in rfc6902. - In this way, we can map each patch operation - to its dedicated function in efficient way. - */ - /* The operations applicable to an object */ - var objOps = { - add: function add(obj, key) { - obj[key] = this.value; - return true; - }, - remove: function remove(obj, key) { - delete obj[key]; - return true; - }, - replace: function replace(obj, key) { - obj[key] = this.value; - return true; - }, - move: function move(obj, key, tree) { - var temp = { op: "_get", path: this.from }; - apply(tree, [temp]); - apply(tree, [{ op: "remove", path: this.from }]); - apply(tree, [{ op: "add", path: this.path, value: temp.value }]); - return true; - }, - copy: function copy(obj, key, tree) { - var temp = { op: "_get", path: this.from }; - apply(tree, [temp]); - apply(tree, [{ op: "add", path: this.path, value: temp.value }]); - return true; - }, - test: function test(obj, key) { - return _equals(obj[key], this.value); - }, - _get: function _get(obj, key) { - this.value = obj[key]; - } - }; - /* The operations applicable to an array. Many are the same as for the object */ - var arrOps = { - add: function add(arr, i) { - arr.splice(i, 0, this.value); - return true; - }, - remove: function remove(arr, i) { - arr.splice(i, 1); - return true; - }, - replace: function replace(arr, i) { - arr[i] = this.value; - return true; - }, - move: objOps.move, - copy: objOps.copy, - test: objOps.test, - _get: objOps._get - }; - /* The operations applicable to object root. Many are the same as for the object */ - var rootOps = { - add: function add(obj) { - rootOps.remove.call(this, obj); - for (var key in this.value) { - if (this.value.hasOwnProperty(key)) { - obj[key] = this.value[key]; - } - } - return true; - }, - remove: function remove(obj) { - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - objOps.remove.call(this, obj, key); - } - } - return true; - }, - replace: function replace(obj) { - apply(obj, [{ op: "remove", path: this.path }]); - apply(obj, [{ op: "add", path: this.path, value: this.value }]); - return true; - }, - move: objOps.move, - copy: objOps.copy, - test: function test(obj) { - return JSON.stringify(obj) === JSON.stringify(this.value); - }, - _get: function _get(obj) { - this.value = obj; - } - }; - var observeOps = { - add: function add(patches, path) { - var patch = { - op: "add", - path: path + escapePathComponent(this.name), - value: this.object[this.name] }; - patches.push(patch); - }, - 'delete': function _delete(patches, path) { - var patch = { - op: "remove", - path: path + escapePathComponent(this.name) - }; - patches.push(patch); - }, - update: function update(patches, path) { - var patch = { - op: "replace", - path: path + escapePathComponent(this.name), - value: this.object[this.name] - }; - patches.push(patch); - } - }; - function escapePathComponent(str) { - if (str.indexOf('/') === -1 && str.indexOf('~') === -1) return str; - return str.replace(/~/g, '~0').replace(/\//g, '~1'); - } - function _getPathRecursive(root, obj) { - var found; - for (var key in root) { - if (root.hasOwnProperty(key)) { - if (root[key] === obj) { - return escapePathComponent(key) + '/'; - } else if (_typeof(root[key]) === 'object') { - found = _getPathRecursive(root[key], obj); - if (found != '') { - return escapePathComponent(key) + '/' + found; - } - } - } - } - return ''; - } - function getPath(root, obj) { - if (root === obj) { - return '/'; - } - var path = _getPathRecursive(root, obj); - if (path === '') { - throw new OriginalError("Object not found in root"); - } - return '/' + path; - } - var beforeDict = []; - var Mirror = function () { - function Mirror(obj) { - this.observers = []; - this.obj = obj; - } - return Mirror; - }(); - var ObserverInfo = function () { - function ObserverInfo(callback, observer) { - this.callback = callback; - this.observer = observer; - } - return ObserverInfo; - }(); - function getMirror(obj) { - for (var i = 0, ilen = beforeDict.length; i < ilen; i++) { - if (beforeDict[i].obj === obj) { - return beforeDict[i]; - } - } - } - function getObserverFromMirror(mirror, callback) { - for (var j = 0, jlen = mirror.observers.length; j < jlen; j++) { - if (mirror.observers[j].callback === callback) { - return mirror.observers[j].observer; - } - } - } - function removeObserverFromMirror(mirror, observer) { - for (var j = 0, jlen = mirror.observers.length; j < jlen; j++) { - if (mirror.observers[j].observer === observer) { - mirror.observers.splice(j, 1); - return; - } - } - } - function unobserve(root, observer) { - observer.unobserve(); - } - jsonpatch.unobserve = unobserve; - function deepClone(obj) { - if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === "object") { - return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5 - } else { - return obj; //no need to clone primitives - } - } - function observe(obj, callback) { - var patches = []; - var root = obj; - var observer; - var mirror = getMirror(obj); - if (!mirror) { - mirror = new Mirror(obj); - beforeDict.push(mirror); - } else { - observer = getObserverFromMirror(mirror, callback); - } - if (observer) { - return observer; - } - observer = {}; - mirror.value = deepClone(obj); - if (callback) { - observer.callback = callback; - observer.next = null; - var intervals = this.intervals || [100, 1000, 10000, 60000]; - if (intervals.push === void 0) { - throw new OriginalError("jsonpatch.intervals must be an array"); - } - var currentInterval = 0; - var dirtyCheck = function dirtyCheck() { - generate(observer); - }; - var fastCheck = function fastCheck() { - clearTimeout(observer.next); - observer.next = setTimeout(function () { - dirtyCheck(); - currentInterval = 0; - observer.next = setTimeout(slowCheck, intervals[currentInterval++]); - }, 0); - }; - var slowCheck = function slowCheck() { - dirtyCheck(); - if (currentInterval == intervals.length) currentInterval = intervals.length - 1; - observer.next = setTimeout(slowCheck, intervals[currentInterval++]); - }; - if (typeof window !== 'undefined') { - if (window.addEventListener) { - window.addEventListener('mousedown', fastCheck); - window.addEventListener('mouseup', fastCheck); - window.addEventListener('keydown', fastCheck); - } else { - document.documentElement.attachEvent('onmousedown', fastCheck); - document.documentElement.attachEvent('onmouseup', fastCheck); - document.documentElement.attachEvent('onkeydown', fastCheck); - } - } - observer.next = setTimeout(slowCheck, intervals[currentInterval++]); - } - observer.patches = patches; - observer.object = obj; - observer.unobserve = function () { - generate(observer); - clearTimeout(observer.next); - removeObserverFromMirror(mirror, observer); - if (typeof window !== 'undefined') { - if (window.removeEventListener) { - window.removeEventListener('mousedown', fastCheck); - window.removeEventListener('mouseup', fastCheck); - window.removeEventListener('keydown', fastCheck); - } else { - document.documentElement.detachEvent('onmousedown', fastCheck); - document.documentElement.detachEvent('onmouseup', fastCheck); - document.documentElement.detachEvent('onkeydown', fastCheck); - } - } - }; - mirror.observers.push(new ObserverInfo(callback, observer)); - return observer; - } - jsonpatch.observe = observe; - function generate(observer) { - var mirror; - for (var i = 0, ilen = beforeDict.length; i < ilen; i++) { - if (beforeDict[i].obj === observer.object) { - mirror = beforeDict[i]; - break; - } - } - _generate(mirror.value, observer.object, observer.patches, ""); - if (observer.patches.length) { - apply(mirror.value, observer.patches); - } - var temp = observer.patches; - if (temp.length > 0) { - observer.patches = []; - if (observer.callback) { - observer.callback(temp); - } - } - return temp; - } - jsonpatch.generate = generate; - // Dirty check if obj is different from mirror, generate patches and update mirror - function _generate(mirror, obj, patches, path) { - var newKeys = _objectKeys(obj); - var oldKeys = _objectKeys(mirror); - var changed = false; - var deleted = false; - //if ever "move" operation is implemented here, make sure this test runs OK: "should not generate the same patch twice (move)" - for (var t = oldKeys.length - 1; t >= 0; t--) { - var key = oldKeys[t]; - var oldVal = mirror[key]; - if (obj.hasOwnProperty(key)) { - var newVal = obj[key]; - if ((typeof oldVal === 'undefined' ? 'undefined' : _typeof(oldVal)) == "object" && oldVal != null && (typeof newVal === 'undefined' ? 'undefined' : _typeof(newVal)) == "object" && newVal != null) { - _generate(oldVal, newVal, patches, path + "/" + escapePathComponent(key)); - } else { - if (oldVal != newVal) { - changed = true; - patches.push({ op: "replace", path: path + "/" + escapePathComponent(key), value: deepClone(newVal) }); - } - } - } else { - patches.push({ op: "remove", path: path + "/" + escapePathComponent(key) }); - deleted = true; // property has been deleted - } - } - if (!deleted && newKeys.length == oldKeys.length) { - return; - } - for (var t = 0; t < newKeys.length; t++) { - var key = newKeys[t]; - if (!mirror.hasOwnProperty(key)) { - patches.push({ op: "add", path: path + "/" + escapePathComponent(key), value: deepClone(obj[key]) }); - } - } - } - var _isArray; - if (Array.isArray) { - _isArray = Array.isArray; - } else { - _isArray = function _isArray(obj) { - return obj.push && typeof obj.length === 'number'; - }; - } - //3x faster than cached /^\d+$/.test(str) - function isInteger(str) { - var i = 0; - var len = str.length; - var charCode; - while (i < len) { - charCode = str.charCodeAt(i); - if (charCode >= 48 && charCode <= 57) { - i++; - continue; - } - return false; - } - return true; - } - /// Apply a json-patch operation on an object tree - function apply(tree, patches, validate) { - var result = false, - p = 0, - plen = patches.length, - patch, - key; - while (p < plen) { - patch = patches[p]; - p++; - // Find the object - var path = patch.path || ""; - var keys = path.split('/'); - var obj = tree; - var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift - var len = keys.length; - var existingPathFragment = undefined; - while (true) { - key = keys[t]; - if (validate) { - if (existingPathFragment === undefined) { - if (obj[key] === undefined) { - existingPathFragment = keys.slice(0, t).join('/'); - } else if (t == len - 1) { - existingPathFragment = patch.path; - } - if (existingPathFragment !== undefined) { - this.validator(patch, p - 1, tree, existingPathFragment); - } - } - } - t++; - if (key === undefined) { - if (t >= len) { - result = rootOps[patch.op].call(patch, obj, key, tree); // Apply patch - break; - } - } - if (_isArray(obj)) { - if (key === '-') { - key = obj.length; - } else { - if (validate && !isInteger(key)) { - throw new JsonPatchError("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index", "OPERATION_PATH_ILLEGAL_ARRAY_INDEX", p - 1, patch.path, patch); - } - key = parseInt(key, 10); - } - if (t >= len) { - if (validate && patch.op === "add" && key > obj.length) { - throw new JsonPatchError("The specified index MUST NOT be greater than the number of elements in the array", "OPERATION_VALUE_OUT_OF_BOUNDS", p - 1, patch.path, patch); - } - result = arrOps[patch.op].call(patch, obj, key, tree); // Apply patch - break; - } - } else { - if (key && key.indexOf('~') != -1) key = key.replace(/~1/g, '/').replace(/~0/g, '~'); // escape chars - if (t >= len) { - result = objOps[patch.op].call(patch, obj, key, tree); // Apply patch - break; - } - } - obj = obj[key]; - } - } - return result; - } - jsonpatch.apply = apply; - function compare(tree1, tree2) { - var patches = []; - _generate(tree1, tree2, patches, ''); - return patches; - } - jsonpatch.compare = compare; - var JsonPatchError = function (_super) { - __extends(JsonPatchError, _super); - function JsonPatchError(message, name, index, operation, tree) { - _super.call(this, message); - this.message = message; - this.name = name; - this.index = index; - this.operation = operation; - this.tree = tree; - } - return JsonPatchError; - }(OriginalError); - jsonpatch.JsonPatchError = JsonPatchError; - jsonpatch.Error = JsonPatchError; - /** - * Recursively checks whether an object has any undefined values inside. - */ - function hasUndefined(obj) { - if (obj === undefined) { - return true; - } - if (typeof obj == "array" || (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) == "object") { - for (var i in obj) { - if (hasUndefined(obj[i])) { - return true; - } - } - } - return false; - } - /** - * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error. - * @param {object} operation - operation object (patch) - * @param {number} index - index of operation in the sequence - * @param {object} [tree] - object where the operation is supposed to be applied - * @param {string} [existingPathFragment] - comes along with `tree` - */ - function validator(operation, index, tree, existingPathFragment) { - if ((typeof operation === 'undefined' ? 'undefined' : _typeof(operation)) !== 'object' || operation === null || _isArray(operation)) { - throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, tree); - } else if (!objOps[operation.op]) { - throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, tree); - } else if (typeof operation.path !== 'string') { - throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, tree); - } else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') { - throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, tree); - } else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) { - throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, tree); - } else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) { - throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, tree); - } else if (tree) { - if (operation.op == "add") { - var pathLen = operation.path.split("/").length; - var existingPathLen = existingPathFragment.split("/").length; - if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) { - throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, tree); - } - } else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') { - if (operation.path !== existingPathFragment) { - throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, tree); - } - } else if (operation.op === 'move' || operation.op === 'copy') { - var existingValue = { op: "_get", path: operation.from, value: undefined }; - var error = jsonpatch.validate([existingValue], tree); - if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') { - throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, tree); - } - } - } - } - jsonpatch.validator = validator; - /** - * Validates a sequence of operations. If `tree` parameter is provided, the sequence is additionally validated against the object tree. - * If error is encountered, returns a JsonPatchError object - * @param sequence - * @param tree - * @returns {JsonPatchError|undefined} - */ - function validate(sequence, tree) { - try { - if (!_isArray(sequence)) { - throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY'); - } - if (tree) { - tree = JSON.parse(JSON.stringify(tree)); //clone tree so that we can safely try applying operations - apply.call(this, tree, sequence, true); - } else { - for (var i = 0; i < sequence.length; i++) { - this.validator(sequence[i], i); - } - } - } catch (e) { - if (e instanceof JsonPatchError) { - return e; - } else { - throw e; - } - } - } - jsonpatch.validate = validate; -})(jsonpatch || (jsonpatch = {})); -if (true) { - exports.apply = jsonpatch.apply; - exports.observe = jsonpatch.observe; - exports.unobserve = jsonpatch.unobserve; - exports.generate = jsonpatch.generate; - exports.compare = jsonpatch.compare; - exports.validate = jsonpatch.validate; - exports.validator = jsonpatch.validator; - exports.JsonPatchError = jsonpatch.JsonPatchError; - exports.Error = jsonpatch.Error; -} - -/***/ }), -/* 180 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -__webpack_require__(89); - -__webpack_require__(103); - -__webpack_require__(104); - -__webpack_require__(108); - -__webpack_require__(109); - -__webpack_require__(111); - -__webpack_require__(113); - -__webpack_require__(114); - -__webpack_require__(115); - -__webpack_require__(116); - -__webpack_require__(117); - -__webpack_require__(118); - -__webpack_require__(119); - -__webpack_require__(120); - -__webpack_require__(122); - -__webpack_require__(124); - -__webpack_require__(125); - -__webpack_require__(126); - -__webpack_require__(127); - -__webpack_require__(128); - -__webpack_require__(129); - -__webpack_require__(130); - -__webpack_require__(131); - -__webpack_require__(132); - -__webpack_require__(133); - -__webpack_require__(134); - -__webpack_require__(135); - -__webpack_require__(136); - -__webpack_require__(78); - -__webpack_require__(137); - -__webpack_require__(138); - -__webpack_require__(140); - -__webpack_require__(141); - -__webpack_require__(142); - -__webpack_require__(143); - -__webpack_require__(144); - -__webpack_require__(145); - -__webpack_require__(146); - -__webpack_require__(148); - -__webpack_require__(149); - -__webpack_require__(150); - -__webpack_require__(152); - -__webpack_require__(153); - -__webpack_require__(154); - -__webpack_require__(201); - -__webpack_require__(202); - -__webpack_require__(203); - -var _editors = __webpack_require__(15); - -var _renderers = __webpack_require__(9); - -var _validators = __webpack_require__(27); - -var _cellTypes = __webpack_require__(81); - -var _core = __webpack_require__(82); - -var _core2 = _interopRequireDefault(_core); - -var _jquery = __webpack_require__(246); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _ghostTable = __webpack_require__(85); - -var _ghostTable2 = _interopRequireDefault(_ghostTable); - -var _array = __webpack_require__(2); - -var arrayHelpers = _interopRequireWildcard(_array); - -var _browser = __webpack_require__(26); - -var browserHelpers = _interopRequireWildcard(_browser); - -var _data = __webpack_require__(84); - -var dataHelpers = _interopRequireWildcard(_data); - -var _date = __webpack_require__(170); - -var dateHelpers = _interopRequireWildcard(_date); - -var _feature = __webpack_require__(34); - -var featureHelpers = _interopRequireWildcard(_feature); - -var _function = __webpack_require__(35); - -var functionHelpers = _interopRequireWildcard(_function); - -var _mixed = __webpack_require__(22); - -var mixedHelpers = _interopRequireWildcard(_mixed); - -var _number = __webpack_require__(6); - -var numberHelpers = _interopRequireWildcard(_number); - -var _object = __webpack_require__(1); - -var objectHelpers = _interopRequireWildcard(_object); - -var _setting = __webpack_require__(83); - -var settingHelpers = _interopRequireWildcard(_setting); - -var _string = __webpack_require__(32); - -var stringHelpers = _interopRequireWildcard(_string); - -var _unicode = __webpack_require__(17); - -var unicodeHelpers = _interopRequireWildcard(_unicode); - -var _element = __webpack_require__(0); - -var domHelpers = _interopRequireWildcard(_element); - -var _event = __webpack_require__(8); - -var domEventHelpers = _interopRequireWildcard(_event); - -var _index = __webpack_require__(247); - -var plugins = _interopRequireWildcard(_index); - -var _plugins = __webpack_require__(5); - -var _defaultSettings = __webpack_require__(174); - -var _defaultSettings2 = _interopRequireDefault(_defaultSettings); - -var _rootInstance = __webpack_require__(173); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function Handsontable(rootElement, userSettings) { - var instance = new _core2.default(rootElement, userSettings || {}, _rootInstance.rootInstanceSymbol); - - instance.init(); - - return instance; -} - -(0, _jquery2.default)(Handsontable); - -Handsontable.Core = _core2.default; -Handsontable.DefaultSettings = _defaultSettings2.default; -Handsontable.EventManager = _eventManager2.default; -Handsontable._getListenersCounter = _eventManager.getListenersCounter; // For MemoryLeak tests - -Handsontable.buildDate = '13/09/2017 11:12:07'; -Handsontable.packageName = 'handsontable'; -Handsontable.version = '0.34.4'; - -var baseVersion = ''; - -if (baseVersion) { - Handsontable.baseVersion = baseVersion; -} - -// Export Hooks singleton -Handsontable.hooks = _pluginHooks2.default.getSingleton(); - -// TODO: Remove this exports after rewrite tests about this module -Handsontable.__GhostTable = _ghostTable2.default; -// - -// Export all helpers to the Handsontable object -var HELPERS = [arrayHelpers, browserHelpers, dataHelpers, dateHelpers, featureHelpers, functionHelpers, mixedHelpers, numberHelpers, objectHelpers, settingHelpers, stringHelpers, unicodeHelpers]; -var DOM = [domHelpers, domEventHelpers]; - -Handsontable.helper = {}; -Handsontable.dom = {}; - -// Fill general helpers. -arrayHelpers.arrayEach(HELPERS, function (helper) { - arrayHelpers.arrayEach(Object.getOwnPropertyNames(helper), function (key) { - if (key.charAt(0) !== '_') { - Handsontable.helper[key] = helper[key]; - } - }); -}); - -// Fill DOM helpers. -arrayHelpers.arrayEach(DOM, function (helper) { - arrayHelpers.arrayEach(Object.getOwnPropertyNames(helper), function (key) { - if (key.charAt(0) !== '_') { - Handsontable.dom[key] = helper[key]; - } - }); -}); - -// Export cell types. -Handsontable.cellTypes = {}; - -arrayHelpers.arrayEach((0, _cellTypes.getRegisteredCellTypeNames)(), function (cellTypeName) { - Handsontable.cellTypes[cellTypeName] = (0, _cellTypes.getCellType)(cellTypeName); -}); - -Handsontable.cellTypes.registerCellType = _cellTypes.registerCellType; -Handsontable.cellTypes.getCellType = _cellTypes.getCellType; - -// Export all registered editors from the Handsontable. -Handsontable.editors = {}; - -arrayHelpers.arrayEach((0, _editors.getRegisteredEditorNames)(), function (editorName) { - Handsontable.editors[stringHelpers.toUpperCaseFirst(editorName) + 'Editor'] = (0, _editors.getEditor)(editorName); -}); - -Handsontable.editors.registerEditor = _editors.registerEditor; -Handsontable.editors.getEditor = _editors.getEditor; - -// Export all registered renderers from the Handsontable. -Handsontable.renderers = {}; - -arrayHelpers.arrayEach((0, _renderers.getRegisteredRendererNames)(), function (rendererName) { - var renderer = (0, _renderers.getRenderer)(rendererName); - - if (rendererName === 'base') { - Handsontable.renderers.cellDecorator = renderer; - } - Handsontable.renderers[stringHelpers.toUpperCaseFirst(rendererName) + 'Renderer'] = renderer; -}); - -Handsontable.renderers.registerRenderer = _renderers.registerRenderer; -Handsontable.renderers.getRenderer = _renderers.getRenderer; - -// Export all registered validators from the Handsontable. -Handsontable.validators = {}; - -arrayHelpers.arrayEach((0, _validators.getRegisteredValidatorNames)(), function (validatorName) { - Handsontable.validators[stringHelpers.toUpperCaseFirst(validatorName) + 'Validator'] = (0, _validators.getValidator)(validatorName); -}); - -Handsontable.validators.registerValidator = _validators.registerValidator; -Handsontable.validators.getValidator = _validators.getValidator; - -// Export all registered plugins from the Handsontable. -Handsontable.plugins = {}; - -arrayHelpers.arrayEach(Object.getOwnPropertyNames(plugins), function (pluginName) { - var plugin = plugins[pluginName]; - - if (pluginName === 'Base') { - Handsontable.plugins[pluginName + 'Plugin'] = plugin; - } else { - Handsontable.plugins[pluginName] = plugin; - } -}); - -Handsontable.plugins.registerPlugin = _plugins.registerPlugin; - -exports.default = Handsontable; - -/***/ }), -/* 181 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(18); -var anObject = __webpack_require__(16); -var getKeys = __webpack_require__(36); - -module.exports = __webpack_require__(20) ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = getKeys(Properties); - var length = keys.length; - var i = 0; - var P; - while (length > i) dP.f(O, P = keys[i++], Properties[P]); - return O; -}; - - -/***/ }), -/* 182 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var create = __webpack_require__(66); -var descriptor = __webpack_require__(43); -var setToStringTag = __webpack_require__(46); -var IteratorPrototype = {}; - -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -__webpack_require__(29)(IteratorPrototype, __webpack_require__(10)('iterator'), function () { return this; }); - -module.exports = function (Constructor, NAME, next) { - Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); - setToStringTag(Constructor, NAME + ' Iterator'); -}; - - -/***/ }), -/* 183 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var has = __webpack_require__(24); -var toObject = __webpack_require__(38); -var IE_PROTO = __webpack_require__(68)('IE_PROTO'); -var ObjectProto = Object.prototype; - -module.exports = Object.getPrototypeOf || function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } return O instanceof Object ? ObjectProto : null; -}; - - -/***/ }), -/* 184 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(14); -var setPrototypeOf = __webpack_require__(102).set; -module.exports = function (that, target, C) { - var S = target.constructor; - var P; - if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) { - setPrototypeOf(that, P); - } return that; -}; - - -/***/ }), -/* 185 */ -/***/ (function(module, exports, __webpack_require__) { - -// 9.4.2.3 ArraySpeciesCreate(originalArray, length) -var speciesConstructor = __webpack_require__(186); - -module.exports = function (original, length) { - return new (speciesConstructor(original))(length); -}; - - -/***/ }), -/* 186 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(14); -var isArray = __webpack_require__(105); -var SPECIES = __webpack_require__(10)('species'); - -module.exports = function (original) { - var C; - if (isArray(original)) { - C = original.constructor; - // cross-realm fallback - if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; - if (isObject(C)) { - C = C[SPECIES]; - if (C === null) C = undefined; - } - } return C === undefined ? Array : C; -}; - - -/***/ }), -/* 187 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.3.20 SpeciesConstructor(O, defaultConstructor) -var anObject = __webpack_require__(16); -var aFunction = __webpack_require__(55); -var SPECIES = __webpack_require__(10)('species'); -module.exports = function (O, D) { - var C = anObject(O).constructor; - var S; - return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); -}; - - -/***/ }), -/* 188 */ -/***/ (function(module, exports) { - -// fast apply, http://jsperf.lnkit.com/fast-apply/5 -module.exports = function (fn, args, that) { - var un = that === undefined; - switch (args.length) { - case 0: return un ? fn() - : fn.call(that); - case 1: return un ? fn(args[0]) - : fn.call(that, args[0]); - case 2: return un ? fn(args[0], args[1]) - : fn.call(that, args[0], args[1]); - case 3: return un ? fn(args[0], args[1], args[2]) - : fn.call(that, args[0], args[1], args[2]); - case 4: return un ? fn(args[0], args[1], args[2], args[3]) - : fn.call(that, args[0], args[1], args[2], args[3]); - } return fn.apply(that, args); -}; - - -/***/ }), -/* 189 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(11); -var macrotask = __webpack_require__(73).set; -var Observer = global.MutationObserver || global.WebKitMutationObserver; -var process = global.process; -var Promise = global.Promise; -var isNode = __webpack_require__(37)(process) == 'process'; - -module.exports = function () { - var head, last, notify; - - var flush = function () { - var parent, fn; - if (isNode && (parent = process.domain)) parent.exit(); - while (head) { - fn = head.fn; - head = head.next; - try { - fn(); - } catch (e) { - if (head) notify(); - else last = undefined; - throw e; - } - } last = undefined; - if (parent) parent.enter(); - }; - - // Node.js - if (isNode) { - notify = function () { - process.nextTick(flush); - }; - // browsers with MutationObserver - } else if (Observer) { - var toggle = true; - var node = document.createTextNode(''); - new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new - notify = function () { - node.data = toggle = !toggle; - }; - // environments with maybe non-completely correct, but existent Promise - } else if (Promise && Promise.resolve) { - var promise = Promise.resolve(); - notify = function () { - promise.then(flush); - }; - // for other environments - macrotask based on: - // - setImmediate - // - MessageChannel - // - window.postMessag - // - onreadystatechange - // - setTimeout - } else { - notify = function () { - // strange IE + webpack dev server bug - use .call(global) - macrotask.call(global, flush); - }; - } - - return function (fn) { - var task = { fn: fn, next: undefined }; - if (last) last.next = task; - if (!head) { - head = task; - notify(); - } last = task; - }; -}; - - -/***/ }), -/* 190 */ -/***/ (function(module, exports) { - -module.exports = function (exec) { - try { - return { e: false, v: exec() }; - } catch (e) { - return { e: true, v: e }; - } -}; - - -/***/ }), -/* 191 */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(16); -var isObject = __webpack_require__(14); -var newPromiseCapability = __webpack_require__(110); - -module.exports = function (C, x) { - anObject(C); - if (isObject(x) && x.constructor === C) return x; - var promiseCapability = newPromiseCapability.f(C); - var resolve = promiseCapability.resolve; - resolve(x); - return promiseCapability.promise; -}; - - -/***/ }), -/* 192 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(11); -var core = __webpack_require__(44); -var LIBRARY = __webpack_require__(58); -var wksExt = __webpack_require__(112); -var defineProperty = __webpack_require__(18).f; -module.exports = function (name) { - var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); - if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); -}; - - -/***/ }), -/* 193 */ -/***/ (function(module, exports, __webpack_require__) { - -// all enumerable object keys, includes symbols -var getKeys = __webpack_require__(36); -var gOPS = __webpack_require__(61); -var pIE = __webpack_require__(48); -module.exports = function (it) { - var result = getKeys(it); - var getSymbols = gOPS.f; - if (getSymbols) { - var symbols = getSymbols(it); - var isEnum = pIE.f; - var i = 0; - var key; - while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); - } return result; -}; - - -/***/ }), -/* 194 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window -var toIObject = __webpack_require__(25); -var gOPN = __webpack_require__(74).f; -var toString = {}.toString; - -var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames - ? Object.getOwnPropertyNames(window) : []; - -var getWindowNames = function (it) { - try { - return gOPN(it); - } catch (e) { - return windowNames.slice(); - } -}; - -module.exports.f = function getOwnPropertyNames(it) { - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); -}; - - -/***/ }), -/* 195 */ -/***/ (function(module, exports) { - -// 7.2.9 SameValue(x, y) -module.exports = Object.is || function is(x, y) { - // eslint-disable-next-line no-self-compare - return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; -}; - - -/***/ }), -/* 196 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(52); -var defined = __webpack_require__(33); -// true -> String#at -// false -> String#codePointAt -module.exports = function (TO_STRING) { - return function (that, pos) { - var s = String(defined(that)); - var i = toInteger(pos); - var l = s.length; - var a, b; - if (i < 0 || i >= l) return TO_STRING ? '' : undefined; - a = s.charCodeAt(i); - return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff - ? TO_STRING ? s.charAt(i) : a - : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; - }; -}; - - -/***/ }), -/* 197 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// 21.2.5.3 get RegExp.prototype.flags -var anObject = __webpack_require__(16); -module.exports = function () { - var that = anObject(this); - var result = ''; - if (that.global) result += 'g'; - if (that.ignoreCase) result += 'i'; - if (that.multiline) result += 'm'; - if (that.unicode) result += 'u'; - if (that.sticky) result += 'y'; - return result; -}; - - -/***/ }), -/* 198 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length) - -var toObject = __webpack_require__(38); -var toAbsoluteIndex = __webpack_require__(53); -var toLength = __webpack_require__(21); - -module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { - var O = toObject(this); - var len = toLength(O.length); - var to = toAbsoluteIndex(target, len); - var from = toAbsoluteIndex(start, len); - var end = arguments.length > 2 ? arguments[2] : undefined; - var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); - var inc = 1; - if (from < to && to < from + count) { - inc = -1; - from += count - 1; - to += count - 1; - } - while (count-- > 0) { - if (from in O) O[to] = O[from]; - else delete O[to]; - to += inc; - from += inc; - } return O; -}; - - -/***/ }), -/* 199 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) - -var toObject = __webpack_require__(38); -var toAbsoluteIndex = __webpack_require__(53); -var toLength = __webpack_require__(21); -module.exports = function fill(value /* , start = 0, end = @length */) { - var O = toObject(this); - var length = toLength(O.length); - var aLen = arguments.length; - var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length); - var end = aLen > 2 ? arguments[2] : undefined; - var endPos = end === undefined ? length : toAbsoluteIndex(end, length); - while (endPos > index) O[index++] = value; - return O; -}; - - -/***/ }), -/* 200 */ -/***/ (function(module, exports, __webpack_require__) { - -// all object keys, includes non-enumerable and symbols -var gOPN = __webpack_require__(74); -var gOPS = __webpack_require__(61); -var anObject = __webpack_require__(16); -var Reflect = __webpack_require__(11).Reflect; -module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { - var keys = gOPN.f(anObject(it)); - var getSymbols = gOPS.f; - return getSymbols ? keys.concat(getSymbols(it)) : keys; -}; - - -/***/ }), -/* 201 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 202 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 203 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 204 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _element = __webpack_require__(0); - -var _base = __webpack_require__(31); - -var _base2 = _interopRequireDefault(_base); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * A overlay that renders ALL available rows & columns positioned on top of the original Walkontable instance and all other overlays. - * Used for debugging purposes to see if the other overlays (that render only part of the rows & columns) are positioned correctly - * - * @class DebugOverlay - */ -var DebugOverlay = function (_Overlay) { - _inherits(DebugOverlay, _Overlay); - - /** - * @param {Walkontable} wotInstance - */ - function DebugOverlay(wotInstance) { - _classCallCheck(this, DebugOverlay); - - var _this = _possibleConstructorReturn(this, (DebugOverlay.__proto__ || Object.getPrototypeOf(DebugOverlay)).call(this, wotInstance)); - - _this.clone = _this.makeClone(_base2.default.CLONE_DEBUG); - _this.clone.wtTable.holder.style.opacity = 0.4; - _this.clone.wtTable.holder.style.textShadow = '0 0 2px #ff0000'; - - (0, _element.addClass)(_this.clone.wtTable.holder.parentNode, 'wtDebugVisible'); - return _this; - } - - return DebugOverlay; -}(_base2.default); - -_base2.default.registerOverlay(_base2.default.CLONE_DEBUG, DebugOverlay); - -exports.default = DebugOverlay; - -/***/ }), -/* 205 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.toSingleLine = toSingleLine; - -var _array = __webpack_require__(2); - -/** - * Tags a multiline string and return new one without line break characters and following spaces. - * - * @param {Array} strings Parts of the entire string without expressions. - * @param {...String} expressions Expressions converted to strings, which are added to the entire string. - * @returns {String} - */ -function toSingleLine(strings) { - for (var _len = arguments.length, expressions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - expressions[_key - 1] = arguments[_key]; - } - - var result = (0, _array.arrayReduce)(strings, function (previousValue, currentValue, index) { - - var valueWithoutWhiteSpaces = currentValue.replace(/(?:\r?\n\s+)/g, ''); - var expressionForIndex = expressions[index] ? expressions[index] : ''; - - return previousValue + valueWithoutWhiteSpaces + expressionForIndex; - }, ''); - - return result.trim(); -} /* eslint-disable import/prefer-default-export */ - -/***/ }), -/* 206 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _base = __webpack_require__(31); - -var _base2 = _interopRequireDefault(_base); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * @class LeftOverlay - */ -var LeftOverlay = function (_Overlay) { - _inherits(LeftOverlay, _Overlay); - - /** - * @param {Walkontable} wotInstance - */ - function LeftOverlay(wotInstance) { - _classCallCheck(this, LeftOverlay); - - var _this = _possibleConstructorReturn(this, (LeftOverlay.__proto__ || Object.getPrototypeOf(LeftOverlay)).call(this, wotInstance)); - - _this.clone = _this.makeClone(_base2.default.CLONE_LEFT); - return _this; - } - - /** - * Checks if overlay should be fully rendered - * - * @returns {Boolean} - */ - - - _createClass(LeftOverlay, [{ - key: 'shouldBeRendered', - value: function shouldBeRendered() { - return !!(this.wot.getSetting('fixedColumnsLeft') || this.wot.getSetting('rowHeaders').length); - } - - /** - * Updates the left overlay position - */ - - }, { - key: 'resetFixedPosition', - value: function resetFixedPosition() { - if (!this.needFullRender || !this.wot.wtTable.holder.parentNode) { - // removed from DOM - return; - } - var overlayRoot = this.clone.wtTable.holder.parentNode; - var headerPosition = 0; - var preventOverflow = this.wot.getSetting('preventOverflow'); - - if (this.trimmingContainer === window && (!preventOverflow || preventOverflow !== 'horizontal')) { - var box = this.wot.wtTable.hider.getBoundingClientRect(); - var left = Math.ceil(box.left); - var right = Math.ceil(box.right); - var finalLeft = void 0; - var finalTop = void 0; - - finalTop = this.wot.wtTable.hider.style.top; - finalTop = finalTop === '' ? 0 : finalTop; - - if (left < 0 && right - overlayRoot.offsetWidth > 0) { - finalLeft = -left; - } else { - finalLeft = 0; - } - headerPosition = finalLeft; - finalLeft += 'px'; - - (0, _element.setOverlayPosition)(overlayRoot, finalLeft, finalTop); - } else { - headerPosition = this.getScrollPosition(); - (0, _element.resetCssTransform)(overlayRoot); - } - this.adjustHeaderBordersPosition(headerPosition); - - this.adjustElementsSize(); - } - - /** - * Sets the main overlay's horizontal scroll position - * - * @param {Number} pos - */ - - }, { - key: 'setScrollPosition', - value: function setScrollPosition(pos) { - if (this.mainTableScrollableElement === window) { - window.scrollTo(pos, (0, _element.getWindowScrollTop)()); - } else { - this.mainTableScrollableElement.scrollLeft = pos; - } - } - - /** - * Triggers onScroll hook callback - */ - - }, { - key: 'onScroll', - value: function onScroll() { - this.wot.getSetting('onScrollVertically'); - } - - /** - * Calculates total sum cells width - * - * @param {Number} from Column index which calculates started from - * @param {Number} to Column index where calculation is finished - * @returns {Number} Width sum - */ - - }, { - key: 'sumCellSizes', - value: function sumCellSizes(from, to) { - var sum = 0; - var defaultColumnWidth = this.wot.wtSettings.defaultColumnWidth; - - while (from < to) { - sum += this.wot.wtTable.getStretchedColumnWidth(from) || defaultColumnWidth; - from++; - } - - return sum; - } - - /** - * Adjust overlay root element, childs and master table element sizes (width, height). - * - * @param {Boolean} [force=false] - */ - - }, { - key: 'adjustElementsSize', - value: function adjustElementsSize() { - var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - this.updateTrimmingContainer(); - - if (this.needFullRender || force) { - this.adjustRootElementSize(); - this.adjustRootChildrenSize(); - - if (!force) { - this.areElementSizesAdjusted = true; - } - } - } - - /** - * Adjust overlay root element size (width and height). - */ - - }, { - key: 'adjustRootElementSize', - value: function adjustRootElementSize() { - var masterHolder = this.wot.wtTable.holder; - var scrollbarHeight = masterHolder.clientHeight === masterHolder.offsetHeight ? 0 : (0, _element.getScrollbarWidth)(); - var overlayRoot = this.clone.wtTable.holder.parentNode; - var overlayRootStyle = overlayRoot.style; - var preventOverflow = this.wot.getSetting('preventOverflow'); - var tableWidth = void 0; - - if (this.trimmingContainer !== window || preventOverflow === 'vertical') { - var height = this.wot.wtViewport.getWorkspaceHeight() - scrollbarHeight; - - height = Math.min(height, (0, _element.innerHeight)(this.wot.wtTable.wtRootElement)); - - overlayRootStyle.height = height + 'px'; - } else { - overlayRootStyle.height = ''; - } - - this.clone.wtTable.holder.style.height = overlayRootStyle.height; - - tableWidth = (0, _element.outerWidth)(this.clone.wtTable.TABLE); - overlayRootStyle.width = (tableWidth === 0 ? tableWidth : tableWidth + 4) + 'px'; - } - - /** - * Adjust overlay root childs size - */ - - }, { - key: 'adjustRootChildrenSize', - value: function adjustRootChildrenSize() { - var scrollbarWidth = (0, _element.getScrollbarWidth)(); - - this.clone.wtTable.hider.style.height = this.hider.style.height; - this.clone.wtTable.holder.style.height = this.clone.wtTable.holder.parentNode.style.height; - - if (scrollbarWidth === 0) { - scrollbarWidth = 30; - } - this.clone.wtTable.holder.style.width = parseInt(this.clone.wtTable.holder.parentNode.style.width, 10) + scrollbarWidth + 'px'; - } - - /** - * Adjust the overlay dimensions and position - */ - - }, { - key: 'applyToDOM', - value: function applyToDOM() { - var total = this.wot.getSetting('totalColumns'); - - if (!this.areElementSizesAdjusted) { - this.adjustElementsSize(); - } - if (typeof this.wot.wtViewport.columnsRenderCalculator.startPosition === 'number') { - this.spreader.style.left = this.wot.wtViewport.columnsRenderCalculator.startPosition + 'px'; - } else if (total === 0) { - this.spreader.style.left = '0'; - } else { - throw new Error('Incorrect value of the columnsRenderCalculator'); - } - this.spreader.style.right = ''; - - if (this.needFullRender) { - this.syncOverlayOffset(); - } - } - - /** - * Synchronize calculated top position to an element - */ - - }, { - key: 'syncOverlayOffset', - value: function syncOverlayOffset() { - if (typeof this.wot.wtViewport.rowsRenderCalculator.startPosition === 'number') { - this.clone.wtTable.spreader.style.top = this.wot.wtViewport.rowsRenderCalculator.startPosition + 'px'; - } else { - this.clone.wtTable.spreader.style.top = ''; - } - } - - /** - * Scrolls horizontally to a column at the left edge of the viewport - * - * @param sourceCol {Number} Column index which you want to scroll to - * @param [beyondRendered=false] {Boolean} if `true`, scrolls according to the bottom edge (top edge is by default) - */ - - }, { - key: 'scrollTo', - value: function scrollTo(sourceCol, beyondRendered) { - var newX = this.getTableParentOffset(); - var sourceInstance = this.wot.cloneSource ? this.wot.cloneSource : this.wot; - var mainHolder = sourceInstance.wtTable.holder; - var scrollbarCompensation = 0; - - if (beyondRendered && mainHolder.offsetWidth !== mainHolder.clientWidth) { - scrollbarCompensation = (0, _element.getScrollbarWidth)(); - } - if (beyondRendered) { - newX += this.sumCellSizes(0, sourceCol + 1); - newX -= this.wot.wtViewport.getViewportWidth(); - } else { - newX += this.sumCellSizes(this.wot.getSetting('fixedColumnsLeft'), sourceCol); - } - newX += scrollbarCompensation; - - this.setScrollPosition(newX); - } - - /** - * Gets table parent left position - * - * @returns {Number} - */ - - }, { - key: 'getTableParentOffset', - value: function getTableParentOffset() { - var preventOverflow = this.wot.getSetting('preventOverflow'); - var offset = 0; - - if (!preventOverflow && this.trimmingContainer === window) { - offset = this.wot.wtTable.holderOffset.left; - } - - return offset; - } - - /** - * Gets the main overlay's horizontal scroll position - * - * @returns {Number} Main table's vertical scroll position - */ - - }, { - key: 'getScrollPosition', - value: function getScrollPosition() { - return (0, _element.getScrollLeft)(this.mainTableScrollableElement); - } - - /** - * Adds css classes to hide the header border's header (cell-selection border hiding issue) - * - * @param {Number} position Header X position if trimming container is window or scroll top if not - */ - - }, { - key: 'adjustHeaderBordersPosition', - value: function adjustHeaderBordersPosition(position) { - var masterParent = this.wot.wtTable.holder.parentNode; - var rowHeaders = this.wot.getSetting('rowHeaders'); - var fixedColumnsLeft = this.wot.getSetting('fixedColumnsLeft'); - var totalRows = this.wot.getSetting('totalRows'); - - if (totalRows) { - (0, _element.removeClass)(masterParent, 'emptyRows'); - } else { - (0, _element.addClass)(masterParent, 'emptyRows'); - } - - if (fixedColumnsLeft && !rowHeaders.length) { - (0, _element.addClass)(masterParent, 'innerBorderLeft'); - } else if (!fixedColumnsLeft && rowHeaders.length) { - var previousState = (0, _element.hasClass)(masterParent, 'innerBorderLeft'); - - if (position) { - (0, _element.addClass)(masterParent, 'innerBorderLeft'); - } else { - (0, _element.removeClass)(masterParent, 'innerBorderLeft'); - } - if (!previousState && position || previousState && !position) { - this.wot.wtOverlays.adjustElementsSize(); - } - } - } - }]); - - return LeftOverlay; -}(_base2.default); - -_base2.default.registerOverlay(_base2.default.CLONE_LEFT, LeftOverlay); - -exports.default = LeftOverlay; - -/***/ }), -/* 207 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _base = __webpack_require__(31); - -var _base2 = _interopRequireDefault(_base); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * @class TopOverlay - */ -var TopOverlay = function (_Overlay) { - _inherits(TopOverlay, _Overlay); - - /** - * @param {Walkontable} wotInstance - */ - function TopOverlay(wotInstance) { - _classCallCheck(this, TopOverlay); - - var _this = _possibleConstructorReturn(this, (TopOverlay.__proto__ || Object.getPrototypeOf(TopOverlay)).call(this, wotInstance)); - - _this.clone = _this.makeClone(_base2.default.CLONE_TOP); - return _this; - } - - /** - * Checks if overlay should be fully rendered - * - * @returns {Boolean} - */ - - - _createClass(TopOverlay, [{ - key: 'shouldBeRendered', - value: function shouldBeRendered() { - return !!(this.wot.getSetting('fixedRowsTop') || this.wot.getSetting('columnHeaders').length); - } - - /** - * Updates the top overlay position - */ - - }, { - key: 'resetFixedPosition', - value: function resetFixedPosition() { - if (!this.needFullRender || !this.wot.wtTable.holder.parentNode) { - // removed from DOM - return; - } - var overlayRoot = this.clone.wtTable.holder.parentNode; - var headerPosition = 0; - var preventOverflow = this.wot.getSetting('preventOverflow'); - - if (this.trimmingContainer === window && (!preventOverflow || preventOverflow !== 'vertical')) { - var box = this.wot.wtTable.hider.getBoundingClientRect(); - var top = Math.ceil(box.top); - var bottom = Math.ceil(box.bottom); - var finalLeft = void 0; - var finalTop = void 0; - - finalLeft = this.wot.wtTable.hider.style.left; - finalLeft = finalLeft === '' ? 0 : finalLeft; - - if (top < 0 && bottom - overlayRoot.offsetHeight > 0) { - finalTop = -top; - } else { - finalTop = 0; - } - headerPosition = finalTop; - finalTop += 'px'; - - (0, _element.setOverlayPosition)(overlayRoot, finalLeft, finalTop); - } else { - headerPosition = this.getScrollPosition(); - (0, _element.resetCssTransform)(overlayRoot); - } - - this.adjustHeaderBordersPosition(headerPosition); - - this.adjustElementsSize(); - } - - /** - * Sets the main overlay's vertical scroll position - * - * @param {Number} pos - */ - - }, { - key: 'setScrollPosition', - value: function setScrollPosition(pos) { - if (this.mainTableScrollableElement === window) { - window.scrollTo((0, _element.getWindowScrollLeft)(), pos); - } else { - this.mainTableScrollableElement.scrollTop = pos; - } - } - - /** - * Triggers onScroll hook callback - */ - - }, { - key: 'onScroll', - value: function onScroll() { - this.wot.getSetting('onScrollHorizontally'); - } - - /** - * Calculates total sum cells height - * - * @param {Number} from Row index which calculates started from - * @param {Number} to Row index where calculation is finished - * @returns {Number} Height sum - */ - - }, { - key: 'sumCellSizes', - value: function sumCellSizes(from, to) { - var sum = 0; - var defaultRowHeight = this.wot.wtSettings.settings.defaultRowHeight; - - while (from < to) { - var height = this.wot.wtTable.getRowHeight(from); - - sum += height === void 0 ? defaultRowHeight : height; - from++; - } - - return sum; - } - - /** - * Adjust overlay root element, childs and master table element sizes (width, height). - * - * @param {Boolean} [force=false] - */ - - }, { - key: 'adjustElementsSize', - value: function adjustElementsSize() { - var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - this.updateTrimmingContainer(); - - if (this.needFullRender || force) { - this.adjustRootElementSize(); - this.adjustRootChildrenSize(); - - if (!force) { - this.areElementSizesAdjusted = true; - } - } - } - - /** - * Adjust overlay root element size (width and height). - */ - - }, { - key: 'adjustRootElementSize', - value: function adjustRootElementSize() { - var masterHolder = this.wot.wtTable.holder; - var scrollbarWidth = masterHolder.clientWidth === masterHolder.offsetWidth ? 0 : (0, _element.getScrollbarWidth)(); - var overlayRoot = this.clone.wtTable.holder.parentNode; - var overlayRootStyle = overlayRoot.style; - var preventOverflow = this.wot.getSetting('preventOverflow'); - var tableHeight = void 0; - - if (this.trimmingContainer !== window || preventOverflow === 'horizontal') { - var width = this.wot.wtViewport.getWorkspaceWidth() - scrollbarWidth; - - width = Math.min(width, (0, _element.innerWidth)(this.wot.wtTable.wtRootElement)); - - overlayRootStyle.width = width + 'px'; - } else { - overlayRootStyle.width = ''; - } - - this.clone.wtTable.holder.style.width = overlayRootStyle.width; - - tableHeight = (0, _element.outerHeight)(this.clone.wtTable.TABLE); - overlayRootStyle.height = (tableHeight === 0 ? tableHeight : tableHeight + 4) + 'px'; - } - - /** - * Adjust overlay root childs size - */ - - }, { - key: 'adjustRootChildrenSize', - value: function adjustRootChildrenSize() { - var scrollbarWidth = (0, _element.getScrollbarWidth)(); - - this.clone.wtTable.hider.style.width = this.hider.style.width; - this.clone.wtTable.holder.style.width = this.clone.wtTable.holder.parentNode.style.width; - - if (scrollbarWidth === 0) { - scrollbarWidth = 30; - } - this.clone.wtTable.holder.style.height = parseInt(this.clone.wtTable.holder.parentNode.style.height, 10) + scrollbarWidth + 'px'; - } - - /** - * Adjust the overlay dimensions and position - */ - - }, { - key: 'applyToDOM', - value: function applyToDOM() { - var total = this.wot.getSetting('totalRows'); - - if (!this.areElementSizesAdjusted) { - this.adjustElementsSize(); - } - if (typeof this.wot.wtViewport.rowsRenderCalculator.startPosition === 'number') { - this.spreader.style.top = this.wot.wtViewport.rowsRenderCalculator.startPosition + 'px'; - } else if (total === 0) { - // can happen if there are 0 rows - this.spreader.style.top = '0'; - } else { - throw new Error('Incorrect value of the rowsRenderCalculator'); - } - this.spreader.style.bottom = ''; - - if (this.needFullRender) { - this.syncOverlayOffset(); - } - } - - /** - * Synchronize calculated left position to an element - */ - - }, { - key: 'syncOverlayOffset', - value: function syncOverlayOffset() { - if (typeof this.wot.wtViewport.columnsRenderCalculator.startPosition === 'number') { - this.clone.wtTable.spreader.style.left = this.wot.wtViewport.columnsRenderCalculator.startPosition + 'px'; - } else { - this.clone.wtTable.spreader.style.left = ''; - } - } - - /** - * Scrolls vertically to a row - * - * @param sourceRow {Number} Row index which you want to scroll to - * @param [bottomEdge=false] {Boolean} if `true`, scrolls according to the bottom edge (top edge is by default) - */ - - }, { - key: 'scrollTo', - value: function scrollTo(sourceRow, bottomEdge) { - var newY = this.getTableParentOffset(); - var sourceInstance = this.wot.cloneSource ? this.wot.cloneSource : this.wot; - var mainHolder = sourceInstance.wtTable.holder; - var scrollbarCompensation = 0; - - if (bottomEdge && mainHolder.offsetHeight !== mainHolder.clientHeight) { - scrollbarCompensation = (0, _element.getScrollbarWidth)(); - } - - if (bottomEdge) { - var fixedRowsBottom = this.wot.getSetting('fixedRowsBottom'); - var fixedRowsTop = this.wot.getSetting('fixedRowsTop'); - var totalRows = this.wot.getSetting('totalRows'); - - newY += this.sumCellSizes(0, sourceRow + 1); - newY -= this.wot.wtViewport.getViewportHeight() - this.sumCellSizes(totalRows - fixedRowsBottom, totalRows); - // Fix 1 pixel offset when cell is selected - newY += 1; - } else { - newY += this.sumCellSizes(this.wot.getSetting('fixedRowsTop'), sourceRow); - } - newY += scrollbarCompensation; - - this.setScrollPosition(newY); - } - - /** - * Gets table parent top position - * - * @returns {Number} - */ - - }, { - key: 'getTableParentOffset', - value: function getTableParentOffset() { - if (this.mainTableScrollableElement === window) { - return this.wot.wtTable.holderOffset.top; - } - return 0; - } - - /** - * Gets the main overlay's vertical scroll position - * - * @returns {Number} Main table's vertical scroll position - */ - - }, { - key: 'getScrollPosition', - value: function getScrollPosition() { - return (0, _element.getScrollTop)(this.mainTableScrollableElement); - } - - /** - * Redraw borders of selection - * - * @param {WalkontableSelection} selection Selection for redraw - */ - - }, { - key: 'redrawSelectionBorders', - value: function redrawSelectionBorders(selection) { - if (selection && selection.cellRange) { - var border = selection.getBorder(this.wot); - - if (border) { - var corners = selection.getCorners(); - border.disappear(); - border.appear(corners); - } - } - } - - /** - * Redrawing borders of all selections - */ - - }, { - key: 'redrawAllSelectionsBorders', - value: function redrawAllSelectionsBorders() { - var selections = this.wot.selections; - - this.redrawSelectionBorders(selections.current); - this.redrawSelectionBorders(selections.area); - this.redrawSelectionBorders(selections.fill); - this.wot.wtTable.wot.wtOverlays.leftOverlay.refresh(); - } - - /** - * Adds css classes to hide the header border's header (cell-selection border hiding issue) - * - * @param {Number} position Header Y position if trimming container is window or scroll top if not - */ - - }, { - key: 'adjustHeaderBordersPosition', - value: function adjustHeaderBordersPosition(position) { - var masterParent = this.wot.wtTable.holder.parentNode; - var totalColumns = this.wot.getSetting('totalColumns'); - - if (totalColumns) { - (0, _element.removeClass)(masterParent, 'emptyColumns'); - } else { - (0, _element.addClass)(masterParent, 'emptyColumns'); - } - - if (this.wot.getSetting('fixedRowsTop') === 0 && this.wot.getSetting('columnHeaders').length > 0) { - var previousState = (0, _element.hasClass)(masterParent, 'innerBorderTop'); - - if (position || this.wot.getSetting('totalRows') === 0) { - (0, _element.addClass)(masterParent, 'innerBorderTop'); - } else { - (0, _element.removeClass)(masterParent, 'innerBorderTop'); - } - - if (!previousState && position || previousState && !position) { - this.wot.wtOverlays.adjustElementsSize(); - - // cell borders should be positioned once again, - // because we added / removed 1px border from table header - this.redrawAllSelectionsBorders(); - } - } - - // nasty workaround for double border in the header, TODO: find a pure-css solution - if (this.wot.getSetting('rowHeaders').length === 0) { - var secondHeaderCell = this.clone.wtTable.THEAD.querySelectorAll('th:nth-of-type(2)'); - - if (secondHeaderCell) { - for (var i = 0; i < secondHeaderCell.length; i++) { - secondHeaderCell[i].style['border-left-width'] = 0; - } - } - } - } - }]); - - return TopOverlay; -}(_base2.default); - -_base2.default.registerOverlay(_base2.default.CLONE_TOP, TopOverlay); - -exports.default = TopOverlay; - -/***/ }), -/* 208 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _base = __webpack_require__(31); - -var _base2 = _interopRequireDefault(_base); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * @class TopLeftCornerOverlay - */ -var TopLeftCornerOverlay = function (_Overlay) { - _inherits(TopLeftCornerOverlay, _Overlay); - - /** - * @param {Walkontable} wotInstance - */ - function TopLeftCornerOverlay(wotInstance) { - _classCallCheck(this, TopLeftCornerOverlay); - - var _this = _possibleConstructorReturn(this, (TopLeftCornerOverlay.__proto__ || Object.getPrototypeOf(TopLeftCornerOverlay)).call(this, wotInstance)); - - _this.clone = _this.makeClone(_base2.default.CLONE_TOP_LEFT_CORNER); - return _this; - } - - /** - * Checks if overlay should be fully rendered - * - * @returns {Boolean} - */ - - - _createClass(TopLeftCornerOverlay, [{ - key: 'shouldBeRendered', - value: function shouldBeRendered() { - return !!((this.wot.getSetting('fixedRowsTop') || this.wot.getSetting('columnHeaders').length) && (this.wot.getSetting('fixedColumnsLeft') || this.wot.getSetting('rowHeaders').length)); - } - - /** - * Updates the corner overlay position - */ - - }, { - key: 'resetFixedPosition', - value: function resetFixedPosition() { - this.updateTrimmingContainer(); - - if (!this.wot.wtTable.holder.parentNode) { - // removed from DOM - return; - } - var overlayRoot = this.clone.wtTable.holder.parentNode; - var tableHeight = (0, _element.outerHeight)(this.clone.wtTable.TABLE); - var tableWidth = (0, _element.outerWidth)(this.clone.wtTable.TABLE); - var preventOverflow = this.wot.getSetting('preventOverflow'); - - if (this.trimmingContainer === window) { - var box = this.wot.wtTable.hider.getBoundingClientRect(); - var top = Math.ceil(box.top); - var left = Math.ceil(box.left); - var bottom = Math.ceil(box.bottom); - var right = Math.ceil(box.right); - var finalLeft = '0'; - var finalTop = '0'; - - if (!preventOverflow || preventOverflow === 'vertical') { - if (left < 0 && right - overlayRoot.offsetWidth > 0) { - finalLeft = -left + 'px'; - } - } - - if (!preventOverflow || preventOverflow === 'horizontal') { - if (top < 0 && bottom - overlayRoot.offsetHeight > 0) { - finalTop = -top + 'px'; - } - } - (0, _element.setOverlayPosition)(overlayRoot, finalLeft, finalTop); - } else { - (0, _element.resetCssTransform)(overlayRoot); - } - overlayRoot.style.height = (tableHeight === 0 ? tableHeight : tableHeight + 4) + 'px'; - overlayRoot.style.width = (tableWidth === 0 ? tableWidth : tableWidth + 4) + 'px'; - } - }]); - - return TopLeftCornerOverlay; -}(_base2.default); - -_base2.default.registerOverlay(_base2.default.CLONE_TOP_LEFT_CORNER, TopLeftCornerOverlay); - -exports.default = TopLeftCornerOverlay; - -/***/ }), -/* 209 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _border2 = __webpack_require__(167); - -var _border3 = _interopRequireDefault(_border2); - -var _coords = __webpack_require__(49); - -var _coords2 = _interopRequireDefault(_coords); - -var _range = __webpack_require__(79); - -var _range2 = _interopRequireDefault(_range); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class Selection - */ -var Selection = function () { - /** - * @param {Object} settings - * @param {CellRange} cellRange - */ - function Selection(settings, cellRange) { - _classCallCheck(this, Selection); - - this.settings = settings; - this.cellRange = cellRange || null; - this.instanceBorders = {}; - } - - /** - * Each Walkontable clone requires it's own border for every selection. This method creates and returns selection - * borders per instance - * - * @param {Walkontable} wotInstance - * @returns {Border} - */ - - - _createClass(Selection, [{ - key: 'getBorder', - value: function getBorder(wotInstance) { - if (this.instanceBorders[wotInstance.guid]) { - return this.instanceBorders[wotInstance.guid]; - } - - // where is this returned? - this.instanceBorders[wotInstance.guid] = new _border3.default(wotInstance, this.settings); - } - - /** - * Checks if selection is empty - * - * @returns {Boolean} - */ - - }, { - key: 'isEmpty', - value: function isEmpty() { - return this.cellRange === null; - } - - /** - * Adds a cell coords to the selection - * - * @param {CellCoords} coords - */ - - }, { - key: 'add', - value: function add(coords) { - if (this.isEmpty()) { - this.cellRange = new _range2.default(coords, coords, coords); - } else { - this.cellRange.expand(coords); - } - } - - /** - * If selection range from or to property equals oldCoords, replace it with newCoords. Return boolean - * information about success - * - * @param {CellCoords} oldCoords - * @param {CellCoords} newCoords - * @returns {Boolean} - */ - - }, { - key: 'replace', - value: function replace(oldCoords, newCoords) { - if (!this.isEmpty()) { - if (this.cellRange.from.isEqual(oldCoords)) { - this.cellRange.from = newCoords; - - return true; - } - if (this.cellRange.to.isEqual(oldCoords)) { - this.cellRange.to = newCoords; - - return true; - } - } - - return false; - } - - /** - * Clears selection - */ - - }, { - key: 'clear', - value: function clear() { - this.cellRange = null; - } - - /** - * Returns the top left (TL) and bottom right (BR) selection coordinates - * - * @returns {Array} Returns array of coordinates for example `[1, 1, 5, 5]` - */ - - }, { - key: 'getCorners', - value: function getCorners() { - var topLeft = this.cellRange.getTopLeftCorner(); - var bottomRight = this.cellRange.getBottomRightCorner(); - - return [topLeft.row, topLeft.col, bottomRight.row, bottomRight.col]; - } - - /** - * Adds class name to cell element at given coords - * - * @param {Walkontable} wotInstance Walkontable instance - * @param {Number} sourceRow Cell row coord - * @param {Number} sourceColumn Cell column coord - * @param {String} className Class name - */ - - }, { - key: 'addClassAtCoords', - value: function addClassAtCoords(wotInstance, sourceRow, sourceColumn, className) { - var TD = wotInstance.wtTable.getCell(new _coords2.default(sourceRow, sourceColumn)); - - if ((typeof TD === 'undefined' ? 'undefined' : _typeof(TD)) === 'object') { - (0, _element.addClass)(TD, className); - } - } - - /** - * @param wotInstance - */ - - }, { - key: 'draw', - value: function draw(wotInstance) { - if (this.isEmpty()) { - if (this.settings.border) { - var border = this.getBorder(wotInstance); - - if (border) { - border.disappear(); - } - } - - return; - } - var renderedRows = wotInstance.wtTable.getRenderedRowsCount(); - var renderedColumns = wotInstance.wtTable.getRenderedColumnsCount(); - var corners = this.getCorners(); - var sourceRow = void 0, - sourceCol = void 0, - TH = void 0; - - for (var column = 0; column < renderedColumns; column++) { - sourceCol = wotInstance.wtTable.columnFilter.renderedToSource(column); - - if (sourceCol >= corners[1] && sourceCol <= corners[3]) { - TH = wotInstance.wtTable.getColumnHeader(sourceCol); - - if (TH) { - var newClasses = []; - - if (this.settings.highlightHeaderClassName) { - newClasses.push(this.settings.highlightHeaderClassName); - } - - if (this.settings.highlightColumnClassName) { - newClasses.push(this.settings.highlightColumnClassName); - } - - (0, _element.addClass)(TH, newClasses); - } - } - } - - for (var row = 0; row < renderedRows; row++) { - sourceRow = wotInstance.wtTable.rowFilter.renderedToSource(row); - - if (sourceRow >= corners[0] && sourceRow <= corners[2]) { - TH = wotInstance.wtTable.getRowHeader(sourceRow); - - if (TH) { - var _newClasses = []; - - if (this.settings.highlightHeaderClassName) { - _newClasses.push(this.settings.highlightHeaderClassName); - } - - if (this.settings.highlightRowClassName) { - _newClasses.push(this.settings.highlightRowClassName); - } - - (0, _element.addClass)(TH, _newClasses); - } - } - - for (var _column = 0; _column < renderedColumns; _column++) { - sourceCol = wotInstance.wtTable.columnFilter.renderedToSource(_column); - - if (sourceRow >= corners[0] && sourceRow <= corners[2] && sourceCol >= corners[1] && sourceCol <= corners[3]) { - // selected cell - if (this.settings.className) { - this.addClassAtCoords(wotInstance, sourceRow, sourceCol, this.settings.className); - } - } else if (sourceRow >= corners[0] && sourceRow <= corners[2]) { - // selection is in this row - if (this.settings.highlightRowClassName) { - this.addClassAtCoords(wotInstance, sourceRow, sourceCol, this.settings.highlightRowClassName); - } - } else if (sourceCol >= corners[1] && sourceCol <= corners[3]) { - // selection is in this column - if (this.settings.highlightColumnClassName) { - this.addClassAtCoords(wotInstance, sourceRow, sourceCol, this.settings.highlightColumnClassName); - } - } - } - } - wotInstance.getSetting('onBeforeDrawBorders', corners, this.settings.className); - - if (this.settings.border) { - var _border = this.getBorder(wotInstance); - - if (_border) { - // warning! border.appear modifies corners! - _border.appear(corners); - } - } - } - }]); - - return Selection; -}(); - -exports.default = Selection; - -/***/ }), -/* 210 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * autoResize - resizes a DOM element to the width and height of another DOM element - * - * Copyright 2014, Marcin Warpechowski - * Licensed under the MIT license - */ - -function autoResize() { - var defaults = { - minHeight: 200, - maxHeight: 300, - minWidth: 100, - maxWidth: 300 - }, - el, - body = document.body, - text = document.createTextNode(''), - span = document.createElement('SPAN'), - observe = function observe(element, event, handler) { - if (element.attachEvent) { - element.attachEvent('on' + event, handler); - } else { - element.addEventListener(event, handler, false); - } - }, - _unObserve = function _unObserve(element, event, handler) { - if (element.removeEventListener) { - element.removeEventListener(event, handler, false); - } else { - element.detachEvent('on' + event, handler); - } - }, - resize = function resize(newChar) { - var width, scrollHeight; - - if (!newChar) { - newChar = ""; - } else if (!/^[a-zA-Z \.,\\\/\|0-9]$/.test(newChar)) { - newChar = "."; - } - - if (text.textContent !== void 0) { - text.textContent = el.value + newChar; - } else { - text.data = el.value + newChar; //IE8 - } - span.style.fontSize = getComputedStyle(el).fontSize; - span.style.fontFamily = getComputedStyle(el).fontFamily; - span.style.whiteSpace = "pre"; - - body.appendChild(span); - width = span.clientWidth + 2; - body.removeChild(span); - - el.style.height = defaults.minHeight + 'px'; - - if (defaults.minWidth > width) { - el.style.width = defaults.minWidth + 'px'; - } else if (width > defaults.maxWidth) { - el.style.width = defaults.maxWidth + 'px'; - } else { - el.style.width = width + 'px'; - } - scrollHeight = el.scrollHeight ? el.scrollHeight - 1 : 0; - - if (defaults.minHeight > scrollHeight) { - el.style.height = defaults.minHeight + 'px'; - } else if (defaults.maxHeight < scrollHeight) { - el.style.height = defaults.maxHeight + 'px'; - el.style.overflowY = 'visible'; - } else { - el.style.height = scrollHeight + 'px'; - } - }, - delayedResize = function delayedResize() { - window.setTimeout(resize, 0); - }, - extendDefaults = function extendDefaults(config) { - - if (config && config.minHeight) { - if (config.minHeight == 'inherit') { - defaults.minHeight = el.clientHeight; - } else { - var minHeight = parseInt(config.minHeight); - if (!isNaN(minHeight)) { - defaults.minHeight = minHeight; - } - } - } - - if (config && config.maxHeight) { - if (config.maxHeight == 'inherit') { - defaults.maxHeight = el.clientHeight; - } else { - var maxHeight = parseInt(config.maxHeight); - if (!isNaN(maxHeight)) { - defaults.maxHeight = maxHeight; - } - } - } - - if (config && config.minWidth) { - if (config.minWidth == 'inherit') { - defaults.minWidth = el.clientWidth; - } else { - var minWidth = parseInt(config.minWidth); - if (!isNaN(minWidth)) { - defaults.minWidth = minWidth; - } - } - } - - if (config && config.maxWidth) { - if (config.maxWidth == 'inherit') { - defaults.maxWidth = el.clientWidth; - } else { - var maxWidth = parseInt(config.maxWidth); - if (!isNaN(maxWidth)) { - defaults.maxWidth = maxWidth; - } - } - } - - if (!span.firstChild) { - span.className = "autoResize"; - span.style.display = 'inline-block'; - span.appendChild(text); - } - }, - _init = function _init(el_, config, doObserve) { - el = el_; - extendDefaults(config); - - if (el.nodeName == 'TEXTAREA') { - - el.style.resize = 'none'; - el.style.overflowY = ''; - el.style.height = defaults.minHeight + 'px'; - el.style.minWidth = defaults.minWidth + 'px'; - el.style.maxWidth = defaults.maxWidth + 'px'; - el.style.overflowY = 'hidden'; - } - - if (doObserve) { - observe(el, 'change', resize); - observe(el, 'cut', delayedResize); - observe(el, 'paste', delayedResize); - observe(el, 'drop', delayedResize); - observe(el, 'keydown', delayedResize); - observe(el, 'focus', resize); - } - - resize(); - }; - - function getComputedStyle(element) { - return element.currentStyle || document.defaultView.getComputedStyle(element); - } - - return { - init: function init(el_, config, doObserve) { - _init(el_, config, doObserve); - }, - unObserve: function unObserve() { - _unObserve(el, 'change', resize); - _unObserve(el, 'cut', delayedResize); - _unObserve(el, 'paste', delayedResize); - _unObserve(el, 'drop', delayedResize); - _unObserve(el, 'keydown', delayedResize); - _unObserve(el, 'focus', resize); - }, - resize: resize - }; -} - -if (true) { - module.exports = autoResize; -} - -/***/ }), -/* 211 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _baseEditor = __webpack_require__(41); - -var _baseEditor2 = _interopRequireDefault(_baseEditor); - -var _element = __webpack_require__(0); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * @private - * @editor CheckboxEditor - * @class CheckboxEditor - */ -var CheckboxEditor = function (_BaseEditor) { - _inherits(CheckboxEditor, _BaseEditor); - - function CheckboxEditor() { - _classCallCheck(this, CheckboxEditor); - - return _possibleConstructorReturn(this, (CheckboxEditor.__proto__ || Object.getPrototypeOf(CheckboxEditor)).apply(this, arguments)); - } - - _createClass(CheckboxEditor, [{ - key: 'beginEditing', - value: function beginEditing(initialValue, event) { - // editorManager return double click event as undefined - if (event === void 0) { - var checkbox = this.TD.querySelector('input[type="checkbox"]'); - - if (!(0, _element.hasClass)(checkbox, 'htBadValue')) { - checkbox.click(); - } - } - } - }, { - key: 'finishEditing', - value: function finishEditing() {} - }, { - key: 'init', - value: function init() {} - }, { - key: 'open', - value: function open() {} - }, { - key: 'close', - value: function close() {} - }, { - key: 'getValue', - value: function getValue() {} - }, { - key: 'setValue', - value: function setValue() {} - }, { - key: 'focus', - value: function focus() {} - }]); - - return CheckboxEditor; -}(_baseEditor2.default); - -exports.default = CheckboxEditor; - -/***/ }), -/* 212 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _moment = __webpack_require__(50); - -var _moment2 = _interopRequireDefault(_moment); - -var _pikaday = __webpack_require__(213); - -var _pikaday2 = _interopRequireDefault(_pikaday); - -__webpack_require__(214); - -var _element = __webpack_require__(0); - -var _object = __webpack_require__(1); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _unicode = __webpack_require__(17); - -var _event = __webpack_require__(8); - -var _textEditor = __webpack_require__(51); - -var _textEditor2 = _interopRequireDefault(_textEditor); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * @private - * @editor DateEditor - * @class DateEditor - * @dependencies TextEditor moment pikaday - */ -var DateEditor = function (_TextEditor) { - _inherits(DateEditor, _TextEditor); - - /** - * @param {Core} hotInstance Handsontable instance - * @private - */ - function DateEditor(hotInstance) { - _classCallCheck(this, DateEditor); - - // TODO: Move this option to general settings - var _this = _possibleConstructorReturn(this, (DateEditor.__proto__ || Object.getPrototypeOf(DateEditor)).call(this, hotInstance)); - - _this.defaultDateFormat = 'DD/MM/YYYY'; - _this.isCellEdited = false; - _this.parentDestroyed = false; - return _this; - } - - _createClass(DateEditor, [{ - key: 'init', - value: function init() { - var _this2 = this; - - if (typeof _moment2.default !== 'function') { - throw new Error('You need to include moment.js to your project.'); - } - - if (typeof _pikaday2.default !== 'function') { - throw new Error('You need to include Pikaday to your project.'); - } - _get(DateEditor.prototype.__proto__ || Object.getPrototypeOf(DateEditor.prototype), 'init', this).call(this); - this.instance.addHook('afterDestroy', function () { - _this2.parentDestroyed = true; - _this2.destroyElements(); - }); - } - - /** - * Create data picker instance - */ - - }, { - key: 'createElements', - value: function createElements() { - _get(DateEditor.prototype.__proto__ || Object.getPrototypeOf(DateEditor.prototype), 'createElements', this).call(this); - - this.datePicker = document.createElement('DIV'); - this.datePickerStyle = this.datePicker.style; - this.datePickerStyle.position = 'absolute'; - this.datePickerStyle.top = 0; - this.datePickerStyle.left = 0; - this.datePickerStyle.zIndex = 9999; - - (0, _element.addClass)(this.datePicker, 'htDatepickerHolder'); - document.body.appendChild(this.datePicker); - - this.$datePicker = new _pikaday2.default(this.getDatePickerConfig()); - var eventManager = new _eventManager2.default(this); - - /** - * Prevent recognizing clicking on datepicker as clicking outside of table - */ - eventManager.addEventListener(this.datePicker, 'mousedown', function (event) { - return (0, _event.stopPropagation)(event); - }); - this.hideDatepicker(); - } - - /** - * Destroy data picker instance - */ - - }, { - key: 'destroyElements', - value: function destroyElements() { - this.$datePicker.destroy(); - } - - /** - * Prepare editor to appear - * - * @param {Number} row Row index - * @param {Number} col Column index - * @param {String} prop Property name (passed when datasource is an array of objects) - * @param {HTMLTableCellElement} td Table cell element - * @param {*} originalValue Original value - * @param {Object} cellProperties Object with cell properties ({@see Core#getCellMeta}) - */ - - }, { - key: 'prepare', - value: function prepare(row, col, prop, td, originalValue, cellProperties) { - this._opened = false; - _get(DateEditor.prototype.__proto__ || Object.getPrototypeOf(DateEditor.prototype), 'prepare', this).call(this, row, col, prop, td, originalValue, cellProperties); - } - - /** - * Open editor - * - * @param {Event} [event=null] - */ - - }, { - key: 'open', - value: function open() { - var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - _get(DateEditor.prototype.__proto__ || Object.getPrototypeOf(DateEditor.prototype), 'open', this).call(this); - this.showDatepicker(event); - } - - /** - * Close editor - */ - - }, { - key: 'close', - value: function close() { - var _this3 = this; - - this._opened = false; - this.instance._registerTimeout(setTimeout(function () { - _this3.instance.selection.refreshBorders(); - }, 0)); - - _get(DateEditor.prototype.__proto__ || Object.getPrototypeOf(DateEditor.prototype), 'close', this).call(this); - } - - /** - * @param {Boolean} [isCancelled=false] - * @param {Boolean} [ctrlDown=false] - */ - - }, { - key: 'finishEditing', - value: function finishEditing() { - var isCancelled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var ctrlDown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (isCancelled) { - // pressed ESC, restore original value - // var value = this.instance.getDataAtCell(this.row, this.col); - var value = this.originalValue; - - if (value !== void 0) { - this.setValue(value); - } - } - this.hideDatepicker(); - _get(DateEditor.prototype.__proto__ || Object.getPrototypeOf(DateEditor.prototype), 'finishEditing', this).call(this, isCancelled, ctrlDown); - } - - /** - * Show data picker - * - * @param {Event} event - */ - - }, { - key: 'showDatepicker', - value: function showDatepicker(event) { - this.$datePicker.config(this.getDatePickerConfig()); - - var offset = this.TD.getBoundingClientRect(); - var dateFormat = this.cellProperties.dateFormat || this.defaultDateFormat; - var datePickerConfig = this.$datePicker.config(); - var dateStr = void 0; - var isMouseDown = this.instance.view.isMouseDown(); - var isMeta = event ? (0, _unicode.isMetaKey)(event.keyCode) : false; - - this.datePickerStyle.top = window.pageYOffset + offset.top + (0, _element.outerHeight)(this.TD) + 'px'; - this.datePickerStyle.left = window.pageXOffset + offset.left + 'px'; - - this.$datePicker._onInputFocus = function () {}; - datePickerConfig.format = dateFormat; - - if (this.originalValue) { - dateStr = this.originalValue; - - if ((0, _moment2.default)(dateStr, dateFormat, true).isValid()) { - this.$datePicker.setMoment((0, _moment2.default)(dateStr, dateFormat), true); - } - - // workaround for date/time cells - pikaday resets the cell value to 12:00 AM by default, this will overwrite the value. - if (this.getValue() !== this.originalValue) { - this.setValue(this.originalValue); - } - - if (!isMeta && !isMouseDown) { - this.setValue(''); - } - } else if (this.cellProperties.defaultDate) { - dateStr = this.cellProperties.defaultDate; - - datePickerConfig.defaultDate = dateStr; - - if ((0, _moment2.default)(dateStr, dateFormat, true).isValid()) { - this.$datePicker.setMoment((0, _moment2.default)(dateStr, dateFormat), true); - } - - if (!isMeta && !isMouseDown) { - this.setValue(''); - } - } else { - // if a default date is not defined, set a soft-default-date: display the current day and month in the - // datepicker, but don't fill the editor input - this.$datePicker.gotoToday(); - } - - this.datePickerStyle.display = 'block'; - this.$datePicker.show(); - } - - /** - * Hide data picker - */ - - }, { - key: 'hideDatepicker', - value: function hideDatepicker() { - this.datePickerStyle.display = 'none'; - this.$datePicker.hide(); - } - - /** - * Get date picker options. - * - * @returns {Object} - */ - - }, { - key: 'getDatePickerConfig', - value: function getDatePickerConfig() { - var _this4 = this; - - var htInput = this.TEXTAREA; - var options = {}; - - if (this.cellProperties && this.cellProperties.datePickerConfig) { - (0, _object.deepExtend)(options, this.cellProperties.datePickerConfig); - } - var origOnSelect = options.onSelect; - var origOnClose = options.onClose; - - options.field = htInput; - options.trigger = htInput; - options.container = this.datePicker; - options.bound = false; - options.format = options.format || this.defaultDateFormat; - options.reposition = options.reposition || false; - options.onSelect = function (dateStr) { - if (!isNaN(dateStr.getTime())) { - dateStr = (0, _moment2.default)(dateStr).format(_this4.cellProperties.dateFormat || _this4.defaultDateFormat); - } - _this4.setValue(dateStr); - _this4.hideDatepicker(); - - if (origOnSelect) { - origOnSelect(); - } - }; - options.onClose = function () { - if (!_this4.parentDestroyed) { - _this4.finishEditing(false); - } - if (origOnClose) { - origOnClose(); - } - }; - - return options; - } - }]); - - return DateEditor; -}(_textEditor2.default); - -exports.default = DateEditor; - -/***/ }), -/* 213 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE_213__; - -/***/ }), -/* 214 */ -/***/ (function(module, exports) { - - - -/***/ }), -/* 215 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _autocompleteEditor = __webpack_require__(168); - -var _autocompleteEditor2 = _interopRequireDefault(_autocompleteEditor); - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * @private - * @editor DropdownEditor - * @class DropdownEditor - * @dependencies AutocompleteEditor - */ -var DropdownEditor = function (_AutocompleteEditor) { - _inherits(DropdownEditor, _AutocompleteEditor); - - function DropdownEditor() { - _classCallCheck(this, DropdownEditor); - - return _possibleConstructorReturn(this, (DropdownEditor.__proto__ || Object.getPrototypeOf(DropdownEditor)).apply(this, arguments)); - } - - _createClass(DropdownEditor, [{ - key: 'prepare', - value: function prepare(row, col, prop, td, originalValue, cellProperties) { - _get(DropdownEditor.prototype.__proto__ || Object.getPrototypeOf(DropdownEditor.prototype), 'prepare', this).call(this, row, col, prop, td, originalValue, cellProperties); - this.cellProperties.filter = false; - this.cellProperties.strict = true; - } - }]); - - return DropdownEditor; -}(_autocompleteEditor2.default); - -_pluginHooks2.default.getSingleton().add('beforeValidate', function (value, row, col, source) { - var cellMeta = this.getCellMeta(row, this.propToCol(col)); - - if (cellMeta.editor === DropdownEditor) { - if (cellMeta.strict === void 0) { - cellMeta.filter = false; - cellMeta.strict = true; - } - } -}); - -exports.default = DropdownEditor; - -/***/ }), -/* 216 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _unicode = __webpack_require__(17); - -var _event = __webpack_require__(8); - -var _element = __webpack_require__(0); - -var _baseEditor = __webpack_require__(41); - -var _baseEditor2 = _interopRequireDefault(_baseEditor); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var MobileTextEditor = _baseEditor2.default.prototype.extend(); -var domDimensionsCache = {}; - -/** - * @private - * @editor MobileTextEditor - * @class MobileTextEditor - */ -var createControls = function createControls() { - this.controls = {}; - - this.controls.leftButton = document.createElement('DIV'); - this.controls.leftButton.className = 'leftButton'; - this.controls.rightButton = document.createElement('DIV'); - this.controls.rightButton.className = 'rightButton'; - this.controls.upButton = document.createElement('DIV'); - this.controls.upButton.className = 'upButton'; - this.controls.downButton = document.createElement('DIV'); - this.controls.downButton.className = 'downButton'; - - for (var button in this.controls) { - if (Object.prototype.hasOwnProperty.call(this.controls, button)) { - this.positionControls.appendChild(this.controls[button]); - } - } -}; - -MobileTextEditor.prototype.valueChanged = function () { - return this.initValue != this.getValue(); -}; - -MobileTextEditor.prototype.init = function () { - var that = this; - this.eventManager = new _eventManager2.default(this.instance); - - this.createElements(); - this.bindEvents(); - - this.instance.addHook('afterDestroy', function () { - that.destroy(); - }); -}; - -MobileTextEditor.prototype.getValue = function () { - return this.TEXTAREA.value; -}; - -MobileTextEditor.prototype.setValue = function (newValue) { - this.initValue = newValue; - - this.TEXTAREA.value = newValue; -}; - -MobileTextEditor.prototype.createElements = function () { - this.editorContainer = document.createElement('DIV'); - this.editorContainer.className = 'htMobileEditorContainer'; - - this.cellPointer = document.createElement('DIV'); - this.cellPointer.className = 'cellPointer'; - - this.moveHandle = document.createElement('DIV'); - this.moveHandle.className = 'moveHandle'; - - this.inputPane = document.createElement('DIV'); - this.inputPane.className = 'inputs'; - - this.positionControls = document.createElement('DIV'); - this.positionControls.className = 'positionControls'; - - this.TEXTAREA = document.createElement('TEXTAREA'); - (0, _element.addClass)(this.TEXTAREA, 'handsontableInput'); - - this.inputPane.appendChild(this.TEXTAREA); - - this.editorContainer.appendChild(this.cellPointer); - this.editorContainer.appendChild(this.moveHandle); - this.editorContainer.appendChild(this.inputPane); - this.editorContainer.appendChild(this.positionControls); - - createControls.call(this); - - document.body.appendChild(this.editorContainer); -}; - -MobileTextEditor.prototype.onBeforeKeyDown = function (event) { - var instance = this; - var that = instance.getActiveEditor(); - - if (event.target !== that.TEXTAREA || (0, _event.isImmediatePropagationStopped)(event)) { - return; - } - - switch (event.keyCode) { - case _unicode.KEY_CODES.ENTER: - that.close(); - event.preventDefault(); // don't add newline to field - break; - case _unicode.KEY_CODES.BACKSPACE: - (0, _event.stopImmediatePropagation)(event); // backspace, delete, home, end should only work locally when cell is edited (not in table context) - break; - default: - break; - } -}; - -MobileTextEditor.prototype.open = function () { - this.instance.addHook('beforeKeyDown', this.onBeforeKeyDown); - - (0, _element.addClass)(this.editorContainer, 'active'); - (0, _element.removeClass)(this.cellPointer, 'hidden'); - - this.updateEditorPosition(); -}; - -MobileTextEditor.prototype.focus = function () { - this.TEXTAREA.focus(); - (0, _element.setCaretPosition)(this.TEXTAREA, this.TEXTAREA.value.length); -}; - -MobileTextEditor.prototype.close = function () { - this.TEXTAREA.blur(); - this.instance.removeHook('beforeKeyDown', this.onBeforeKeyDown); - - (0, _element.removeClass)(this.editorContainer, 'active'); -}; - -MobileTextEditor.prototype.scrollToView = function () { - var coords = this.instance.getSelectedRange().highlight; - this.instance.view.scrollViewport(coords); -}; - -MobileTextEditor.prototype.hideCellPointer = function () { - if (!(0, _element.hasClass)(this.cellPointer, 'hidden')) { - (0, _element.addClass)(this.cellPointer, 'hidden'); - } -}; - -MobileTextEditor.prototype.updateEditorPosition = function (x, y) { - if (x && y) { - x = parseInt(x, 10); - y = parseInt(y, 10); - - this.editorContainer.style.top = y + 'px'; - this.editorContainer.style.left = x + 'px'; - } else { - var selection = this.instance.getSelected(), - selectedCell = this.instance.getCell(selection[0], selection[1]); - - // cache sizes - if (!domDimensionsCache.cellPointer) { - domDimensionsCache.cellPointer = { - height: (0, _element.outerHeight)(this.cellPointer), - width: (0, _element.outerWidth)(this.cellPointer) - }; - } - if (!domDimensionsCache.editorContainer) { - domDimensionsCache.editorContainer = { - width: (0, _element.outerWidth)(this.editorContainer) - }; - } - - if (selectedCell !== undefined) { - var scrollLeft = this.instance.view.wt.wtOverlays.leftOverlay.trimmingContainer == window ? 0 : (0, _element.getScrollLeft)(this.instance.view.wt.wtOverlays.leftOverlay.holder); - var scrollTop = this.instance.view.wt.wtOverlays.topOverlay.trimmingContainer == window ? 0 : (0, _element.getScrollTop)(this.instance.view.wt.wtOverlays.topOverlay.holder); - - var selectedCellOffset = (0, _element.offset)(selectedCell), - selectedCellWidth = (0, _element.outerWidth)(selectedCell), - currentScrollPosition = { - x: scrollLeft, - y: scrollTop - }; - - this.editorContainer.style.top = parseInt(selectedCellOffset.top + (0, _element.outerHeight)(selectedCell) - currentScrollPosition.y + domDimensionsCache.cellPointer.height, 10) + 'px'; - this.editorContainer.style.left = parseInt(window.innerWidth / 2 - domDimensionsCache.editorContainer.width / 2, 10) + 'px'; - - if (selectedCellOffset.left + selectedCellWidth / 2 > parseInt(this.editorContainer.style.left, 10) + domDimensionsCache.editorContainer.width) { - this.editorContainer.style.left = window.innerWidth - domDimensionsCache.editorContainer.width + 'px'; - } else if (selectedCellOffset.left + selectedCellWidth / 2 < parseInt(this.editorContainer.style.left, 10) + 20) { - this.editorContainer.style.left = 0 + 'px'; - } - - this.cellPointer.style.left = parseInt(selectedCellOffset.left - domDimensionsCache.cellPointer.width / 2 - (0, _element.offset)(this.editorContainer).left + selectedCellWidth / 2 - currentScrollPosition.x, 10) + 'px'; - } - } -}; - -MobileTextEditor.prototype.updateEditorData = function () { - var selected = this.instance.getSelected(), - selectedValue = this.instance.getDataAtCell(selected[0], selected[1]); - - this.row = selected[0]; - this.col = selected[1]; - this.setValue(selectedValue); - this.updateEditorPosition(); -}; - -MobileTextEditor.prototype.prepareAndSave = function () { - var val; - - if (!this.valueChanged()) { - return; - } - - if (this.instance.getSettings().trimWhitespace) { - val = [[String.prototype.trim.call(this.getValue())]]; - } else { - val = [[this.getValue()]]; - } - - this.saveValue(val); -}; - -MobileTextEditor.prototype.bindEvents = function () { - var that = this; - - this.eventManager.addEventListener(this.controls.leftButton, 'touchend', function (event) { - that.prepareAndSave(); - that.instance.selection.transformStart(0, -1, null, true); - that.updateEditorData(); - event.preventDefault(); - }); - this.eventManager.addEventListener(this.controls.rightButton, 'touchend', function (event) { - that.prepareAndSave(); - that.instance.selection.transformStart(0, 1, null, true); - that.updateEditorData(); - event.preventDefault(); - }); - this.eventManager.addEventListener(this.controls.upButton, 'touchend', function (event) { - that.prepareAndSave(); - that.instance.selection.transformStart(-1, 0, null, true); - that.updateEditorData(); - event.preventDefault(); - }); - this.eventManager.addEventListener(this.controls.downButton, 'touchend', function (event) { - that.prepareAndSave(); - that.instance.selection.transformStart(1, 0, null, true); - that.updateEditorData(); - event.preventDefault(); - }); - - this.eventManager.addEventListener(this.moveHandle, 'touchstart', function (event) { - if (event.touches.length == 1) { - var touch = event.touches[0]; - var onTouchPosition = { - x: that.editorContainer.offsetLeft, - y: that.editorContainer.offsetTop - }; - var onTouchOffset = { - x: touch.pageX - onTouchPosition.x, - y: touch.pageY - onTouchPosition.y - }; - - that.eventManager.addEventListener(this, 'touchmove', function (event) { - var touch = event.touches[0]; - that.updateEditorPosition(touch.pageX - onTouchOffset.x, touch.pageY - onTouchOffset.y); - that.hideCellPointer(); - event.preventDefault(); - }); - } - }); - - this.eventManager.addEventListener(document.body, 'touchend', function (event) { - if (!(0, _element.isChildOf)(event.target, that.editorContainer) && !(0, _element.isChildOf)(event.target, that.instance.rootElement)) { - that.close(); - } - }); - - this.eventManager.addEventListener(this.instance.view.wt.wtOverlays.leftOverlay.holder, 'scroll', function (event) { - if (that.instance.view.wt.wtOverlays.leftOverlay.trimmingContainer != window) { - that.hideCellPointer(); - } - }); - - this.eventManager.addEventListener(this.instance.view.wt.wtOverlays.topOverlay.holder, 'scroll', function (event) { - if (that.instance.view.wt.wtOverlays.topOverlay.trimmingContainer != window) { - that.hideCellPointer(); - } - }); -}; - -MobileTextEditor.prototype.destroy = function () { - this.eventManager.clear(); - - this.editorContainer.parentNode.removeChild(this.editorContainer); -}; - -exports.default = MobileTextEditor; - -/***/ }), -/* 217 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _numbro = __webpack_require__(80); - -var _numbro2 = _interopRequireDefault(_numbro); - -var _textEditor = __webpack_require__(51); - -var _textEditor2 = _interopRequireDefault(_textEditor); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * @private - * @editor NumericEditor - * @class NumericEditor - * @dependencies TextEditor numbro - */ -var NumericEditor = function (_TextEditor) { - _inherits(NumericEditor, _TextEditor); - - function NumericEditor() { - _classCallCheck(this, NumericEditor); - - return _possibleConstructorReturn(this, (NumericEditor.__proto__ || Object.getPrototypeOf(NumericEditor)).apply(this, arguments)); - } - - _createClass(NumericEditor, [{ - key: 'beginEditing', - - /** - * @param {*} initialValue - */ - value: function beginEditing(initialValue) { - if (typeof initialValue === 'undefined' && this.originalValue) { - if (typeof this.cellProperties.language !== 'undefined') { - _numbro2.default.culture(this.cellProperties.language); - } - var decimalDelimiter = _numbro2.default.cultureData().delimiters.decimal; - initialValue = ('' + this.originalValue).replace('.', decimalDelimiter); - } - _get(NumericEditor.prototype.__proto__ || Object.getPrototypeOf(NumericEditor.prototype), 'beginEditing', this).call(this, initialValue); - } - }]); - - return NumericEditor; -}(_textEditor2.default); - -exports.default = NumericEditor; - -/***/ }), -/* 218 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _element = __webpack_require__(0); - -var _textEditor = __webpack_require__(51); - -var _textEditor2 = _interopRequireDefault(_textEditor); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * @private - * @editor PasswordEditor - * @class PasswordEditor - * @dependencies TextEditor - */ -var PasswordEditor = function (_TextEditor) { - _inherits(PasswordEditor, _TextEditor); - - function PasswordEditor() { - _classCallCheck(this, PasswordEditor); - - return _possibleConstructorReturn(this, (PasswordEditor.__proto__ || Object.getPrototypeOf(PasswordEditor)).apply(this, arguments)); - } - - _createClass(PasswordEditor, [{ - key: 'createElements', - value: function createElements() { - _get(PasswordEditor.prototype.__proto__ || Object.getPrototypeOf(PasswordEditor.prototype), 'createElements', this).call(this); - - this.TEXTAREA = document.createElement('input'); - this.TEXTAREA.setAttribute('type', 'password'); - this.TEXTAREA.className = 'handsontableInput'; - this.textareaStyle = this.TEXTAREA.style; - this.textareaStyle.width = 0; - this.textareaStyle.height = 0; - - (0, _element.empty)(this.TEXTAREA_PARENT); - this.TEXTAREA_PARENT.appendChild(this.TEXTAREA); - } - }]); - - return PasswordEditor; -}(_textEditor2.default); - -exports.default = PasswordEditor; - -/***/ }), -/* 219 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _element = __webpack_require__(0); - -var _event = __webpack_require__(8); - -var _unicode = __webpack_require__(17); - -var _baseEditor = __webpack_require__(41); - -var _baseEditor2 = _interopRequireDefault(_baseEditor); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var SelectEditor = _baseEditor2.default.prototype.extend(); - -/** - * @private - * @editor SelectEditor - * @class SelectEditor - */ -SelectEditor.prototype.init = function () { - this.select = document.createElement('SELECT'); - (0, _element.addClass)(this.select, 'htSelectEditor'); - this.select.style.display = 'none'; - this.instance.rootElement.appendChild(this.select); - this.registerHooks(); -}; - -SelectEditor.prototype.registerHooks = function () { - var _this = this; - - this.instance.addHook('afterScrollHorizontally', function () { - return _this.refreshDimensions(); - }); - this.instance.addHook('afterScrollVertically', function () { - return _this.refreshDimensions(); - }); - this.instance.addHook('afterColumnResize', function () { - return _this.refreshDimensions(); - }); - this.instance.addHook('afterRowResize', function () { - return _this.refreshDimensions(); - }); -}; - -SelectEditor.prototype.prepare = function () { - _baseEditor2.default.prototype.prepare.apply(this, arguments); - - var selectOptions = this.cellProperties.selectOptions; - var options; - - if (typeof selectOptions == 'function') { - options = this.prepareOptions(selectOptions(this.row, this.col, this.prop)); - } else { - options = this.prepareOptions(selectOptions); - } - - (0, _element.empty)(this.select); - - for (var option in options) { - if (Object.prototype.hasOwnProperty.call(options, option)) { - var optionElement = document.createElement('OPTION'); - optionElement.value = option; - (0, _element.fastInnerHTML)(optionElement, options[option]); - this.select.appendChild(optionElement); - } - } -}; - -SelectEditor.prototype.prepareOptions = function (optionsToPrepare) { - var preparedOptions = {}; - - if (Array.isArray(optionsToPrepare)) { - for (var i = 0, len = optionsToPrepare.length; i < len; i++) { - preparedOptions[optionsToPrepare[i]] = optionsToPrepare[i]; - } - } else if ((typeof optionsToPrepare === 'undefined' ? 'undefined' : _typeof(optionsToPrepare)) == 'object') { - preparedOptions = optionsToPrepare; - } - - return preparedOptions; -}; - -SelectEditor.prototype.getValue = function () { - return this.select.value; -}; - -SelectEditor.prototype.setValue = function (value) { - this.select.value = value; -}; - -var onBeforeKeyDown = function onBeforeKeyDown(event) { - var instance = this; - var editor = instance.getActiveEditor(); - - switch (event.keyCode) { - case _unicode.KEY_CODES.ARROW_UP: - var previousOptionIndex = editor.select.selectedIndex - 1; - if (previousOptionIndex >= 0) { - editor.select[previousOptionIndex].selected = true; - } - - (0, _event.stopImmediatePropagation)(event); - event.preventDefault(); - break; - - case _unicode.KEY_CODES.ARROW_DOWN: - var nextOptionIndex = editor.select.selectedIndex + 1; - if (nextOptionIndex <= editor.select.length - 1) { - editor.select[nextOptionIndex].selected = true; - } - - (0, _event.stopImmediatePropagation)(event); - event.preventDefault(); - break; - default: - break; - } -}; - -SelectEditor.prototype.open = function () { - this._opened = true; - this.refreshDimensions(); - this.select.style.display = ''; - this.instance.addHook('beforeKeyDown', onBeforeKeyDown); -}; - -SelectEditor.prototype.close = function () { - this._opened = false; - this.select.style.display = 'none'; - this.instance.removeHook('beforeKeyDown', onBeforeKeyDown); -}; - -SelectEditor.prototype.focus = function () { - this.select.focus(); -}; - -SelectEditor.prototype.refreshValue = function () { - var sourceData = this.instance.getSourceDataAtCell(this.row, this.prop); - this.originalValue = sourceData; - - this.setValue(sourceData); - this.refreshDimensions(); -}; - -SelectEditor.prototype.refreshDimensions = function () { - if (this.state !== _baseEditor.EditorState.EDITING) { - return; - } - this.TD = this.getEditedCell(); - - // TD is outside of the viewport. - if (!this.TD) { - this.close(); - - return; - } - var width = (0, _element.outerWidth)(this.TD) + 1, - height = (0, _element.outerHeight)(this.TD) + 1, - currentOffset = (0, _element.offset)(this.TD), - containerOffset = (0, _element.offset)(this.instance.rootElement), - scrollableContainer = (0, _element.getScrollableElement)(this.TD), - editTop = currentOffset.top - containerOffset.top - 1 - (scrollableContainer.scrollTop || 0), - editLeft = currentOffset.left - containerOffset.left - 1 - (scrollableContainer.scrollLeft || 0), - editorSection = this.checkEditorSection(), - cssTransformOffset; - - var settings = this.instance.getSettings(); - var rowHeadersCount = settings.rowHeaders ? 1 : 0; - var colHeadersCount = settings.colHeaders ? 1 : 0; - - switch (editorSection) { - case 'top': - cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.topOverlay.clone.wtTable.holder.parentNode); - break; - case 'left': - cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.leftOverlay.clone.wtTable.holder.parentNode); - break; - case 'top-left-corner': - cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.topLeftCornerOverlay.clone.wtTable.holder.parentNode); - break; - case 'bottom-left-corner': - cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.holder.parentNode); - break; - case 'bottom': - cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.bottomOverlay.clone.wtTable.holder.parentNode); - break; - default: - break; - } - if (this.instance.getSelected()[0] === 0) { - editTop += 1; - } - - if (this.instance.getSelected()[1] === 0) { - editLeft += 1; - } - - var selectStyle = this.select.style; - - if (cssTransformOffset && cssTransformOffset != -1) { - selectStyle[cssTransformOffset[0]] = cssTransformOffset[1]; - } else { - (0, _element.resetCssTransform)(this.select); - } - var cellComputedStyle = (0, _element.getComputedStyle)(this.TD); - - if (parseInt(cellComputedStyle.borderTopWidth, 10) > 0) { - height -= 1; - } - if (parseInt(cellComputedStyle.borderLeftWidth, 10) > 0) { - width -= 1; - } - - selectStyle.height = height + 'px'; - selectStyle.minWidth = width + 'px'; - selectStyle.top = editTop + 'px'; - selectStyle.left = editLeft + 'px'; - selectStyle.margin = '0px'; -}; - -SelectEditor.prototype.getEditedCell = function () { - var editorSection = this.checkEditorSection(), - editedCell; - - switch (editorSection) { - case 'top': - editedCell = this.instance.view.wt.wtOverlays.topOverlay.clone.wtTable.getCell({ - row: this.row, - col: this.col - }); - this.select.style.zIndex = 101; - break; - case 'corner': - editedCell = this.instance.view.wt.wtOverlays.topLeftCornerOverlay.clone.wtTable.getCell({ - row: this.row, - col: this.col - }); - this.select.style.zIndex = 103; - break; - case 'left': - editedCell = this.instance.view.wt.wtOverlays.leftOverlay.clone.wtTable.getCell({ - row: this.row, - col: this.col - }); - this.select.style.zIndex = 102; - break; - default: - editedCell = this.instance.getCell(this.row, this.col); - this.select.style.zIndex = ''; - break; - } - - return editedCell != -1 && editedCell != -2 ? editedCell : void 0; -}; - -exports.default = SelectEditor; - -/***/ }), -/* 220 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _element = __webpack_require__(0); - -function cellDecorator(instance, TD, row, col, prop, value, cellProperties) { - if (cellProperties.className) { - if (TD.className) { - TD.className = TD.className + ' ' + cellProperties.className; - } else { - TD.className = cellProperties.className; - } - } - - if (cellProperties.readOnly) { - (0, _element.addClass)(TD, cellProperties.readOnlyCellClassName); - } - - if (cellProperties.valid === false && cellProperties.invalidCellClassName) { - (0, _element.addClass)(TD, cellProperties.invalidCellClassName); - } else { - (0, _element.removeClass)(TD, cellProperties.invalidCellClassName); - } - - if (cellProperties.wordWrap === false && cellProperties.noWordWrapClassName) { - (0, _element.addClass)(TD, cellProperties.noWordWrapClassName); - } - - if (!value && cellProperties.placeholder) { - (0, _element.addClass)(TD, cellProperties.placeholderCellClassName); - } -} /** - * Adds appropriate CSS class to table cell, based on cellProperties - */ -exports.default = cellDecorator; - -/***/ }), -/* 221 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _element = __webpack_require__(0); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _src = __webpack_require__(12); - -var _index = __webpack_require__(9); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var clonableWRAPPER = document.createElement('DIV'); -clonableWRAPPER.className = 'htAutocompleteWrapper'; - -var clonableARROW = document.createElement('DIV'); -clonableARROW.className = 'htAutocompleteArrow'; -// workaround for https://github.com/handsontable/handsontable/issues/1946 -// this is faster than innerHTML. See: https://github.com/handsontable/handsontable/wiki/JavaScript-&-DOM-performance-tips -clonableARROW.appendChild(document.createTextNode(String.fromCharCode(9660))); - -var wrapTdContentWithWrapper = function wrapTdContentWithWrapper(TD, WRAPPER) { - WRAPPER.innerHTML = TD.innerHTML; - (0, _element.empty)(TD); - TD.appendChild(WRAPPER); -}; - -/** - * Autocomplete renderer - * - * @private - * @renderer AutocompleteRenderer - * @param {Object} instance Handsontable instance - * @param {Element} TD Table cell where to render - * @param {Number} row - * @param {Number} col - * @param {String|Number} prop Row object property name - * @param value Value to render (remember to escape unsafe HTML before inserting to DOM!) - * @param {Object} cellProperties Cell properites (shared by cell renderer and editor) - */ -function autocompleteRenderer(instance, TD, row, col, prop, value, cellProperties) { - var WRAPPER = clonableWRAPPER.cloneNode(true); // this is faster than createElement - var ARROW = clonableARROW.cloneNode(true); // this is faster than createElement - - if (cellProperties.allowHtml) { - (0, _index.getRenderer)('html').apply(this, arguments); - } else { - (0, _index.getRenderer)('text').apply(this, arguments); - } - - TD.appendChild(ARROW); - (0, _element.addClass)(TD, 'htAutocomplete'); - - if (!TD.firstChild) { - // http://jsperf.com/empty-node-if-needed - // otherwise empty fields appear borderless in demo/renderers.html (IE) - TD.appendChild(document.createTextNode(String.fromCharCode(160))); // workaround for https://github.com/handsontable/handsontable/issues/1946 - // this is faster than innerHTML. See: https://github.com/handsontable/handsontable/wiki/JavaScript-&-DOM-performance-tips - } - - if (!instance.acArrowListener) { - var eventManager = new _eventManager2.default(instance); - - // not very elegant but easy and fast - instance.acArrowListener = function (event) { - if ((0, _element.hasClass)(event.target, 'htAutocompleteArrow')) { - instance.view.wt.getSetting('onCellDblClick', null, new _src.CellCoords(row, col), TD); - } - }; - - eventManager.addEventListener(instance.rootElement, 'mousedown', instance.acArrowListener); - - // We need to unbind the listener after the table has been destroyed - instance.addHookOnce('afterDestroy', function () { - eventManager.destroy(); - }); - } -} - -exports.default = autocompleteRenderer; - -/***/ }), -/* 222 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _element = __webpack_require__(0); - -var _string = __webpack_require__(32); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _unicode = __webpack_require__(17); - -var _function = __webpack_require__(35); - -var _event = __webpack_require__(8); - -var _index = __webpack_require__(9); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var isListeningKeyDownEvent = new WeakMap(); -var isCheckboxListenerAdded = new WeakMap(); -var BAD_VALUE_CLASS = 'htBadValue'; - -/** - * Checkbox renderer - * - * @private - * @param {Object} instance Handsontable instance - * @param {Element} TD Table cell where to render - * @param {Number} row - * @param {Number} col - * @param {String|Number} prop Row object property name - * @param value Value to render (remember to escape unsafe HTML before inserting to DOM!) - * @param {Object} cellProperties Cell properties (shared by cell renderer and editor) - */ -function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) { - (0, _index.getRenderer)('base').apply(this, arguments); - - var eventManager = registerEvents(instance); - var input = createInput(); - var labelOptions = cellProperties.label; - var badValue = false; - - if (typeof cellProperties.checkedTemplate === 'undefined') { - cellProperties.checkedTemplate = true; - } - if (typeof cellProperties.uncheckedTemplate === 'undefined') { - cellProperties.uncheckedTemplate = false; - } - - (0, _element.empty)(TD); // TODO identify under what circumstances this line can be removed - - if (value === cellProperties.checkedTemplate || (0, _string.equalsIgnoreCase)(value, cellProperties.checkedTemplate)) { - input.checked = true; - } else if (value === cellProperties.uncheckedTemplate || (0, _string.equalsIgnoreCase)(value, cellProperties.uncheckedTemplate)) { - input.checked = false; - } else if (value === null) { - // default value - (0, _element.addClass)(input, 'noValue'); - } else { - input.style.display = 'none'; - (0, _element.addClass)(input, BAD_VALUE_CLASS); - badValue = true; - } - - input.setAttribute('data-row', row); - input.setAttribute('data-col', col); - - if (!badValue && labelOptions) { - var labelText = ''; - - if (labelOptions.value) { - labelText = typeof labelOptions.value === 'function' ? labelOptions.value.call(this, row, col, prop, value) : labelOptions.value; - } else if (labelOptions.property) { - labelText = instance.getDataAtRowProp(row, labelOptions.property); - } - var label = createLabel(labelText); - - if (labelOptions.position === 'before') { - label.appendChild(input); - } else { - label.insertBefore(input, label.firstChild); - } - input = label; - } - - TD.appendChild(input); - - if (badValue) { - TD.appendChild(document.createTextNode('#bad-value#')); - } - - if (!isListeningKeyDownEvent.has(instance)) { - isListeningKeyDownEvent.set(instance, true); - instance.addHook('beforeKeyDown', onBeforeKeyDown); - } - - /** - * On before key down DOM listener. - * - * @private - * @param {Event} event - */ - function onBeforeKeyDown(event) { - var toggleKeys = 'SPACE|ENTER'; - var switchOffKeys = 'DELETE|BACKSPACE'; - var isKeyCode = (0, _function.partial)(_unicode.isKey, event.keyCode); - - if (isKeyCode(toggleKeys + '|' + switchOffKeys) && !(0, _event.isImmediatePropagationStopped)(event)) { - eachSelectedCheckboxCell(function () { - (0, _event.stopImmediatePropagation)(event); - event.preventDefault(); - }); - } - if (isKeyCode(toggleKeys)) { - changeSelectedCheckboxesState(); - } - if (isKeyCode(switchOffKeys)) { - changeSelectedCheckboxesState(true); - } - } - - /** - * Change checkbox checked property - * - * @private - * @param {Boolean} [uncheckCheckbox=false] - */ - function changeSelectedCheckboxesState() { - var uncheckCheckbox = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - var selRange = instance.getSelectedRange(); - - if (!selRange) { - return; - } - - var topLeft = selRange.getTopLeftCorner(); - var bottomRight = selRange.getBottomRightCorner(); - var changes = []; - - for (var _row = topLeft.row; _row <= bottomRight.row; _row += 1) { - for (var _col = topLeft.col; _col <= bottomRight.col; _col += 1) { - var _cellProperties = instance.getCellMeta(_row, _col); - - if (_cellProperties.type !== 'checkbox') { - return; - } - - /* eslint-disable no-continue */ - if (_cellProperties.readOnly === true) { - continue; - } - - if (typeof _cellProperties.checkedTemplate === 'undefined') { - _cellProperties.checkedTemplate = true; - } - if (typeof _cellProperties.uncheckedTemplate === 'undefined') { - _cellProperties.uncheckedTemplate = false; - } - - var dataAtCell = instance.getDataAtCell(_row, _col); - - if (uncheckCheckbox === false) { - if (dataAtCell === _cellProperties.checkedTemplate) { - changes.push([_row, _col, _cellProperties.uncheckedTemplate]); - } else if ([_cellProperties.uncheckedTemplate, null, void 0].indexOf(dataAtCell) !== -1) { - changes.push([_row, _col, _cellProperties.checkedTemplate]); - } - } else { - changes.push([_row, _col, _cellProperties.uncheckedTemplate]); - } - } - } - - if (changes.length > 0) { - instance.setDataAtCell(changes); - } - } - - /** - * Call callback for each found selected cell with checkbox type. - * - * @private - * @param {Function} callback - */ - function eachSelectedCheckboxCell(callback) { - var selRange = instance.getSelectedRange(); - - if (!selRange) { - return; - } - var topLeft = selRange.getTopLeftCorner(); - var bottomRight = selRange.getBottomRightCorner(); - - for (var _row2 = topLeft.row; _row2 <= bottomRight.row; _row2++) { - for (var _col2 = topLeft.col; _col2 <= bottomRight.col; _col2++) { - var _cellProperties2 = instance.getCellMeta(_row2, _col2); - - if (_cellProperties2.type !== 'checkbox') { - return; - } - - var cell = instance.getCell(_row2, _col2); - - if (cell == null) { - - callback(_row2, _col2, _cellProperties2); - } else { - var checkboxes = cell.querySelectorAll('input[type=checkbox]'); - - if (checkboxes.length > 0 && !_cellProperties2.readOnly) { - callback(checkboxes); - } - } - } - } - } -} - -/** - * Register checkbox listeners. - * - * @param {Handsontable} instance Handsontable instance. - * @returns {EventManager} - */ -function registerEvents(instance) { - var eventManager = isCheckboxListenerAdded.get(instance); - - if (!eventManager) { - eventManager = new _eventManager2.default(instance); - eventManager.addEventListener(instance.rootElement, 'click', function (event) { - return onClick(event, instance); - }); - eventManager.addEventListener(instance.rootElement, 'mouseup', function (event) { - return onMouseUp(event, instance); - }); - eventManager.addEventListener(instance.rootElement, 'change', function (event) { - return onChange(event, instance); - }); - - isCheckboxListenerAdded.set(instance, eventManager); - } - - return eventManager; -} - -/** - * Create input element. - * - * @returns {Node} - */ -function createInput() { - var input = document.createElement('input'); - - input.className = 'htCheckboxRendererInput'; - input.type = 'checkbox'; - input.setAttribute('autocomplete', 'off'); - input.setAttribute('tabindex', '-1'); - - return input.cloneNode(false); -} - -/** - * Create label element. - * - * @returns {Node} - */ -function createLabel(text) { - var label = document.createElement('label'); - - label.className = 'htCheckboxRendererLabel'; - label.appendChild(document.createTextNode(text)); - - return label.cloneNode(true); -} - -/** - * `mouseup` callback. - * - * @private - * @param {Event} event `mouseup` event. - * @param {Object} instance Handsontable instance. - */ -function onMouseUp(event, instance) { - if (!isCheckboxInput(event.target)) { - return; - } - setTimeout(instance.listen, 10); -} - -/** - * `click` callback. - * - * @private - * @param {Event} event `click` event. - * @param {Object} instance Handsontable instance. - */ -function onClick(event, instance) { - if (!isCheckboxInput(event.target)) { - return false; - } - - var row = parseInt(event.target.getAttribute('data-row'), 10); - var col = parseInt(event.target.getAttribute('data-col'), 10); - var cellProperties = instance.getCellMeta(row, col); - - if (cellProperties.readOnly) { - event.preventDefault(); - } -} - -/** - * `change` callback. - * - * @param {Event} event `change` event. - * @param {Object} instance Handsontable instance. - * @param {Object} cellProperties Reference to cell properties. - * @returns {Boolean} - */ -function onChange(event, instance) { - if (!isCheckboxInput(event.target)) { - return false; - } - - var row = parseInt(event.target.getAttribute('data-row'), 10); - var col = parseInt(event.target.getAttribute('data-col'), 10); - var cellProperties = instance.getCellMeta(row, col); - - if (!cellProperties.readOnly) { - var newCheckboxValue = null; - - if (event.target.checked) { - newCheckboxValue = cellProperties.uncheckedTemplate === void 0 ? true : cellProperties.checkedTemplate; - } else { - newCheckboxValue = cellProperties.uncheckedTemplate === void 0 ? false : cellProperties.uncheckedTemplate; - } - - instance.setDataAtCell(row, col, newCheckboxValue); - } -} - -/** - * Check if the provided element is the checkbox input. - * - * @private - * @param {HTMLElement} element The element in question. - * @returns {Boolean} - */ -function isCheckboxInput(element) { - return element.tagName === 'INPUT' && element.getAttribute('type') === 'checkbox'; -} - -exports.default = checkboxRenderer; - -/***/ }), -/* 223 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _element = __webpack_require__(0); - -var _index = __webpack_require__(9); - -/** - * @private - * @renderer HtmlRenderer - * @param instance - * @param TD - * @param row - * @param col - * @param prop - * @param value - * @param cellProperties - */ -function htmlRenderer(instance, TD, row, col, prop, value, cellProperties) { - (0, _index.getRenderer)('base').apply(this, arguments); - - if (value === null || value === void 0) { - value = ''; - } - - (0, _element.fastInnerHTML)(TD, value); -} - -exports.default = htmlRenderer; - -/***/ }), -/* 224 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _numbro = __webpack_require__(80); - -var _numbro2 = _interopRequireDefault(_numbro); - -var _index = __webpack_require__(9); - -var _number = __webpack_require__(6); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Numeric cell renderer - * - * @private - * @renderer NumericRenderer - * @dependencies numbro - * @param {Object} instance Handsontable instance - * @param {Element} TD Table cell where to render - * @param {Number} row - * @param {Number} col - * @param {String|Number} prop Row object property name - * @param value Value to render (remember to escape unsafe HTML before inserting to DOM!) - * @param {Object} cellProperties Cell properties (shared by cell renderer and editor) - */ -function numericRenderer(instance, TD, row, col, prop, value, cellProperties) { - if ((0, _number.isNumeric)(value)) { - if (typeof cellProperties.language !== 'undefined') { - _numbro2.default.culture(cellProperties.language); - } - - value = (0, _numbro2.default)(value).format(cellProperties.format || '0'); - - var className = cellProperties.className || ''; - - var classArr = className.length ? className.split(' ') : []; - - if (classArr.indexOf('htLeft') < 0 && classArr.indexOf('htCenter') < 0 && classArr.indexOf('htRight') < 0 && classArr.indexOf('htJustify') < 0) { - classArr.push('htRight'); - } - - if (classArr.indexOf('htNumeric') < 0) { - classArr.push('htNumeric'); - } - - cellProperties.className = classArr.join(' '); - } - - (0, _index.getRenderer)('text')(instance, TD, row, col, prop, value, cellProperties); -} - -exports.default = numericRenderer; - -/***/ }), -/* 225 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _element = __webpack_require__(0); - -var _index = __webpack_require__(9); - -var _number = __webpack_require__(6); - -/** - * @private - * @renderer PasswordRenderer - * @param instance - * @param TD - * @param row - * @param col - * @param prop - * @param value - * @param cellProperties - */ -function passwordRenderer(instance, TD, row, col, prop, value, cellProperties) { - (0, _index.getRenderer)('text').apply(this, arguments); - - value = TD.innerHTML; - - var hashLength = cellProperties.hashLength || value.length; - var hashSymbol = cellProperties.hashSymbol || '*'; - - var hash = ''; - - (0, _number.rangeEach)(hashLength - 1, function () { - hash += hashSymbol; - }); - (0, _element.fastInnerHTML)(TD, hash); -} - -exports.default = passwordRenderer; - -/***/ }), -/* 226 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _element = __webpack_require__(0); - -var _mixed = __webpack_require__(22); - -var _index = __webpack_require__(9); - -/** - * Default text renderer - * - * @private - * @renderer TextRenderer - * @param {Object} instance Handsontable instance - * @param {Element} TD Table cell where to render - * @param {Number} row - * @param {Number} col - * @param {String|Number} prop Row object property name - * @param value Value to render (remember to escape unsafe HTML before inserting to DOM!) - * @param {Object} cellProperties Cell properties (shared by cell renderer and editor) - */ -function textRenderer(instance, TD, row, col, prop, value, cellProperties) { - (0, _index.getRenderer)('base').apply(this, arguments); - - if (!value && cellProperties.placeholder) { - value = cellProperties.placeholder; - } - - var escaped = (0, _mixed.stringify)(value); - - if (!instance.getSettings().trimWhitespace) { - escaped = escaped.replace(/ /g, String.fromCharCode(160)); - } - - if (cellProperties.rendererTemplate) { - (0, _element.empty)(TD); - var TEMPLATE = document.createElement('TEMPLATE'); - TEMPLATE.setAttribute('bind', '{{}}'); - TEMPLATE.innerHTML = cellProperties.rendererTemplate; - HTMLTemplateElement.decorate(TEMPLATE); - TEMPLATE.model = instance.getSourceDataAtRow(row); - TD.appendChild(TEMPLATE); - } else { - // this is faster than innerHTML. See: https://github.com/handsontable/handsontable/wiki/JavaScript-&-DOM-performance-tips - (0, _element.fastInnerText)(TD, escaped); - } -} - -exports.default = textRenderer; - -/***/ }), -/* 227 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = autocompleteValidator; -/** - * Autocomplete cell validator. - * - * @private - * @validator AutocompleteValidator - * @param {*} value - Value of edited cell - * @param {Function} callback - Callback called with validation result - */ -function autocompleteValidator(value, callback) { - if (value == null) { - value = ''; - } - - if (this.allowEmpty && value === '') { - callback(true); - - return; - } - - if (this.strict && this.source) { - if (typeof this.source === 'function') { - this.source(value, process(value, callback)); - } else { - process(value, callback)(this.source); - } - } else { - callback(true); - } -}; - -/** - * Function responsible for validation of autocomplete value. - * - * @param {*} value - Value of edited cell - * @param {Function} callback - Callback called with validation result - */ -function process(value, callback) { - var originalVal = value; - - return function (source) { - var found = false; - - for (var s = 0, slen = source.length; s < slen; s++) { - if (originalVal === source[s]) { - found = true; // perfect match - break; - } - } - - callback(found); - }; -} - -/***/ }), -/* 228 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = dateValidator; -exports.correctFormat = correctFormat; - -var _moment = __webpack_require__(50); - -var _moment2 = _interopRequireDefault(_moment); - -var _date = __webpack_require__(170); - -var _editors = __webpack_require__(15); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Date cell validator - * - * @private - * @validator DateValidator - * @dependencies moment - * @param {*} value - Value of edited cell - * @param {Function} callback - Callback called with validation result - */ -function dateValidator(value, callback) { - var valid = true; - var dateEditor = (0, _editors.getEditorInstance)('date', this.instance); - - if (value == null) { - value = ''; - } - var isValidDate = (0, _moment2.default)(new Date(value)).isValid() || (0, _moment2.default)(value, dateEditor.defaultDateFormat).isValid(); - // is it in the specified format - var isValidFormat = (0, _moment2.default)(value, this.dateFormat || dateEditor.defaultDateFormat, true).isValid(); - - if (this.allowEmpty && value === '') { - isValidDate = true; - isValidFormat = true; - } - if (!isValidDate) { - valid = false; - } - if (!isValidDate && isValidFormat) { - valid = true; - } - - if (isValidDate && !isValidFormat) { - if (this.correctFormat === true) { - // if format correction is enabled - var correctedValue = correctFormat(value, this.dateFormat); - var row = this.instance.runHooks('unmodifyRow', this.row); - var column = this.instance.runHooks('unmodifyCol', this.col); - - this.instance.setDataAtCell(row, column, correctedValue, 'dateValidator'); - valid = true; - } else { - valid = false; - } - } - - callback(valid); -}; - -/** - * Format the given string using moment.js' format feature - * - * @param {String} value - * @param {String} dateFormat - * @returns {String} - */ -function correctFormat(value, dateFormat) { - var dateFromDate = (0, _moment2.default)((0, _date.getNormalizedDate)(value)); - var dateFromMoment = (0, _moment2.default)(value, dateFormat); - var isAlphanumeric = value.search(/[A-z]/g) > -1; - var date = void 0; - - if (dateFromDate.isValid() && dateFromDate.format('x') === dateFromMoment.format('x') || !dateFromMoment.isValid() || isAlphanumeric) { - date = dateFromDate; - } else { - date = dateFromMoment; - } - - return date.format(dateFormat); -}; - -/***/ }), -/* 229 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = numericValidator; -/** - * Numeric cell validator - * - * @private - * @validator NumericValidator - * @param {*} value - Value of edited cell - * @param {*} callback - Callback called with validation result - */ -function numericValidator(value, callback) { - if (value == null) { - value = ''; - } - if (this.allowEmpty && value === '') { - callback(true); - } else if (value === '') { - callback(false); - } else { - callback(/^-?\d*(\.|,)?\d*$/.test(value)); - } -}; - -/***/ }), -/* 230 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = timeValidator; - -var _moment = __webpack_require__(50); - -var _moment2 = _interopRequireDefault(_moment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Formats which are correctly parsed to time (supported by momentjs) -var STRICT_FORMATS = ['YYYY-MM-DDTHH:mm:ss.SSSZ', 'X', // Unix timestamp -'x' // Unix ms timestamp -]; - -/** - * Time cell validator - * - * @private - * @validator TimeValidator - * @dependencies moment - * @param {*} value - Value of edited cell - * @param {Function} callback - Callback called with validation result - */ -function timeValidator(value, callback) { - var valid = true; - var timeFormat = this.timeFormat || 'h:mm:ss a'; - - if (value === null) { - value = ''; - } - - value = /^\d{3,}$/.test(value) ? parseInt(value, 10) : value; - - var twoDigitValue = /^\d{1,2}$/.test(value); - - if (twoDigitValue) { - value += ':00'; - } - - var date = (0, _moment2.default)(value, STRICT_FORMATS, true).isValid() ? (0, _moment2.default)(value) : (0, _moment2.default)(value, timeFormat); - var isValidTime = date.isValid(); - - // is it in the specified format - var isValidFormat = (0, _moment2.default)(value, timeFormat, true).isValid() && !twoDigitValue; - - if (this.allowEmpty && value === '') { - isValidTime = true; - isValidFormat = true; - } - if (!isValidTime) { - valid = false; - } - if (!isValidTime && isValidFormat) { - valid = true; - } - if (isValidTime && !isValidFormat) { - if (this.correctFormat === true) { - // if format correction is enabled - var correctedValue = date.format(timeFormat); - var row = this.instance.runHooks('unmodifyRow', this.row); - var column = this.instance.runHooks('unmodifyCol', this.col); - - this.instance.setDataAtCell(row, column, correctedValue, 'timeValidator'); - valid = true; - } else { - valid = false; - } - } - - callback(valid); -}; - -/***/ }), -/* 231 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _editors = __webpack_require__(15); - -var _renderers = __webpack_require__(9); - -var _validators = __webpack_require__(27); - -var CELL_TYPE = 'autocomplete'; - -exports.default = { - editor: (0, _editors.getEditor)(CELL_TYPE), - renderer: (0, _renderers.getRenderer)(CELL_TYPE), - validator: (0, _validators.getValidator)(CELL_TYPE) -}; - -/***/ }), -/* 232 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _editors = __webpack_require__(15); - -var _renderers = __webpack_require__(9); - -var CELL_TYPE = 'checkbox'; - -exports.default = { - editor: (0, _editors.getEditor)(CELL_TYPE), - renderer: (0, _renderers.getRenderer)(CELL_TYPE) -}; - -/***/ }), -/* 233 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _editors = __webpack_require__(15); - -var _renderers = __webpack_require__(9); - -var _validators = __webpack_require__(27); - -var CELL_TYPE = 'date'; - -exports.default = { - editor: (0, _editors.getEditor)(CELL_TYPE), - // displays small gray arrow on right side of the cell - renderer: (0, _renderers.getRenderer)('autocomplete'), - validator: (0, _validators.getValidator)(CELL_TYPE) -}; - -/***/ }), -/* 234 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _editors = __webpack_require__(15); - -var _renderers = __webpack_require__(9); - -var _validators = __webpack_require__(27); - -var CELL_TYPE = 'dropdown'; - -exports.default = { - editor: (0, _editors.getEditor)(CELL_TYPE), - // displays small gray arrow on right side of the cell - renderer: (0, _renderers.getRenderer)('autocomplete'), - validator: (0, _validators.getValidator)('autocomplete') -}; - -/***/ }), -/* 235 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _editors = __webpack_require__(15); - -var _renderers = __webpack_require__(9); - -var CELL_TYPE = 'handsontable'; - -exports.default = { - editor: (0, _editors.getEditor)(CELL_TYPE), - // displays small gray arrow on right side of the cell - renderer: (0, _renderers.getRenderer)('autocomplete') -}; - -/***/ }), -/* 236 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _editors = __webpack_require__(15); - -var _renderers = __webpack_require__(9); - -var _validators = __webpack_require__(27); - -var CELL_TYPE = 'numeric'; - -exports.default = { - editor: (0, _editors.getEditor)(CELL_TYPE), - renderer: (0, _renderers.getRenderer)(CELL_TYPE), - validator: (0, _validators.getValidator)(CELL_TYPE), - dataType: 'number' -}; - -/***/ }), -/* 237 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _editors = __webpack_require__(15); - -var _renderers = __webpack_require__(9); - -var _validators = __webpack_require__(27); - -var CELL_TYPE = 'password'; - -exports.default = { - editor: (0, _editors.getEditor)(CELL_TYPE), - renderer: (0, _renderers.getRenderer)(CELL_TYPE), - copyable: false -}; - -/***/ }), -/* 238 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _browser = __webpack_require__(26); - -var _editors = __webpack_require__(15); - -var _renderers = __webpack_require__(9); - -var CELL_TYPE = 'text'; - -exports.default = { - editor: (0, _browser.isMobileBrowser)() ? (0, _editors.getEditor)('mobile') : (0, _editors.getEditor)(CELL_TYPE), - renderer: (0, _renderers.getRenderer)(CELL_TYPE) -}; - -/***/ }), -/* 239 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _editors = __webpack_require__(15); - -var _renderers = __webpack_require__(9); - -var _validators = __webpack_require__(27); - -var CELL_TYPE = 'time'; - -exports.default = { - editor: (0, _editors.getEditor)('text'), - // displays small gray arrow on right side of the cell - renderer: (0, _renderers.getRenderer)('text'), - validator: (0, _validators.getValidator)(CELL_TYPE) -}; - -/***/ }), -/* 240 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _SheetClip = __webpack_require__(171); - -var _SheetClip2 = _interopRequireDefault(_SheetClip); - -var _data = __webpack_require__(84); - -var _setting = __webpack_require__(83); - -var _object = __webpack_require__(1); - -var _array = __webpack_require__(2); - -var _interval = __webpack_require__(241); - -var _interval2 = _interopRequireDefault(_interval); - -var _number = __webpack_require__(6); - -var _multiMap = __webpack_require__(242); - -var _multiMap2 = _interopRequireDefault(_multiMap); - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Utility class that gets and saves data from/to the data source using mapping of columns numbers to object property names - * @todo refactor arguments of methods getRange, getText to be numbers (not objects) - * @todo remove priv, GridSettings from object constructor - * - * @param {Object} instance Instance of Handsontable - * @param {*} priv - * @param {*} GridSettings Grid settings - * @util - * @class DataMap - */ -function DataMap(instance, priv, GridSettings) { - var _this = this; - - this.instance = instance; - this.priv = priv; - this.GridSettings = GridSettings; - this.dataSource = this.instance.getSettings().data; - this.cachedLength = null; - this.skipCache = false; - this.latestSourceRowsCount = 0; - - if (this.dataSource && this.dataSource[0]) { - this.duckSchema = this.recursiveDuckSchema(this.dataSource[0]); - } else { - this.duckSchema = {}; - } - this.createMap(); - this.interval = _interval2.default.create(function () { - return _this.clearLengthCache(); - }, '15fps'); - - this.instance.addHook('skipLengthCache', function (delay) { - return _this.onSkipLengthCache(delay); - }); - this.onSkipLengthCache(500); -} - -DataMap.prototype.DESTINATION_RENDERER = 1; -DataMap.prototype.DESTINATION_CLIPBOARD_GENERATOR = 2; - -/** - * @param {Object|Array} object - * @returns {Object|Array} - */ -DataMap.prototype.recursiveDuckSchema = function (object) { - return (0, _object.duckSchema)(object); -}; - -/** - * @param {Object} schema - * @param {Number} lastCol - * @param {Number} parent - * @returns {Number} - */ -DataMap.prototype.recursiveDuckColumns = function (schema, lastCol, parent) { - var prop, i; - if (typeof lastCol === 'undefined') { - lastCol = 0; - parent = ''; - } - if ((typeof schema === 'undefined' ? 'undefined' : _typeof(schema)) === 'object' && !Array.isArray(schema)) { - for (i in schema) { - if ((0, _object.hasOwnProperty)(schema, i)) { - if (schema[i] === null) { - prop = parent + i; - this.colToPropCache.push(prop); - this.propToColCache.set(prop, lastCol); - - lastCol++; - } else { - lastCol = this.recursiveDuckColumns(schema[i], lastCol, i + '.'); - } - } - } - } - - return lastCol; -}; - -DataMap.prototype.createMap = function () { - var i = void 0; - var schema = this.getSchema(); - - if (typeof schema === 'undefined') { - throw new Error('trying to create `columns` definition but you didn\'t provide `schema` nor `data`'); - } - - this.colToPropCache = []; - this.propToColCache = new _multiMap2.default(); - - var columns = this.instance.getSettings().columns; - - if (columns) { - var maxCols = this.instance.getSettings().maxCols; - var columnsLen = Math.min(maxCols, columns.length); - var filteredIndex = 0; - var columnsAsFunc = false; - var schemaLen = (0, _object.deepObjectSize)(schema); - - if (typeof columns === 'function') { - columnsLen = schemaLen > 0 ? schemaLen : this.instance.countSourceCols(); - columnsAsFunc = true; - } - - for (i = 0; i < columnsLen; i++) { - var column = columnsAsFunc ? columns(i) : columns[i]; - - if ((0, _object.isObject)(column)) { - if (typeof column.data !== 'undefined') { - var index = columnsAsFunc ? filteredIndex : i; - this.colToPropCache[index] = column.data; - this.propToColCache.set(column.data, index); - } - - filteredIndex++; - } - } - } else { - this.recursiveDuckColumns(schema); - } -}; - -/** - * Returns property name that corresponds with the given column index. - * - * @param {Number} col Visual column index. - * @returns {Number} Physical column index. - */ -DataMap.prototype.colToProp = function (col) { - col = this.instance.runHooks('modifyCol', col); - - if (!isNaN(col) && this.colToPropCache && typeof this.colToPropCache[col] !== 'undefined') { - return this.colToPropCache[col]; - } - - return col; -}; - -/** - * @param {Object} prop - * @fires Hooks#modifyCol - * @returns {*} - */ -DataMap.prototype.propToCol = function (prop) { - var col; - - if (typeof this.propToColCache.get(prop) === 'undefined') { - col = prop; - } else { - col = this.propToColCache.get(prop); - } - col = this.instance.runHooks('unmodifyCol', col); - - return col; -}; - -/** - * @returns {Object} - */ -DataMap.prototype.getSchema = function () { - var schema = this.instance.getSettings().dataSchema; - - if (schema) { - if (typeof schema === 'function') { - return schema(); - } - return schema; - } - - return this.duckSchema; -}; - -/** - * Creates row at the bottom of the data array. - * - * @param {Number} [index] Physical index of the row before which the new row will be inserted. - * @param {Number} [amount] An amount of rows to add. - * @param {String} [source] Source of method call. - * @fires Hooks#afterCreateRow - * @returns {Number} Returns number of created rows. - */ -DataMap.prototype.createRow = function (index, amount, source) { - var row, - colCount = this.instance.countCols(), - numberOfCreatedRows = 0, - currentIndex; - - if (!amount) { - amount = 1; - } - - if (typeof index !== 'number' || index >= this.instance.countSourceRows()) { - index = this.instance.countSourceRows(); - } - this.instance.runHooks('beforeCreateRow', index, amount, source); - - currentIndex = index; - var maxRows = this.instance.getSettings().maxRows; - - while (numberOfCreatedRows < amount && this.instance.countSourceRows() < maxRows) { - if (this.instance.dataType === 'array') { - if (this.instance.getSettings().dataSchema) { - // Clone template array - row = (0, _object.deepClone)(this.getSchema()); - } else { - row = []; - /* eslint-disable no-loop-func */ - (0, _number.rangeEach)(colCount - 1, function () { - return row.push(null); - }); - } - } else if (this.instance.dataType === 'function') { - row = this.instance.getSettings().dataSchema(index); - } else { - row = {}; - (0, _object.deepExtend)(row, this.getSchema()); - } - - if (index === this.instance.countSourceRows()) { - this.dataSource.push(row); - } else { - this.spliceData(index, 0, row); - } - - numberOfCreatedRows++; - currentIndex++; - } - - this.instance.runHooks('afterCreateRow', index, numberOfCreatedRows, source); - this.instance.forceFullRender = true; // used when data was changed - - return numberOfCreatedRows; -}; - -/** - * Creates col at the right of the data array. - * - * @param {Number} [index] Visual index of the column before which the new column will be inserted - * @param {Number} [amount] An amount of columns to add. - * @param {String} [source] Source of method call. - * @fires Hooks#afterCreateCol - * @returns {Number} Returns number of created columns - */ -DataMap.prototype.createCol = function (index, amount, source) { - if (!this.instance.isColumnModificationAllowed()) { - throw new Error('Cannot create new column. When data source in an object, ' + 'you can only have as much columns as defined in first data row, data schema or in the \'columns\' setting.' + 'If you want to be able to add new columns, you have to use array datasource.'); - } - var rlen = this.instance.countSourceRows(), - data = this.dataSource, - constructor, - numberOfCreatedCols = 0, - currentIndex; - - if (!amount) { - amount = 1; - } - - if (typeof index !== 'number' || index >= this.instance.countCols()) { - index = this.instance.countCols(); - } - this.instance.runHooks('beforeCreateCol', index, amount, source); - - currentIndex = index; - - var maxCols = this.instance.getSettings().maxCols; - while (numberOfCreatedCols < amount && this.instance.countCols() < maxCols) { - constructor = (0, _setting.columnFactory)(this.GridSettings, this.priv.columnsSettingConflicts); - - if (typeof index !== 'number' || index >= this.instance.countCols()) { - if (rlen > 0) { - for (var r = 0; r < rlen; r++) { - if (typeof data[r] === 'undefined') { - data[r] = []; - } - data[r].push(null); - } - } else { - data.push([null]); - } - // Add new column constructor - this.priv.columnSettings.push(constructor); - } else { - for (var _r = 0; _r < rlen; _r++) { - data[_r].splice(currentIndex, 0, null); - } - // Add new column constructor at given index - this.priv.columnSettings.splice(currentIndex, 0, constructor); - } - - numberOfCreatedCols++; - currentIndex++; - } - - this.instance.runHooks('afterCreateCol', index, numberOfCreatedCols, source); - this.instance.forceFullRender = true; // used when data was changed - - return numberOfCreatedCols; -}; - -/** - * Removes row from the data array. - * - * @param {Number} [index] Visual index of the row to be removed. If not provided, the last row will be removed - * @param {Number} [amount] Amount of the rows to be removed. If not provided, one row will be removed - * @param {String} [source] Source of method call. - * @fires Hooks#beforeRemoveRow - * @fires Hooks#afterRemoveRow - */ -DataMap.prototype.removeRow = function (index, amount, source) { - if (!amount) { - amount = 1; - } - if (typeof index !== 'number') { - index = -amount; - } - - amount = this.instance.runHooks('modifyRemovedAmount', amount, index); - - index = (this.instance.countSourceRows() + index) % this.instance.countSourceRows(); - - var logicRows = this.visualRowsToPhysical(index, amount); - var actionWasNotCancelled = this.instance.runHooks('beforeRemoveRow', index, amount, logicRows, source); - - if (actionWasNotCancelled === false) { - return; - } - - var data = this.dataSource; - var newData = void 0; - - newData = this.filterData(index, amount); - - if (newData) { - data.length = 0; - Array.prototype.push.apply(data, newData); - } - - this.instance.runHooks('afterRemoveRow', index, amount, logicRows, source); - - this.instance.forceFullRender = true; // used when data was changed -}; - -/** - * Removes column from the data array. - * - * @param {Number} [index] Visual index of the column to be removed. If not provided, the last column will be removed - * @param {Number} [amount] Amount of the columns to be removed. If not provided, one column will be removed - * @param {String} [source] Source of method call. - * @fires Hooks#beforeRemoveCol - * @fires Hooks#afterRemoveCol - */ -DataMap.prototype.removeCol = function (index, amount, source) { - if (this.instance.dataType === 'object' || this.instance.getSettings().columns) { - throw new Error('cannot remove column with object data source or columns option specified'); - } - if (!amount) { - amount = 1; - } - if (typeof index !== 'number') { - index = -amount; - } - - index = (this.instance.countCols() + index) % this.instance.countCols(); - - var logicColumns = this.visualColumnsToPhysical(index, amount); - var descendingLogicColumns = logicColumns.slice(0).sort(function (a, b) { - return b - a; - }); - var actionWasNotCancelled = this.instance.runHooks('beforeRemoveCol', index, amount, logicColumns, source); - - if (actionWasNotCancelled === false) { - return; - } - - var isTableUniform = true; - var removedColumnsCount = descendingLogicColumns.length; - var data = this.dataSource; - - for (var c = 0; c < removedColumnsCount; c++) { - if (isTableUniform && logicColumns[0] !== logicColumns[c] - c) { - isTableUniform = false; - } - } - - if (isTableUniform) { - for (var r = 0, rlen = this.instance.countSourceRows(); r < rlen; r++) { - data[r].splice(logicColumns[0], amount); - } - } else { - for (var _r2 = 0, _rlen = this.instance.countSourceRows(); _r2 < _rlen; _r2++) { - for (var _c = 0; _c < removedColumnsCount; _c++) { - data[_r2].splice(descendingLogicColumns[_c], 1); - } - } - - for (var _c2 = 0; _c2 < removedColumnsCount; _c2++) { - this.priv.columnSettings.splice(logicColumns[_c2], 1); - } - } - - this.instance.runHooks('afterRemoveCol', index, amount, logicColumns, source); - - this.instance.forceFullRender = true; // used when data was changed -}; - -/** - * Add/Removes data from the column. - * - * @param {Number} col Physical index of column in which do you want to do splice - * @param {Number} index Index at which to start changing the array. If negative, will begin that many elements from the end - * @param {Number} amount An integer indicating the number of old array elements to remove. If amount is 0, no elements are removed - * @returns {Array} Returns removed portion of columns - */ -DataMap.prototype.spliceCol = function (col, index, amount /* , elements... */) { - var elements = arguments.length >= 4 ? [].slice.call(arguments, 3) : []; - - var colData = this.instance.getDataAtCol(col); - var removed = colData.slice(index, index + amount); - var after = colData.slice(index + amount); - - (0, _array.extendArray)(elements, after); - var i = 0; - while (i < amount) { - elements.push(null); // add null in place of removed elements - i++; - } - (0, _array.to2dArray)(elements); - this.instance.populateFromArray(index, col, elements, null, null, 'spliceCol'); - - return removed; -}; - -/** - * Add/Removes data from the row. - * - * @param {Number} row Physical index of row in which do you want to do splice - * @param {Number} index Index at which to start changing the array. If negative, will begin that many elements from the end. - * @param {Number} amount An integer indicating the number of old array elements to remove. If amount is 0, no elements are removed. - * @returns {Array} Returns removed portion of rows - */ -DataMap.prototype.spliceRow = function (row, index, amount /* , elements... */) { - var elements = arguments.length >= 4 ? [].slice.call(arguments, 3) : []; - - var rowData = this.instance.getSourceDataAtRow(row); - var removed = rowData.slice(index, index + amount); - var after = rowData.slice(index + amount); - - (0, _array.extendArray)(elements, after); - var i = 0; - while (i < amount) { - elements.push(null); // add null in place of removed elements - i++; - } - this.instance.populateFromArray(row, index, [elements], null, null, 'spliceRow'); - - return removed; -}; - -/** - * Add/remove row(s) to/from the data source. - * - * @param {Number} index Physical index of the element to remove. - * @param {Number} amount Number of rows to add/remove. - * @param {Object} element Row to add. - */ -DataMap.prototype.spliceData = function (index, amount, element) { - var continueSplicing = this.instance.runHooks('beforeDataSplice', index, amount, element); - - if (continueSplicing !== false) { - this.dataSource.splice(index, amount, element); - } -}; - -/** - * Filter unwanted data elements from the data source. - * - * @param {Number} index Visual index of the element to remove. - * @param {Number} amount Number of rows to add/remove. - * @returns {Array} - */ -DataMap.prototype.filterData = function (index, amount) { - var physicalRows = this.visualRowsToPhysical(index, amount); - var continueSplicing = this.instance.runHooks('beforeDataFilter', index, amount, physicalRows); - - if (continueSplicing !== false) { - var newData = this.dataSource.filter(function (row, index) { - return physicalRows.indexOf(index) == -1; - }); - - return newData; - } -}; - -/** - * Returns single value from the data array. - * - * @param {Number} row Visual row index. - * @param {Number} prop - */ -DataMap.prototype.get = function (row, prop) { - row = this.instance.runHooks('modifyRow', row); - - var dataRow = this.dataSource[row]; - // TODO: To remove, use 'modifyData' hook instead (see below) - var modifiedRowData = this.instance.runHooks('modifyRowData', row); - - dataRow = isNaN(modifiedRowData) ? modifiedRowData : dataRow; - // - - var value = null; - - // try to get value under property `prop` (includes dot) - if (dataRow && dataRow.hasOwnProperty && (0, _object.hasOwnProperty)(dataRow, prop)) { - value = dataRow[prop]; - } else if (typeof prop === 'string' && prop.indexOf('.') > -1) { - var sliced = prop.split('.'); - var out = dataRow; - - if (!out) { - return null; - } - for (var i = 0, ilen = sliced.length; i < ilen; i++) { - out = out[sliced[i]]; - - if (typeof out === 'undefined') { - return null; - } - } - value = out; - } else if (typeof prop === 'function') { - /** - * allows for interacting with complex structures, for example - * d3/jQuery getter/setter properties: - * - * {columns: [{ - * data: function(row, value){ - * if(arguments.length === 1){ - * return row.property(); - * } - * row.property(value); - * } - * }]} - */ - value = prop(this.dataSource.slice(row, row + 1)[0]); - } - - if (this.instance.hasHook('modifyData')) { - var valueHolder = (0, _object.createObjectPropListener)(value); - - this.instance.runHooks('modifyData', row, this.propToCol(prop), valueHolder, 'get'); - - if (valueHolder.isTouched()) { - value = valueHolder.value; - } - } - - return value; -}; - -var copyableLookup = (0, _data.cellMethodLookupFactory)('copyable', false); - -/** - * Returns single value from the data array (intended for clipboard copy to an external application). - * - * @param {Number} row Physical row index. - * @param {Number} prop - * @returns {String} - */ -DataMap.prototype.getCopyable = function (row, prop) { - if (copyableLookup.call(this.instance, row, this.propToCol(prop))) { - return this.get(row, prop); - } - return ''; -}; - -/** - * Saves single value to the data array. - * - * @param {Number} row Visual row index. - * @param {Number} prop - * @param {String} value - * @param {String} [source] Source of hook runner. - */ -DataMap.prototype.set = function (row, prop, value, source) { - row = this.instance.runHooks('modifyRow', row, source || 'datamapGet'); - - var dataRow = this.dataSource[row]; - // TODO: To remove, use 'modifyData' hook instead (see below) - var modifiedRowData = this.instance.runHooks('modifyRowData', row); - - dataRow = isNaN(modifiedRowData) ? modifiedRowData : dataRow; - // - - if (this.instance.hasHook('modifyData')) { - var valueHolder = (0, _object.createObjectPropListener)(value); - - this.instance.runHooks('modifyData', row, this.propToCol(prop), valueHolder, 'set'); - - if (valueHolder.isTouched()) { - value = valueHolder.value; - } - } - - // try to set value under property `prop` (includes dot) - if (dataRow && dataRow.hasOwnProperty && (0, _object.hasOwnProperty)(dataRow, prop)) { - dataRow[prop] = value; - } else if (typeof prop === 'string' && prop.indexOf('.') > -1) { - var sliced = prop.split('.'); - var out = dataRow; - var i = 0; - var ilen = void 0; - - for (i = 0, ilen = sliced.length - 1; i < ilen; i++) { - if (typeof out[sliced[i]] === 'undefined') { - out[sliced[i]] = {}; - } - out = out[sliced[i]]; - } - out[sliced[i]] = value; - } else if (typeof prop === 'function') { - /* see the `function` handler in `get` */ - prop(this.dataSource.slice(row, row + 1)[0], value); - } else { - dataRow[prop] = value; - } -}; - -/** - * This ridiculous piece of code maps rows Id that are present in table data to those displayed for user. - * The trick is, the physical row id (stored in settings.data) is not necessary the same - * as the visual (displayed) row id (e.g. when sorting is applied). - * - * @param {Number} index Visual row index. - * @param {Number} amount - * @fires Hooks#modifyRow - * @returns {Number} - */ -DataMap.prototype.visualRowsToPhysical = function (index, amount) { - var totalRows = this.instance.countSourceRows(); - var physicRow = (totalRows + index) % totalRows; - var logicRows = []; - var rowsToRemove = amount; - var row; - - while (physicRow < totalRows && rowsToRemove) { - row = this.instance.runHooks('modifyRow', physicRow); - logicRows.push(row); - - rowsToRemove--; - physicRow++; - } - - return logicRows; -}; - -/** - * - * @param index Visual column index. - * @param amount - * @returns {Array} - */ -DataMap.prototype.visualColumnsToPhysical = function (index, amount) { - var totalCols = this.instance.countCols(); - var physicalCol = (totalCols + index) % totalCols; - var visualCols = []; - var colsToRemove = amount; - - while (physicalCol < totalCols && colsToRemove) { - var col = this.instance.runHooks('modifyCol', physicalCol); - - visualCols.push(col); - - colsToRemove--; - physicalCol++; - } - - return visualCols; -}; - -/** - * Clears the data array. - */ -DataMap.prototype.clear = function () { - for (var r = 0; r < this.instance.countSourceRows(); r++) { - for (var c = 0; c < this.instance.countCols(); c++) { - this.set(r, this.colToProp(c), ''); - } - } -}; - -/** - * Clear cached data length. - */ -DataMap.prototype.clearLengthCache = function () { - this.cachedLength = null; -}; - -/** - * Get data length. - * - * @returns {Number} - */ -DataMap.prototype.getLength = function () { - var _this2 = this; - - var maxRows = void 0, - maxRowsFromSettings = this.instance.getSettings().maxRows; - - if (maxRowsFromSettings < 0 || maxRowsFromSettings === 0) { - maxRows = 0; - } else { - maxRows = maxRowsFromSettings || Infinity; - } - - var length = this.instance.countSourceRows(); - - if (this.instance.hasHook('modifyRow')) { - var reValidate = this.skipCache; - - this.interval.start(); - if (length !== this.latestSourceRowsCount) { - reValidate = true; - } - - this.latestSourceRowsCount = length; - if (this.cachedLength === null || reValidate) { - (0, _number.rangeEach)(length - 1, function (row) { - row = _this2.instance.runHooks('modifyRow', row); - - if (row === null) { - --length; - } - }); - this.cachedLength = length; - } else { - length = this.cachedLength; - } - } else { - this.interval.stop(); - } - - return Math.min(length, maxRows); -}; - -/** - * Returns the data array. - * - * @returns {Array} - */ -DataMap.prototype.getAll = function () { - var start = { - row: 0, - col: 0 - }; - - var end = { - row: Math.max(this.instance.countSourceRows() - 1, 0), - col: Math.max(this.instance.countCols() - 1, 0) - }; - - if (start.row - end.row === 0 && !this.instance.countSourceRows()) { - return []; - } - - return this.getRange(start, end, DataMap.prototype.DESTINATION_RENDERER); -}; - -/** - * Returns data range as array. - * - * @param {Object} [start] Start selection position. Visual indexes. - * @param {Object} [end] End selection position. Visual indexes. - * @param {Number} destination Destination of datamap.get - * @returns {Array} - */ -DataMap.prototype.getRange = function (start, end, destination) { - var r, - rlen, - c, - clen, - output = [], - row; - - var maxRows = this.instance.getSettings().maxRows; - var maxCols = this.instance.getSettings().maxCols; - - if (maxRows === 0 || maxCols === 0) { - return []; - } - - var getFn = destination === this.DESTINATION_CLIPBOARD_GENERATOR ? this.getCopyable : this.get; - - rlen = Math.min(Math.max(maxRows - 1, 0), Math.max(start.row, end.row)); - clen = Math.min(Math.max(maxCols - 1, 0), Math.max(start.col, end.col)); - - for (r = Math.min(start.row, end.row); r <= rlen; r++) { - row = []; - var physicalRow = this.instance.runHooks('modifyRow', r); - - for (c = Math.min(start.col, end.col); c <= clen; c++) { - - if (physicalRow === null) { - break; - } - row.push(getFn.call(this, r, this.colToProp(c))); - } - if (physicalRow !== null) { - output.push(row); - } - } - - return output; -}; - -/** - * Return data as text (tab separated columns). - * - * @param {Object} [start] Start selection position. Visual indexes. - * @param {Object} [end] End selection position. Visual indexes. - * @returns {String} - */ -DataMap.prototype.getText = function (start, end) { - return _SheetClip2.default.stringify(this.getRange(start, end, this.DESTINATION_RENDERER)); -}; - -/** - * Return data as copyable text (tab separated columns intended for clipboard copy to an external application). - * - * @param {Object} [start] Start selection position. Visual indexes. - * @param {Object} [end] End selection position. Visual indexes. - * @returns {String} - */ -DataMap.prototype.getCopyableText = function (start, end) { - return _SheetClip2.default.stringify(this.getRange(start, end, this.DESTINATION_CLIPBOARD_GENERATOR)); -}; - -/** - * `skipLengthCache` callback. - * @private - * @param {Number} delay Time of the delay in milliseconds. - */ -DataMap.prototype.onSkipLengthCache = function (delay) { - var _this3 = this; - - this.skipCache = true; - setTimeout(function () { - _this3.skipCache = false; - }, delay); -}; - -/** - * Destroy instance. - */ -DataMap.prototype.destroy = function () { - this.interval.stop(); - - this.interval = null; - this.instance = null; - this.priv = null; - this.GridSettings = null; - this.dataSource = null; - this.cachedLength = null; - this.duckSchema = null; -}; - -exports.default = DataMap; - -/***/ }), -/* 241 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -exports.parseDelay = parseDelay; - -var _feature = __webpack_require__(34); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class Interval - * @util - */ -var Interval = function () { - _createClass(Interval, null, [{ - key: 'create', - value: function create(func, delay) { - return new Interval(func, delay); - } - }]); - - function Interval(func, delay) { - var _this = this; - - _classCallCheck(this, Interval); - - /** - * Animation frame request id. - * - * @type {Number} - */ - this.timer = null; - /** - * Function to invoke repeatedly. - * - * @type {Function} - */ - this.func = func; - /** - * Number of milliseconds that function should wait before next call. - */ - this.delay = parseDelay(delay); - /** - * Flag which indicates if interval object was stopped. - * - * @type {Boolean} - * @default true - */ - this.stopped = true; - /** - * Interval time (in milliseconds) of the last callback call. - * - * @private - * @type {Number} - */ - this._then = null; - /** - * Bounded function `func`. - * - * @private - * @type {Function} - */ - this._callback = function () { - return _this.__callback(); - }; - } - - /** - * Start loop. - * - * @returns {Interval} - */ - - - _createClass(Interval, [{ - key: 'start', - value: function start() { - if (this.stopped) { - this._then = Date.now(); - this.stopped = false; - this.timer = (0, _feature.requestAnimationFrame)(this._callback); - } - - return this; - } - - /** - * Stop looping. - * - * @returns {Interval} - */ - - }, { - key: 'stop', - value: function stop() { - if (!this.stopped) { - this.stopped = true; - (0, _feature.cancelAnimationFrame)(this.timer); - this.timer = null; - } - - return this; - } - - /** - * Loop callback, fired on every animation frame. - * - * @private - */ - - }, { - key: '__callback', - value: function __callback() { - this.timer = (0, _feature.requestAnimationFrame)(this._callback); - - if (this.delay) { - var now = Date.now(); - var elapsed = now - this._then; - - if (elapsed > this.delay) { - this._then = now - elapsed % this.delay; - this.func(); - } - } else { - this.func(); - } - } - }]); - - return Interval; -}(); - -exports.default = Interval; -function parseDelay(delay) { - if (typeof delay === 'string' && /fps$/.test(delay)) { - delay = 1000 / parseInt(delay.replace('fps', '') || 0, 10); - } - - return delay; -} - -/***/ }), -/* 242 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -function MultiMap() { - var map = { - arrayMap: [], - weakMap: new WeakMap() - }; - - return { - get: function get(key) { - if (canBeAnArrayMapKey(key)) { - return map.arrayMap[key]; - } else if (canBeAWeakMapKey(key)) { - return map.weakMap.get(key); - } - }, - set: function set(key, value) { - if (canBeAnArrayMapKey(key)) { - map.arrayMap[key] = value; - } else if (canBeAWeakMapKey(key)) { - map.weakMap.set(key, value); - } else { - throw new Error('Invalid key type'); - } - }, - delete: function _delete(key) { - if (canBeAnArrayMapKey(key)) { - delete map.arrayMap[key]; - } else if (canBeAWeakMapKey(key)) { - map.weakMap.delete(key); - } - } - }; - - function canBeAnArrayMapKey(obj) { - return obj !== null && !isNaNSymbol(obj) && (typeof obj == 'string' || typeof obj == 'number'); - } - - function canBeAWeakMapKey(obj) { - return obj !== null && ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) == 'object' || typeof obj == 'function'); - } - - function isNaNSymbol(obj) { - /* eslint-disable no-self-compare */ - return obj !== obj; // NaN === NaN is always false - } -} - -exports.default = MultiMap; - -/***/ }), -/* 243 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _src = __webpack_require__(12); - -var _unicode = __webpack_require__(17); - -var _event = __webpack_require__(8); - -var _editors = __webpack_require__(15); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _baseEditor = __webpack_require__(41); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function EditorManager(instance, priv, selection) { - var _this = this, - destroyed = false, - eventManager, - activeEditor; - - eventManager = new _eventManager2.default(instance); - - function moveSelectionAfterEnter(shiftKey) { - selection.setSelectedHeaders(false, false, false); - var enterMoves = typeof priv.settings.enterMoves === 'function' ? priv.settings.enterMoves(event) : priv.settings.enterMoves; - - if (shiftKey) { - // move selection up - selection.transformStart(-enterMoves.row, -enterMoves.col); - } else { - // move selection down (add a new row if needed) - selection.transformStart(enterMoves.row, enterMoves.col, true); - } - } - - function moveSelectionUp(shiftKey) { - if (shiftKey) { - if (selection.selectedHeader.cols) { - selection.setSelectedHeaders(selection.selectedHeader.rows, false, false); - } - selection.transformEnd(-1, 0); - } else { - selection.setSelectedHeaders(false, false, false); - selection.transformStart(-1, 0); - } - } - - function moveSelectionDown(shiftKey) { - if (shiftKey) { - // expanding selection down with shift - selection.transformEnd(1, 0); - } else { - selection.setSelectedHeaders(false, false, false); - selection.transformStart(1, 0); - } - } - - function moveSelectionRight(shiftKey) { - if (shiftKey) { - selection.transformEnd(0, 1); - } else { - selection.setSelectedHeaders(false, false, false); - selection.transformStart(0, 1); - } - } - - function moveSelectionLeft(shiftKey) { - if (shiftKey) { - if (selection.selectedHeader.rows) { - selection.setSelectedHeaders(false, selection.selectedHeader.cols, false); - } - selection.transformEnd(0, -1); - } else { - selection.setSelectedHeaders(false, false, false); - selection.transformStart(0, -1); - } - } - - function onKeyDown(event) { - var ctrlDown, rangeModifier; - - if (!instance.isListening()) { - return; - } - instance.runHooks('beforeKeyDown', event); - - if (destroyed) { - return; - } - if ((0, _event.isImmediatePropagationStopped)(event)) { - return; - } - priv.lastKeyCode = event.keyCode; - - if (!selection.isSelected()) { - return; - } - // catch CTRL but not right ALT (which in some systems triggers ALT+CTRL) - ctrlDown = (event.ctrlKey || event.metaKey) && !event.altKey; - - if (activeEditor && !activeEditor.isWaiting()) { - if (!(0, _unicode.isMetaKey)(event.keyCode) && !(0, _unicode.isCtrlKey)(event.keyCode) && !ctrlDown && !_this.isEditorOpened()) { - _this.openEditor('', event); - - return; - } - } - rangeModifier = event.shiftKey ? selection.setRangeEnd : selection.setRangeStart; - - switch (event.keyCode) { - case _unicode.KEY_CODES.A: - if (!_this.isEditorOpened() && ctrlDown) { - selection.selectAll(); - - event.preventDefault(); - (0, _event.stopPropagation)(event); - } - break; - - case _unicode.KEY_CODES.ARROW_UP: - if (_this.isEditorOpened() && !activeEditor.isWaiting()) { - _this.closeEditorAndSaveChanges(ctrlDown); - } - moveSelectionUp(event.shiftKey); - - event.preventDefault(); - (0, _event.stopPropagation)(event); - break; - - case _unicode.KEY_CODES.ARROW_DOWN: - if (_this.isEditorOpened() && !activeEditor.isWaiting()) { - _this.closeEditorAndSaveChanges(ctrlDown); - } - - moveSelectionDown(event.shiftKey); - - event.preventDefault(); - (0, _event.stopPropagation)(event); - break; - - case _unicode.KEY_CODES.ARROW_RIGHT: - if (_this.isEditorOpened() && !activeEditor.isWaiting()) { - _this.closeEditorAndSaveChanges(ctrlDown); - } - - moveSelectionRight(event.shiftKey); - - event.preventDefault(); - (0, _event.stopPropagation)(event); - break; - - case _unicode.KEY_CODES.ARROW_LEFT: - if (_this.isEditorOpened() && !activeEditor.isWaiting()) { - _this.closeEditorAndSaveChanges(ctrlDown); - } - - moveSelectionLeft(event.shiftKey); - - event.preventDefault(); - (0, _event.stopPropagation)(event); - break; - - case _unicode.KEY_CODES.TAB: - selection.setSelectedHeaders(false, false, false); - var tabMoves = typeof priv.settings.tabMoves === 'function' ? priv.settings.tabMoves(event) : priv.settings.tabMoves; - - if (event.shiftKey) { - // move selection left - selection.transformStart(-tabMoves.row, -tabMoves.col); - } else { - // move selection right (add a new column if needed) - selection.transformStart(tabMoves.row, tabMoves.col, true); - } - event.preventDefault(); - (0, _event.stopPropagation)(event); - break; - - case _unicode.KEY_CODES.BACKSPACE: - case _unicode.KEY_CODES.DELETE: - selection.empty(event); - _this.prepareEditor(); - event.preventDefault(); - break; - - case _unicode.KEY_CODES.F2: - /* F2 */ - _this.openEditor(null, event); - - if (activeEditor) { - activeEditor.enableFullEditMode(); - } - event.preventDefault(); // prevent Opera from opening 'Go to Page dialog' - break; - - case _unicode.KEY_CODES.ENTER: - /* return/enter */ - if (_this.isEditorOpened()) { - - if (activeEditor && activeEditor.state !== _baseEditor.EditorState.WAITING) { - _this.closeEditorAndSaveChanges(ctrlDown); - } - moveSelectionAfterEnter(event.shiftKey); - } else if (instance.getSettings().enterBeginsEditing) { - _this.openEditor(null, event); - - if (activeEditor) { - activeEditor.enableFullEditMode(); - } - } else { - moveSelectionAfterEnter(event.shiftKey); - } - event.preventDefault(); // don't add newline to field - (0, _event.stopImmediatePropagation)(event); // required by HandsontableEditor - break; - - case _unicode.KEY_CODES.ESCAPE: - if (_this.isEditorOpened()) { - _this.closeEditorAndRestoreOriginalValue(ctrlDown); - } - event.preventDefault(); - break; - - case _unicode.KEY_CODES.HOME: - selection.setSelectedHeaders(false, false, false); - if (event.ctrlKey || event.metaKey) { - rangeModifier(new _src.CellCoords(0, priv.selRange.from.col)); - } else { - rangeModifier(new _src.CellCoords(priv.selRange.from.row, 0)); - } - event.preventDefault(); // don't scroll the window - (0, _event.stopPropagation)(event); - break; - - case _unicode.KEY_CODES.END: - selection.setSelectedHeaders(false, false, false); - if (event.ctrlKey || event.metaKey) { - rangeModifier(new _src.CellCoords(instance.countRows() - 1, priv.selRange.from.col)); - } else { - rangeModifier(new _src.CellCoords(priv.selRange.from.row, instance.countCols() - 1)); - } - event.preventDefault(); // don't scroll the window - (0, _event.stopPropagation)(event); - break; - - case _unicode.KEY_CODES.PAGE_UP: - selection.setSelectedHeaders(false, false, false); - selection.transformStart(-instance.countVisibleRows(), 0); - event.preventDefault(); // don't page up the window - (0, _event.stopPropagation)(event); - break; - - case _unicode.KEY_CODES.PAGE_DOWN: - selection.setSelectedHeaders(false, false, false); - selection.transformStart(instance.countVisibleRows(), 0); - event.preventDefault(); // don't page down the window - (0, _event.stopPropagation)(event); - break; - default: - break; - } - } - - function init() { - instance.addHook('afterDocumentKeyDown', onKeyDown); - - eventManager.addEventListener(document.documentElement, 'keydown', function (event) { - if (!destroyed) { - instance.runHooks('afterDocumentKeyDown', event); - } - }); - - function onDblClick(event, coords, elem) { - // may be TD or TH - if (elem.nodeName == 'TD') { - _this.openEditor(); - - if (activeEditor) { - activeEditor.enableFullEditMode(); - } - } - } - instance.view.wt.update('onCellDblClick', onDblClick); - - instance.addHook('afterDestroy', function () { - destroyed = true; - }); - } - - /** - * Destroy current editor, if exists. - * - * @function destroyEditor - * @memberof! Handsontable.EditorManager# - * @param {Boolean} revertOriginal - */ - this.destroyEditor = function (revertOriginal) { - this.closeEditor(revertOriginal); - }; - - /** - * Get active editor. - * - * @function getActiveEditor - * @memberof! Handsontable.EditorManager# - * @returns {*} - */ - this.getActiveEditor = function () { - return activeEditor; - }; - - /** - * Prepare text input to be displayed at given grid cell. - * - * @function prepareEditor - * @memberof! Handsontable.EditorManager# - */ - this.prepareEditor = function () { - var row, col, prop, td, originalValue, cellProperties, editorClass; - - if (activeEditor && activeEditor.isWaiting()) { - this.closeEditor(false, false, function (dataSaved) { - if (dataSaved) { - _this.prepareEditor(); - } - }); - - return; - } - row = priv.selRange.highlight.row; - col = priv.selRange.highlight.col; - prop = instance.colToProp(col); - td = instance.getCell(row, col); - - originalValue = instance.getSourceDataAtCell(instance.runHooks('modifyRow', row), col); - cellProperties = instance.getCellMeta(row, col); - editorClass = instance.getCellEditor(cellProperties); - - if (editorClass) { - activeEditor = (0, _editors.getEditorInstance)(editorClass, instance); - activeEditor.prepare(row, col, prop, td, originalValue, cellProperties); - } else { - activeEditor = void 0; - } - }; - - /** - * Check is editor is opened/showed. - * - * @function isEditorOpened - * @memberof! Handsontable.EditorManager# - * @returns {Boolean} - */ - this.isEditorOpened = function () { - return activeEditor && activeEditor.isOpened(); - }; - - /** - * Open editor with initial value. - * - * @function openEditor - * @memberof! Handsontable.EditorManager# - * @param {String} initialValue - * @param {DOMEvent} event - */ - this.openEditor = function (initialValue, event) { - if (activeEditor && !activeEditor.cellProperties.readOnly) { - activeEditor.beginEditing(initialValue, event); - } else if (activeEditor && activeEditor.cellProperties.readOnly) { - - // move the selection after opening the editor with ENTER key - if (event && event.keyCode === _unicode.KEY_CODES.ENTER) { - moveSelectionAfterEnter(); - } - } - }; - - /** - * Close editor, finish editing cell. - * - * @function closeEditor - * @memberof! Handsontable.EditorManager# - * @param {Boolean} restoreOriginalValue - * @param {Boolean} [ctrlDown] - * @param {Function} [callback] - */ - this.closeEditor = function (restoreOriginalValue, ctrlDown, callback) { - if (activeEditor) { - activeEditor.finishEditing(restoreOriginalValue, ctrlDown, callback); - } else if (callback) { - callback(false); - } - }; - - /** - * Close editor and save changes. - * - * @function closeEditorAndSaveChanges - * @memberof! Handsontable.EditorManager# - * @param {Boolean} ctrlDown - */ - this.closeEditorAndSaveChanges = function (ctrlDown) { - return this.closeEditor(false, ctrlDown); - }; - - /** - * Close editor and restore original value. - * - * @function closeEditorAndRestoreOriginalValue - * @memberof! Handsontable.EditorManager# - * @param {Boolean} ctrlDown - */ - this.closeEditorAndRestoreOriginalValue = function (ctrlDown) { - return this.closeEditor(true, ctrlDown); - }; - - init(); -} - -exports.default = EditorManager; - -/***/ }), -/* 244 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _element = __webpack_require__(0); - -var _browser = __webpack_require__(26); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _event = __webpack_require__(8); - -var _src = __webpack_require__(12); - -var _src2 = _interopRequireDefault(_src); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Handsontable TableView constructor - * @param {Object} instance - */ -function TableView(instance) { - var _this = this; - - var that = this; - - this.eventManager = new _eventManager2.default(instance); - this.instance = instance; - this.settings = instance.getSettings(); - this.selectionMouseDown = false; - - var originalStyle = instance.rootElement.getAttribute('style'); - - if (originalStyle) { - instance.rootElement.setAttribute('data-originalstyle', originalStyle); // needed to retrieve original style in jsFiddle link generator in HT examples. may be removed in future versions - } - - (0, _element.addClass)(instance.rootElement, 'handsontable'); - - var table = document.createElement('TABLE'); - (0, _element.addClass)(table, 'htCore'); - - if (instance.getSettings().tableClassName) { - (0, _element.addClass)(table, instance.getSettings().tableClassName); - } - this.THEAD = document.createElement('THEAD'); - table.appendChild(this.THEAD); - this.TBODY = document.createElement('TBODY'); - table.appendChild(this.TBODY); - - instance.table = table; - - instance.container.insertBefore(table, instance.container.firstChild); - - this.eventManager.addEventListener(instance.rootElement, 'mousedown', function (event) { - this.selectionMouseDown = true; - - if (!that.isTextSelectionAllowed(event.target)) { - clearTextSelection(); - event.preventDefault(); - window.focus(); // make sure that window that contains HOT is active. Important when HOT is in iframe. - } - }); - this.eventManager.addEventListener(instance.rootElement, 'mouseup', function (event) { - this.selectionMouseDown = false; - }); - this.eventManager.addEventListener(instance.rootElement, 'mousemove', function (event) { - if (this.selectionMouseDown && !that.isTextSelectionAllowed(event.target)) { - clearTextSelection(); - event.preventDefault(); - } - }); - - this.eventManager.addEventListener(document.documentElement, 'keyup', function (event) { - if (instance.selection.isInProgress() && !event.shiftKey) { - instance.selection.finish(); - } - }); - - var isMouseDown; - this.isMouseDown = function () { - return isMouseDown; - }; - - this.eventManager.addEventListener(document.documentElement, 'mouseup', function (event) { - if (instance.selection.isInProgress() && event.which === 1) { - // is left mouse button - instance.selection.finish(); - } - - isMouseDown = false; - - if ((0, _element.isOutsideInput)(document.activeElement) || !instance.selection.isSelected()) { - instance.unlisten(); - } - }); - - this.eventManager.addEventListener(document.documentElement, 'mousedown', function (event) { - var originalTarget = event.target; - var next = event.target; - var eventX = event.x || event.clientX; - var eventY = event.y || event.clientY; - - if (isMouseDown || !instance.rootElement) { - return; // it must have been started in a cell - } - - // immediate click on "holder" means click on the right side of vertical scrollbar - if (next === instance.view.wt.wtTable.holder) { - var scrollbarWidth = (0, _element.getScrollbarWidth)(); - - if (document.elementFromPoint(eventX + scrollbarWidth, eventY) !== instance.view.wt.wtTable.holder || document.elementFromPoint(eventX, eventY + scrollbarWidth) !== instance.view.wt.wtTable.holder) { - return; - } - } else { - while (next !== document.documentElement) { - if (next === null) { - if (event.isTargetWebComponent) { - break; - } - // click on something that was a row but now is detached (possibly because your click triggered a rerender) - return; - } - if (next === instance.rootElement) { - // click inside container - return; - } - next = next.parentNode; - } - } - - // function did not return until here, we have an outside click! - - var outsideClickDeselects = typeof that.settings.outsideClickDeselects === 'function' ? that.settings.outsideClickDeselects(originalTarget) : that.settings.outsideClickDeselects; - - if (outsideClickDeselects) { - instance.deselectCell(); - } else { - instance.destroyEditor(); - } - }); - - this.eventManager.addEventListener(table, 'selectstart', function (event) { - if (that.settings.fragmentSelection || (0, _element.isInput)(event.target)) { - return; - } - // https://github.com/handsontable/handsontable/issues/160 - // Prevent text from being selected when performing drag down. - event.preventDefault(); - }); - - var clearTextSelection = function clearTextSelection() { - // http://stackoverflow.com/questions/3169786/clear-text-selection-with-javascript - if (window.getSelection) { - if (window.getSelection().empty) { - // Chrome - window.getSelection().empty(); - } else if (window.getSelection().removeAllRanges) { - // Firefox - window.getSelection().removeAllRanges(); - } - } else if (document.selection) { - // IE? - document.selection.empty(); - } - }; - - var selections = [new _src.Selection({ - className: 'current', - border: { - width: 2, - color: '#5292F7', - // style: 'solid', // not used - cornerVisible: function cornerVisible() { - return that.settings.fillHandle && !that.isCellEdited() && !instance.selection.isMultiple(); - }, - multipleSelectionHandlesVisible: function multipleSelectionHandlesVisible() { - return !that.isCellEdited() && !instance.selection.isMultiple(); - } - } - }), new _src.Selection({ - className: 'area', - border: { - width: 1, - color: '#89AFF9', - // style: 'solid', // not used - cornerVisible: function cornerVisible() { - return that.settings.fillHandle && !that.isCellEdited() && instance.selection.isMultiple(); - }, - multipleSelectionHandlesVisible: function multipleSelectionHandlesVisible() { - return !that.isCellEdited() && instance.selection.isMultiple(); - } - } - }), new _src.Selection({ - className: 'highlight', - highlightHeaderClassName: that.settings.currentHeaderClassName, - highlightRowClassName: that.settings.currentRowClassName, - highlightColumnClassName: that.settings.currentColClassName - }), new _src.Selection({ - className: 'fill', - border: { - width: 1, - color: 'red' - // style: 'solid' // not used - } - })]; - selections.current = selections[0]; - selections.area = selections[1]; - selections.highlight = selections[2]; - selections.fill = selections[3]; - - var walkontableConfig = { - debug: function debug() { - return that.settings.debug; - }, - externalRowCalculator: this.instance.getPlugin('autoRowSize') && this.instance.getPlugin('autoRowSize').isEnabled(), - table: table, - preventOverflow: function preventOverflow() { - return _this.settings.preventOverflow; - }, - stretchH: function stretchH() { - return that.settings.stretchH; - }, - data: instance.getDataAtCell, - totalRows: function totalRows() { - return instance.countRows(); - }, - totalColumns: function totalColumns() { - return instance.countCols(); - }, - fixedColumnsLeft: function fixedColumnsLeft() { - return that.settings.fixedColumnsLeft; - }, - fixedRowsTop: function fixedRowsTop() { - return that.settings.fixedRowsTop; - }, - fixedRowsBottom: function fixedRowsBottom() { - return that.settings.fixedRowsBottom; - }, - minSpareRows: function minSpareRows() { - return that.settings.minSpareRows; - }, - renderAllRows: that.settings.renderAllRows, - rowHeaders: function rowHeaders() { - var headerRenderers = []; - - if (instance.hasRowHeaders()) { - headerRenderers.push(function (row, TH) { - that.appendRowHeader(row, TH); - }); - } - instance.runHooks('afterGetRowHeaderRenderers', headerRenderers); - - return headerRenderers; - }, - columnHeaders: function columnHeaders() { - var headerRenderers = []; - - if (instance.hasColHeaders()) { - headerRenderers.push(function (column, TH) { - that.appendColHeader(column, TH); - }); - } - instance.runHooks('afterGetColumnHeaderRenderers', headerRenderers); - - return headerRenderers; - }, - columnWidth: instance.getColWidth, - rowHeight: instance.getRowHeight, - cellRenderer: function cellRenderer(row, col, TD) { - var cellProperties = that.instance.getCellMeta(row, col); - var prop = that.instance.colToProp(col); - var value = that.instance.getDataAtRowProp(row, prop); - - if (that.instance.hasHook('beforeValueRender')) { - value = that.instance.runHooks('beforeValueRender', value); - } - - that.instance.runHooks('beforeRenderer', TD, row, col, prop, value, cellProperties); - that.instance.getCellRenderer(cellProperties)(that.instance, TD, row, col, prop, value, cellProperties); - that.instance.runHooks('afterRenderer', TD, row, col, prop, value, cellProperties); - }, - selections: selections, - hideBorderOnMouseDownOver: function hideBorderOnMouseDownOver() { - return that.settings.fragmentSelection; - }, - onCellMouseDown: function onCellMouseDown(event, coords, TD, wt) { - var blockCalculations = { - row: false, - column: false, - cells: false - }; - - instance.listen(); - - that.activeWt = wt; - isMouseDown = true; - - instance.runHooks('beforeOnCellMouseDown', event, coords, TD, blockCalculations); - - if ((0, _event.isImmediatePropagationStopped)(event)) { - return; - } - - var actualSelection = instance.getSelectedRange(); - var selection = instance.selection; - var selectedHeader = selection.selectedHeader; - - if (event.shiftKey && actualSelection) { - if (coords.row >= 0 && coords.col >= 0 && !blockCalculations.cells) { - selection.setSelectedHeaders(false, false); - selection.setRangeEnd(coords); - } else if ((selectedHeader.cols || selectedHeader.rows) && coords.row >= 0 && coords.col >= 0 && !blockCalculations.cells) { - selection.setSelectedHeaders(false, false); - selection.setRangeEnd(new _src.CellCoords(coords.row, coords.col)); - } else if (selectedHeader.cols && coords.row < 0 && !blockCalculations.column) { - selection.setRangeEnd(new _src.CellCoords(actualSelection.to.row, coords.col)); - } else if (selectedHeader.rows && coords.col < 0 && !blockCalculations.row) { - selection.setRangeEnd(new _src.CellCoords(coords.row, actualSelection.to.col)); - } else if ((!selectedHeader.cols && !selectedHeader.rows && coords.col < 0 || selectedHeader.cols && coords.col < 0) && !blockCalculations.row) { - selection.setSelectedHeaders(true, false); - selection.setRangeStartOnly(new _src.CellCoords(actualSelection.from.row, 0)); - selection.setRangeEnd(new _src.CellCoords(coords.row, instance.countCols() - 1)); - } else if ((!selectedHeader.cols && !selectedHeader.rows && coords.row < 0 || selectedHeader.rows && coords.row < 0) && !blockCalculations.column) { - selection.setSelectedHeaders(false, true); - selection.setRangeStartOnly(new _src.CellCoords(0, actualSelection.from.col)); - selection.setRangeEnd(new _src.CellCoords(instance.countRows() - 1, coords.col)); - } - } else { - var doNewSelection = true; - - if (actualSelection) { - var from = actualSelection.from, - to = actualSelection.to; - - var coordsNotInSelection = !selection.inInSelection(coords); - - if (coords.row < 0 && selectedHeader.cols) { - var start = Math.min(from.col, to.col); - var end = Math.max(from.col, to.col); - - doNewSelection = coords.col < start || coords.col > end; - } else if (coords.col < 0 && selectedHeader.rows) { - var _start = Math.min(from.row, to.row); - var _end = Math.max(from.row, to.row); - - doNewSelection = coords.row < _start || coords.row > _end; - } else { - doNewSelection = coordsNotInSelection; - } - } - - var rightClick = (0, _event.isRightClick)(event); - var leftClick = (0, _event.isLeftClick)(event) || event.type === 'touchstart'; - - // clicked row header and when some column was selected - if (coords.row < 0 && coords.col >= 0 && !blockCalculations.column) { - selection.setSelectedHeaders(false, true); - - if (leftClick || rightClick && doNewSelection) { - selection.setRangeStartOnly(new _src.CellCoords(0, coords.col)); - selection.setRangeEnd(new _src.CellCoords(Math.max(instance.countRows() - 1, 0), coords.col), false); - } - - // clicked column header and when some row was selected - } else if (coords.col < 0 && coords.row >= 0 && !blockCalculations.row) { - selection.setSelectedHeaders(true, false); - - if (leftClick || rightClick && doNewSelection) { - selection.setRangeStartOnly(new _src.CellCoords(coords.row, 0)); - selection.setRangeEnd(new _src.CellCoords(coords.row, Math.max(instance.countCols() - 1, 0)), false); - } - } else if (coords.col >= 0 && coords.row >= 0 && !blockCalculations.cells) { - if (leftClick || rightClick && doNewSelection) { - selection.setSelectedHeaders(false, false); - selection.setRangeStart(coords); - } - } else if (coords.col < 0 && coords.row < 0) { - coords.row = 0; - coords.col = 0; - - selection.setSelectedHeaders(false, false, true); - selection.setRangeStart(coords); - } - } - - instance.runHooks('afterOnCellMouseDown', event, coords, TD); - that.activeWt = that.wt; - }, - onCellMouseOut: function onCellMouseOut(event, coords, TD, wt) { - that.activeWt = wt; - instance.runHooks('beforeOnCellMouseOut', event, coords, TD); - - if ((0, _event.isImmediatePropagationStopped)(event)) { - return; - } - - instance.runHooks('afterOnCellMouseOut', event, coords, TD); - that.activeWt = that.wt; - }, - onCellMouseOver: function onCellMouseOver(event, coords, TD, wt) { - var blockCalculations = { - row: false, - column: false, - cell: false - }; - - that.activeWt = wt; - instance.runHooks('beforeOnCellMouseOver', event, coords, TD, blockCalculations); - - if ((0, _event.isImmediatePropagationStopped)(event)) { - return; - } - - if (event.button === 0 && isMouseDown) { - if (coords.row >= 0 && coords.col >= 0) { - // is not a header - if (instance.selection.selectedHeader.cols && !blockCalculations.column) { - instance.selection.setRangeEnd(new _src.CellCoords(instance.countRows() - 1, coords.col), false); - } else if (instance.selection.selectedHeader.rows && !blockCalculations.row) { - instance.selection.setRangeEnd(new _src.CellCoords(coords.row, instance.countCols() - 1), false); - } else if (!blockCalculations.cell) { - instance.selection.setRangeEnd(coords); - } - } else { - /* eslint-disable no-lonely-if */ - if (instance.selection.selectedHeader.cols && !blockCalculations.column) { - instance.selection.setRangeEnd(new _src.CellCoords(instance.countRows() - 1, coords.col), false); - } else if (instance.selection.selectedHeader.rows && !blockCalculations.row) { - instance.selection.setRangeEnd(new _src.CellCoords(coords.row, instance.countCols() - 1), false); - } else if (!blockCalculations.cell) { - instance.selection.setRangeEnd(coords); - } - } - } - - instance.runHooks('afterOnCellMouseOver', event, coords, TD); - that.activeWt = that.wt; - }, - onCellMouseUp: function onCellMouseUp(event, coords, TD, wt) { - that.activeWt = wt; - instance.runHooks('beforeOnCellMouseUp', event, coords, TD); - - instance.runHooks('afterOnCellMouseUp', event, coords, TD); - that.activeWt = that.wt; - }, - onCellCornerMouseDown: function onCellCornerMouseDown(event) { - event.preventDefault(); - instance.runHooks('afterOnCellCornerMouseDown', event); - }, - onCellCornerDblClick: function onCellCornerDblClick(event) { - event.preventDefault(); - instance.runHooks('afterOnCellCornerDblClick', event); - }, - beforeDraw: function beforeDraw(force, skipRender) { - that.beforeRender(force, skipRender); - }, - onDraw: function onDraw(force) { - that.onDraw(force); - }, - onScrollVertically: function onScrollVertically() { - instance.runHooks('afterScrollVertically'); - }, - onScrollHorizontally: function onScrollHorizontally() { - instance.runHooks('afterScrollHorizontally'); - }, - onBeforeDrawBorders: function onBeforeDrawBorders(corners, borderClassName) { - instance.runHooks('beforeDrawBorders', corners, borderClassName); - }, - onBeforeTouchScroll: function onBeforeTouchScroll() { - instance.runHooks('beforeTouchScroll'); - }, - onAfterMomentumScroll: function onAfterMomentumScroll() { - instance.runHooks('afterMomentumScroll'); - }, - onBeforeStretchingColumnWidth: function onBeforeStretchingColumnWidth(stretchedWidth, column) { - return instance.runHooks('beforeStretchingColumnWidth', stretchedWidth, column); - }, - onModifyRowHeaderWidth: function onModifyRowHeaderWidth(rowHeaderWidth) { - return instance.runHooks('modifyRowHeaderWidth', rowHeaderWidth); - }, - viewportRowCalculatorOverride: function viewportRowCalculatorOverride(calc) { - var rows = instance.countRows(); - var viewportOffset = that.settings.viewportRowRenderingOffset; - - if (viewportOffset === 'auto' && that.settings.fixedRowsTop) { - viewportOffset = 10; - } - if (typeof viewportOffset === 'number') { - calc.startRow = Math.max(calc.startRow - viewportOffset, 0); - calc.endRow = Math.min(calc.endRow + viewportOffset, rows - 1); - } - if (viewportOffset === 'auto') { - var center = calc.startRow + calc.endRow - calc.startRow; - var offset = Math.ceil(center / rows * 12); - - calc.startRow = Math.max(calc.startRow - offset, 0); - calc.endRow = Math.min(calc.endRow + offset, rows - 1); - } - instance.runHooks('afterViewportRowCalculatorOverride', calc); - }, - viewportColumnCalculatorOverride: function viewportColumnCalculatorOverride(calc) { - var cols = instance.countCols(); - var viewportOffset = that.settings.viewportColumnRenderingOffset; - - if (viewportOffset === 'auto' && that.settings.fixedColumnsLeft) { - viewportOffset = 10; - } - if (typeof viewportOffset === 'number') { - calc.startColumn = Math.max(calc.startColumn - viewportOffset, 0); - calc.endColumn = Math.min(calc.endColumn + viewportOffset, cols - 1); - } - if (viewportOffset === 'auto') { - var center = calc.startColumn + calc.endColumn - calc.startColumn; - var offset = Math.ceil(center / cols * 12); - - calc.startRow = Math.max(calc.startColumn - offset, 0); - calc.endColumn = Math.min(calc.endColumn + offset, cols - 1); - } - instance.runHooks('afterViewportColumnCalculatorOverride', calc); - }, - rowHeaderWidth: function rowHeaderWidth() { - return that.settings.rowHeaderWidth; - }, - columnHeaderHeight: function columnHeaderHeight() { - var columnHeaderHeight = instance.runHooks('modifyColumnHeaderHeight'); - return that.settings.columnHeaderHeight || columnHeaderHeight; - } - }; - - instance.runHooks('beforeInitWalkontable', walkontableConfig); - - this.wt = new _src2.default(walkontableConfig); - this.activeWt = this.wt; - - if (!(0, _browser.isChrome)() && !(0, _browser.isSafari)()) { - this.eventManager.addEventListener(instance.rootElement, 'wheel', function (event) { - event.preventDefault(); - - var lineHeight = parseInt((0, _element.getComputedStyle)(document.body)['font-size'], 10); - var holder = that.wt.wtOverlays.scrollableElement; - - var deltaY = event.wheelDeltaY || event.deltaY; - var deltaX = event.wheelDeltaX || event.deltaX; - - switch (event.deltaMode) { - case 0: - holder.scrollLeft += deltaX; - holder.scrollTop += deltaY; - break; - - case 1: - holder.scrollLeft += deltaX * lineHeight; - holder.scrollTop += deltaY * lineHeight; - break; - - default: - break; - } - }); - } - - this.eventManager.addEventListener(that.wt.wtTable.spreader, 'mousedown', function (event) { - // right mouse button exactly on spreader means right click on the right hand side of vertical scrollbar - if (event.target === that.wt.wtTable.spreader && event.which === 3) { - (0, _event.stopPropagation)(event); - } - }); - - this.eventManager.addEventListener(that.wt.wtTable.spreader, 'contextmenu', function (event) { - // right mouse button exactly on spreader means right click on the right hand side of vertical scrollbar - if (event.target === that.wt.wtTable.spreader && event.which === 3) { - (0, _event.stopPropagation)(event); - } - }); - - this.eventManager.addEventListener(document.documentElement, 'click', function () { - if (that.settings.observeDOMVisibility) { - if (that.wt.drawInterrupted) { - that.instance.forceFullRender = true; - that.render(); - } - } - }); -} - -TableView.prototype.isTextSelectionAllowed = function (el) { - if ((0, _element.isInput)(el)) { - return true; - } - var isChildOfTableBody = (0, _element.isChildOf)(el, this.instance.view.wt.wtTable.spreader); - - if (this.settings.fragmentSelection === true && isChildOfTableBody) { - return true; - } - if (this.settings.fragmentSelection === 'cell' && this.isSelectedOnlyCell() && isChildOfTableBody) { - return true; - } - if (!this.settings.fragmentSelection && this.isCellEdited() && this.isSelectedOnlyCell()) { - return true; - } - - return false; -}; - -/** - * Check if selected only one cell. - * - * @returns {Boolean} - */ -TableView.prototype.isSelectedOnlyCell = function () { - var _ref = this.instance.getSelected() || [], - _ref2 = _slicedToArray(_ref, 4), - row = _ref2[0], - col = _ref2[1], - rowEnd = _ref2[2], - colEnd = _ref2[3]; - - return row !== void 0 && row === rowEnd && col === colEnd; -}; - -TableView.prototype.isCellEdited = function () { - var activeEditor = this.instance.getActiveEditor(); - - return activeEditor && activeEditor.isOpened(); -}; - -TableView.prototype.beforeRender = function (force, skipRender) { - if (force) { - // this.instance.forceFullRender = did Handsontable request full render? - this.instance.runHooks('beforeRender', this.instance.forceFullRender, skipRender); - } -}; - -TableView.prototype.onDraw = function (force) { - if (force) { - // this.instance.forceFullRender = did Handsontable request full render? - this.instance.runHooks('afterRender', this.instance.forceFullRender); - } -}; - -TableView.prototype.render = function () { - this.wt.draw(!this.instance.forceFullRender); - this.instance.forceFullRender = false; - this.instance.renderCall = false; -}; - -/** - * Returns td object given coordinates - * - * @param {CellCoords} coords - * @param {Boolean} topmost - */ -TableView.prototype.getCellAtCoords = function (coords, topmost) { - var td = this.wt.getCell(coords, topmost); - - if (td < 0) { - // there was an exit code (cell is out of bounds) - return null; - } - - return td; -}; - -/** - * Scroll viewport to selection. - * - * @param {CellCoords} coords - */ -TableView.prototype.scrollViewport = function (coords) { - this.wt.scrollViewport(coords); -}; - -/** - * Append row header to a TH element - * @param row - * @param TH - */ -TableView.prototype.appendRowHeader = function (row, TH) { - if (TH.firstChild) { - var container = TH.firstChild; - - if (!(0, _element.hasClass)(container, 'relative')) { - (0, _element.empty)(TH); - this.appendRowHeader(row, TH); - - return; - } - this.updateCellHeader(container.querySelector('.rowHeader'), row, this.instance.getRowHeader); - } else { - var div = document.createElement('div'); - var span = document.createElement('span'); - - div.className = 'relative'; - span.className = 'rowHeader'; - this.updateCellHeader(span, row, this.instance.getRowHeader); - - div.appendChild(span); - TH.appendChild(div); - } - - this.instance.runHooks('afterGetRowHeader', row, TH); -}; - -/** - * Append column header to a TH element - * @param col - * @param TH - */ -TableView.prototype.appendColHeader = function (col, TH) { - if (TH.firstChild) { - var container = TH.firstChild; - - if ((0, _element.hasClass)(container, 'relative')) { - this.updateCellHeader(container.querySelector('.colHeader'), col, this.instance.getColHeader); - } else { - (0, _element.empty)(TH); - this.appendColHeader(col, TH); - } - } else { - var div = document.createElement('div'); - var span = document.createElement('span'); - - div.className = 'relative'; - span.className = 'colHeader'; - this.updateCellHeader(span, col, this.instance.getColHeader); - - div.appendChild(span); - TH.appendChild(div); - } - - this.instance.runHooks('afterGetColHeader', col, TH); -}; - -/** - * Update header cell content - * - * @since 0.15.0-beta4 - * @param {HTMLElement} element Element to update - * @param {Number} index Row index or column index - * @param {Function} content Function which should be returns content for this cell - */ -TableView.prototype.updateCellHeader = function (element, index, content) { - var renderedIndex = index; - var parentOverlay = this.wt.wtOverlays.getParentOverlay(element) || this.wt; - - // prevent wrong calculations from SampleGenerator - if (element.parentNode) { - if ((0, _element.hasClass)(element, 'colHeader')) { - renderedIndex = parentOverlay.wtTable.columnFilter.sourceToRendered(index); - } else if ((0, _element.hasClass)(element, 'rowHeader')) { - renderedIndex = parentOverlay.wtTable.rowFilter.sourceToRendered(index); - } - } - - if (renderedIndex > -1) { - (0, _element.fastInnerHTML)(element, content(index)); - } else { - // workaround for https://github.com/handsontable/handsontable/issues/1946 - (0, _element.fastInnerText)(element, String.fromCharCode(160)); - (0, _element.addClass)(element, 'cornerHeader'); - } -}; - -/** - * Given a element's left position relative to the viewport, returns maximum element width until the right - * edge of the viewport (before scrollbar) - * - * @param {Number} leftOffset - * @return {Number} - */ -TableView.prototype.maximumVisibleElementWidth = function (leftOffset) { - var workspaceWidth = this.wt.wtViewport.getWorkspaceWidth(); - var maxWidth = workspaceWidth - leftOffset; - return maxWidth > 0 ? maxWidth : 0; -}; - -/** - * Given a element's top position relative to the viewport, returns maximum element height until the bottom - * edge of the viewport (before scrollbar) - * - * @param {Number} topOffset - * @return {Number} - */ -TableView.prototype.maximumVisibleElementHeight = function (topOffset) { - var workspaceHeight = this.wt.wtViewport.getWorkspaceHeight(); - var maxHeight = workspaceHeight - topOffset; - return maxHeight > 0 ? maxHeight : 0; -}; - -TableView.prototype.mainViewIsActive = function () { - return this.wt === this.activeWt; -}; - -TableView.prototype.destroy = function () { - this.wt.destroy(); - this.eventManager.destroy(); -}; - -exports.default = TableView; - -/***/ }), -/* 245 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _object = __webpack_require__(1); - -var _array = __webpack_require__(2); - -var _number = __webpack_require__(6); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class DataSource - * @private - */ -var DataSource = function () { - function DataSource(hotInstance) { - var dataSource = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - - _classCallCheck(this, DataSource); - - /** - * Instance of Handsontable. - * - * @type {Handsontable} - */ - this.hot = hotInstance; - /** - * Data source - * - * @type {Array} - */ - this.data = dataSource; - /** - * Type of data source. - * - * @type {String} - * @default 'array' - */ - this.dataType = 'array'; - - this.colToProp = function () {}; - this.propToCol = function () {}; - } - - /** - * Get all data. - * - * @param {Boolean} [toArray=false] If `true` return source data as an array of arrays even when source data was provided - * in another format. - * @returns {Array} - */ - - - _createClass(DataSource, [{ - key: 'getData', - value: function getData() { - var toArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - var result = this.data; - - if (toArray) { - result = this.getByRange({ row: 0, col: 0 }, { row: Math.max(this.countRows() - 1, 0), col: Math.max(this.countColumns() - 1, 0) }, true); - } - - return result; - } - - /** - * Set new data source. - * - * @param data {Array} - */ - - }, { - key: 'setData', - value: function setData(data) { - this.data = data; - } - - /** - * Returns array of column values from the data source. `column` is the index of the row in the data source. - * - * @param {Number} column Visual column index. - * @returns {Array} - */ - - }, { - key: 'getAtColumn', - value: function getAtColumn(column) { - var _this = this; - - var result = []; - - (0, _array.arrayEach)(this.data, function (row) { - var property = _this.colToProp(column); - - if (typeof property === 'string') { - row = (0, _object.getProperty)(row, property); - } else { - row = row[property]; - } - result.push(row); - }); - - return result; - } - - /** - * Returns a single row of the data (array or object, depending on what you have). `row` is the index of the row in the data source. - * - * @param {Number} row Physical row index. - * @returns {Array|Object} - */ - - }, { - key: 'getAtRow', - value: function getAtRow(row) { - return this.data[row]; - } - - /** - * Returns a single value from the data. - * - * @param {Number} row Physical row index. - * @param {Number} column Visual column index. - * @returns {*} - */ - - }, { - key: 'getAtCell', - value: function getAtCell(row, column) { - var result = null; - - var modifyRowData = this.hot.runHooks('modifyRowData', row); - - var dataRow = isNaN(modifyRowData) ? modifyRowData : this.data[row]; - - if (dataRow) { - var prop = this.colToProp(column); - - if (typeof prop === 'string') { - result = (0, _object.getProperty)(dataRow, prop); - } else if (typeof prop === 'function') { - result = prop(this.data.slice(row, row + 1)[0]); - } else { - result = dataRow[prop]; - } - } - - return result; - } - - /** - * Returns source data by passed range. - * - * @param {Object} start Object with physical `row` and `col` keys (or visual column index, if data type is an array of objects). - * @param {Object} end Object with physical `row` and `col` keys (or visual column index, if data type is an array of objects). - * @param {Boolean} [toArray=false] If `true` return source data as an array of arrays even when source data was provided - * in another format. - * @returns {Array} - */ - - }, { - key: 'getByRange', - value: function getByRange(start, end) { - var _this2 = this; - - var toArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var startRow = Math.min(start.row, end.row); - var startCol = Math.min(start.col, end.col); - var endRow = Math.max(start.row, end.row); - var endCol = Math.max(start.col, end.col); - var result = []; - - (0, _number.rangeEach)(startRow, endRow, function (currentRow) { - var row = _this2.getAtRow(currentRow); - var newRow = void 0; - - if (_this2.dataType === 'array') { - newRow = row.slice(startCol, endCol + 1); - } else if (_this2.dataType === 'object') { - newRow = toArray ? [] : {}; - - (0, _number.rangeEach)(startCol, endCol, function (column) { - var prop = _this2.colToProp(column); - - if (toArray) { - newRow.push(row[prop]); - } else { - newRow[prop] = row[prop]; - } - }); - } - - result.push(newRow); - }); - - return result; - } - - /** - * Count number of rows. - * - * @returns {Number} - */ - - }, { - key: 'countRows', - value: function countRows() { - return Array.isArray(this.data) ? this.data.length : 0; - } - - /** - * Count number of columns. - * - * @returns {Number} - */ - - }, { - key: 'countColumns', - value: function countColumns() { - var result = 0; - - if (Array.isArray(this.data)) { - if (this.dataType === 'array') { - result = this.data[0].length; - } else if (this.dataType === 'object') { - result = Object.keys(this.data[0]).length; - } - } - - return result; - } - - /** - * Destroy instance. - */ - - }, { - key: 'destroy', - value: function destroy() { - this.data = null; - this.hot = null; - } - }]); - - return DataSource; -}(); - -exports.default = DataSource; - -/***/ }), -/* 246 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = jQueryWrapper; -function jQueryWrapper(Handsontable) { - var jQuery = typeof window === 'undefined' ? false : window.jQuery; - - if (!jQuery) { - return; - } - - jQuery.fn.handsontable = function (action) { - var $this = this.first(); // Use only first element from list - var instance = $this.data('handsontable'); - - // Init case - if (typeof action !== 'string') { - var userSettings = action || {}; - - if (instance) { - instance.updateSettings(userSettings); - } else { - instance = new Handsontable.Core($this[0], userSettings); - $this.data('handsontable', instance); - instance.init(); - } - - return $this; - } - - // Action case - var args = []; - var output = void 0; - - if (arguments.length > 1) { - for (var i = 1, ilen = arguments.length; i < ilen; i++) { - args.push(arguments[i]); - } - } - - if (instance) { - if (typeof instance[action] !== 'undefined') { - output = instance[action].apply(instance, args); - - if (action === 'destroy') { - $this.removeData(); - } - } else { - throw new Error('Handsontable do not provide action: ' + action); - } - } - - return output; - }; -}; - -/***/ }), -/* 247 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.Base = exports.UndoRedo = exports.TouchScroll = exports.Search = exports.PersistentState = exports.ObserveChanges = exports.MultipleSelectionHandles = exports.MergeCells = exports.ManualRowResize = exports.ManualRowMove = exports.ManualColumnResize = exports.ManualColumnMove = exports.ManualColumnFreeze = exports.DragToScroll = exports.CustomBorders = exports.CopyPaste = exports.ContextMenu = exports.Comments = exports.ColumnSorting = exports.AutoRowSize = exports.AutoFill = exports.AutoColumnSize = undefined; - -var _autoColumnSize = __webpack_require__(248); - -var _autoColumnSize2 = _interopRequireDefault(_autoColumnSize); - -var _autofill = __webpack_require__(249); - -var _autofill2 = _interopRequireDefault(_autofill); - -var _autoRowSize = __webpack_require__(251); - -var _autoRowSize2 = _interopRequireDefault(_autoRowSize); - -var _columnSorting = __webpack_require__(252); - -var _columnSorting2 = _interopRequireDefault(_columnSorting); - -var _comments = __webpack_require__(255); - -var _comments2 = _interopRequireDefault(_comments); - -var _contextMenu = __webpack_require__(259); - -var _contextMenu2 = _interopRequireDefault(_contextMenu); - -var _copyPaste = __webpack_require__(276); - -var _copyPaste2 = _interopRequireDefault(_copyPaste); - -var _customBorders = __webpack_require__(281); - -var _customBorders2 = _interopRequireDefault(_customBorders); - -var _dragToScroll = __webpack_require__(282); - -var _dragToScroll2 = _interopRequireDefault(_dragToScroll); - -var _manualColumnFreeze = __webpack_require__(283); - -var _manualColumnFreeze2 = _interopRequireDefault(_manualColumnFreeze); - -var _manualColumnMove = __webpack_require__(287); - -var _manualColumnMove2 = _interopRequireDefault(_manualColumnMove); - -var _manualColumnResize = __webpack_require__(292); - -var _manualColumnResize2 = _interopRequireDefault(_manualColumnResize); - -var _manualRowMove = __webpack_require__(293); - -var _manualRowMove2 = _interopRequireDefault(_manualRowMove); - -var _manualRowResize = __webpack_require__(298); - -var _manualRowResize2 = _interopRequireDefault(_manualRowResize); - -var _mergeCells = __webpack_require__(299); - -var _mergeCells2 = _interopRequireDefault(_mergeCells); - -var _multipleSelectionHandles = __webpack_require__(300); - -var _multipleSelectionHandles2 = _interopRequireDefault(_multipleSelectionHandles); - -var _observeChanges = __webpack_require__(301); - -var _observeChanges2 = _interopRequireDefault(_observeChanges); - -var _persistentState = __webpack_require__(304); - -var _persistentState2 = _interopRequireDefault(_persistentState); - -var _search = __webpack_require__(305); - -var _search2 = _interopRequireDefault(_search); - -var _touchScroll = __webpack_require__(306); - -var _touchScroll2 = _interopRequireDefault(_touchScroll); - -var _undoRedo = __webpack_require__(307); - -var _undoRedo2 = _interopRequireDefault(_undoRedo); - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.AutoColumnSize = _autoColumnSize2.default; -exports.AutoFill = _autofill2.default; -exports.AutoRowSize = _autoRowSize2.default; -exports.ColumnSorting = _columnSorting2.default; -exports.Comments = _comments2.default; -exports.ContextMenu = _contextMenu2.default; -exports.CopyPaste = _copyPaste2.default; -exports.CustomBorders = _customBorders2.default; -exports.DragToScroll = _dragToScroll2.default; -exports.ManualColumnFreeze = _manualColumnFreeze2.default; -exports.ManualColumnMove = _manualColumnMove2.default; -exports.ManualColumnResize = _manualColumnResize2.default; -exports.ManualRowMove = _manualRowMove2.default; -exports.ManualRowResize = _manualRowResize2.default; -exports.MergeCells = _mergeCells2.default; -exports.MultipleSelectionHandles = _multipleSelectionHandles2.default; -exports.ObserveChanges = _observeChanges2.default; -exports.PersistentState = _persistentState2.default; -exports.Search = _search2.default; -exports.TouchScroll = _touchScroll2.default; -exports.UndoRedo = _undoRedo2.default; -exports.Base = _base2.default; - -/***/ }), -/* 248 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _array = __webpack_require__(2); - -var _feature = __webpack_require__(34); - -var _element = __webpack_require__(0); - -var _ghostTable = __webpack_require__(85); - -var _ghostTable2 = _interopRequireDefault(_ghostTable); - -var _object = __webpack_require__(1); - -var _number = __webpack_require__(6); - -var _plugins = __webpack_require__(5); - -var _samplesGenerator = __webpack_require__(175); - -var _samplesGenerator2 = _interopRequireDefault(_samplesGenerator); - -var _string = __webpack_require__(32); - -var _src = __webpack_require__(12); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var privatePool = new WeakMap(); - -/** - * @plugin AutoColumnSize - * - * @description - * This plugin allows to set column widths based on their widest cells. - * - * By default, the plugin is declared as `undefined`, which makes it enabled (same as if it was declared as `true`). - * Enabling this plugin may decrease the overall table performance, as it needs to calculate the widths of all cells to - * resize the columns accordingly. - * If you experience problems with the performance, try turning this feature off and declaring the column widths manually. - * - * Column width calculations are divided into sync and async part. Each of this parts has their own advantages and - * disadvantages. Synchronous calculations are faster but they block the browser UI, while the slower asynchronous operations don't - * block the browser UI. - * - * To configure the sync/async distribution, you can pass an absolute value (number of columns) or a percentage value to a config object: - * ```js - * ... - * // as a number (300 columns in sync, rest async) - * autoColumnSize: {syncLimit: 300}, - * ... - * - * ... - * // as a string (percent) - * autoColumnSize: {syncLimit: '40%'}, - * ... - * ``` - * - * To configure this plugin see {@link Options#autoColumnSize}. - * - * @example - * ```js - * ... - * var hot = new Handsontable(document.getElementById('example'), { - * date: getData(), - * autoColumnSize: true - * }); - * // Access to plugin instance: - * var plugin = hot.getPlugin('autoColumnSize'); - * - * plugin.getColumnWidth(4); - * - * if (plugin.isEnabled()) { - * // code... - * } - * ... - * ``` - */ - -var AutoColumnSize = function (_BasePlugin) { - _inherits(AutoColumnSize, _BasePlugin); - - _createClass(AutoColumnSize, null, [{ - key: 'CALCULATION_STEP', - get: function get() { - return 50; - } - }, { - key: 'SYNC_CALCULATION_LIMIT', - get: function get() { - return 50; - } - }]); - - function AutoColumnSize(hotInstance) { - _classCallCheck(this, AutoColumnSize); - - var _this = _possibleConstructorReturn(this, (AutoColumnSize.__proto__ || Object.getPrototypeOf(AutoColumnSize)).call(this, hotInstance)); - - privatePool.set(_this, { - /** - * Cached column header names. It is used to diff current column headers with previous state and detect which - * columns width should be updated. - * - * @private - * @type {Array} - */ - cachedColumnHeaders: [] - }); - /** - * Cached columns widths. - * - * @type {Array} - */ - _this.widths = []; - /** - * Instance of {@link GhostTable} for rows and columns size calculations. - * - * @type {GhostTable} - */ - _this.ghostTable = new _ghostTable2.default(_this.hot); - /** - * Instance of {@link SamplesGenerator} for generating samples necessary for columns width calculations. - * - * @type {SamplesGenerator} - */ - _this.samplesGenerator = new _samplesGenerator2.default(function (row, col) { - return _this.hot.getDataAtCell(row, col); - }); - /** - * `true` only if the first calculation was performed - * - * @type {Boolean} - */ - _this.firstCalculation = true; - /** - * `true` if the size calculation is in progress. - * - * @type {Boolean} - */ - _this.inProgress = false; - - // moved to constructor to allow auto-sizing the columns when the plugin is disabled - _this.addHook('beforeColumnResize', function (col, size, isDblClick) { - return _this.onBeforeColumnResize(col, size, isDblClick); - }); - return _this; - } - - /** - * Check if the plugin is enabled in the handsontable settings. - * - * @returns {Boolean} - */ - - - _createClass(AutoColumnSize, [{ - key: 'isEnabled', - value: function isEnabled() { - return this.hot.getSettings().autoColumnSize !== false && !this.hot.getSettings().colWidths; - } - - /** - * Enable plugin for this Handsontable instance. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this2 = this; - - if (this.enabled) { - return; - } - - var setting = this.hot.getSettings().autoColumnSize; - - if (setting && setting.useHeaders != null) { - this.ghostTable.setSetting('useHeaders', setting.useHeaders); - } - - this.addHook('afterLoadData', function () { - return _this2.onAfterLoadData(); - }); - this.addHook('beforeChange', function (changes) { - return _this2.onBeforeChange(changes); - }); - - this.addHook('beforeRender', function (force) { - return _this2.onBeforeRender(force); - }); - this.addHook('modifyColWidth', function (width, col) { - return _this2.getColumnWidth(col, width); - }); - this.addHook('afterInit', function () { - return _this2.onAfterInit(); - }); - _get(AutoColumnSize.prototype.__proto__ || Object.getPrototypeOf(AutoColumnSize.prototype), 'enablePlugin', this).call(this); - } - - /** - * Update plugin state. - */ - - }, { - key: 'updatePlugin', - value: function updatePlugin() { - var changedColumns = this.findColumnsWhereHeaderWasChanged(); - - if (changedColumns.length) { - this.clearCache(changedColumns); - } - _get(AutoColumnSize.prototype.__proto__ || Object.getPrototypeOf(AutoColumnSize.prototype), 'updatePlugin', this).call(this); - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - _get(AutoColumnSize.prototype.__proto__ || Object.getPrototypeOf(AutoColumnSize.prototype), 'disablePlugin', this).call(this); - } - - /** - * Calculate a columns width. - * - * @param {Number|Object} colRange Column range object. - * @param {Number|Object} rowRange Row range object. - * @param {Boolean} [force=false] If `true` force calculate width even when value was cached earlier. - */ - - }, { - key: 'calculateColumnsWidth', - value: function calculateColumnsWidth() { - var colRange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { from: 0, to: this.hot.countCols() - 1 }; - - var _this3 = this; - - var rowRange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { from: 0, to: this.hot.countRows() - 1 }; - var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (typeof colRange === 'number') { - colRange = { from: colRange, to: colRange }; - } - if (typeof rowRange === 'number') { - rowRange = { from: rowRange, to: rowRange }; - } - - (0, _number.rangeEach)(colRange.from, colRange.to, function (col) { - if (force || _this3.widths[col] === void 0 && !_this3.hot._getColWidthFromSettings(col)) { - var samples = _this3.samplesGenerator.generateColumnSamples(col, rowRange); - - samples.forEach(function (sample, col) { - return _this3.ghostTable.addColumn(col, sample); - }); - } - }); - - if (this.ghostTable.columns.length) { - this.ghostTable.getWidths(function (col, width) { - _this3.widths[col] = width; - }); - this.ghostTable.clean(); - } - } - - /** - * Calculate all columns width. - * - * @param {Object|Number} rowRange Row range object. - */ - - }, { - key: 'calculateAllColumnsWidth', - value: function calculateAllColumnsWidth() { - var _this4 = this; - - var rowRange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { from: 0, to: this.hot.countRows() - 1 }; - - var current = 0; - var length = this.hot.countCols() - 1; - var timer = null; - - this.inProgress = true; - - var loop = function loop() { - // When hot was destroyed after calculating finished cancel frame - if (!_this4.hot) { - (0, _feature.cancelAnimationFrame)(timer); - _this4.inProgress = false; - - return; - } - - _this4.calculateColumnsWidth({ - from: current, - to: Math.min(current + AutoColumnSize.CALCULATION_STEP, length) - }, rowRange); - - current = current + AutoColumnSize.CALCULATION_STEP + 1; - - if (current < length) { - timer = (0, _feature.requestAnimationFrame)(loop); - } else { - (0, _feature.cancelAnimationFrame)(timer); - _this4.inProgress = false; - - // @TODO Should call once per render cycle, currently fired separately in different plugins - _this4.hot.view.wt.wtOverlays.adjustElementsSize(true); - // tmp - if (_this4.hot.view.wt.wtOverlays.leftOverlay.needFullRender) { - _this4.hot.view.wt.wtOverlays.leftOverlay.clone.draw(); - } - } - }; - // sync - if (this.firstCalculation && this.getSyncCalculationLimit()) { - this.calculateColumnsWidth({ from: 0, to: this.getSyncCalculationLimit() }, rowRange); - this.firstCalculation = false; - current = this.getSyncCalculationLimit() + 1; - } - // async - if (current < length) { - loop(); - } else { - this.inProgress = false; - } - } - - /** - * Set the sampling options. - * - * @private - */ - - }, { - key: 'setSamplingOptions', - value: function setSamplingOptions() { - var setting = this.hot.getSettings().autoColumnSize; - var samplingRatio = setting && (0, _object.hasOwnProperty)(setting, 'samplingRatio') ? this.hot.getSettings().autoColumnSize.samplingRatio : void 0; - var allowSampleDuplicates = setting && (0, _object.hasOwnProperty)(setting, 'allowSampleDuplicates') ? this.hot.getSettings().autoColumnSize.allowSampleDuplicates : void 0; - - if (samplingRatio && !isNaN(samplingRatio)) { - this.samplesGenerator.setSampleCount(parseInt(samplingRatio, 10)); - } - - if (allowSampleDuplicates) { - this.samplesGenerator.setAllowDuplicates(allowSampleDuplicates); - } - } - - /** - * Recalculate all columns width (overwrite cache values). - */ - - }, { - key: 'recalculateAllColumnsWidth', - value: function recalculateAllColumnsWidth() { - if (this.hot.view && (0, _element.isVisible)(this.hot.view.wt.wtTable.TABLE)) { - this.clearCache(); - this.calculateAllColumnsWidth(); - } - } - - /** - * Get value which tells how many columns should be calculated synchronously. Rest of the columns will be calculated asynchronously. - * - * @returns {Number} - */ - - }, { - key: 'getSyncCalculationLimit', - value: function getSyncCalculationLimit() { - /* eslint-disable no-bitwise */ - var limit = AutoColumnSize.SYNC_CALCULATION_LIMIT; - var colsLimit = this.hot.countCols() - 1; - - if ((0, _object.isObject)(this.hot.getSettings().autoColumnSize)) { - limit = this.hot.getSettings().autoColumnSize.syncLimit; - - if ((0, _string.isPercentValue)(limit)) { - limit = (0, _number.valueAccordingPercent)(colsLimit, limit); - } else { - // Force to Number - limit >>= 0; - } - } - - return Math.min(limit, colsLimit); - } - - /** - * Get the calculated column width. - * - * @param {Number} col Column index. - * @param {Number} [defaultWidth] Default column width. It will be picked up if no calculated width found. - * @param {Boolean} [keepMinimum=true] If `true` then returned value won't be smaller then 50 (default column width). - * @returns {Number} - */ - - }, { - key: 'getColumnWidth', - value: function getColumnWidth(col) { - var defaultWidth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : void 0; - var keepMinimum = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; - - var width = defaultWidth; - - if (width === void 0) { - width = this.widths[col]; - - if (keepMinimum && typeof width === 'number') { - width = Math.max(width, _src.ViewportColumnsCalculator.DEFAULT_WIDTH); - } - } - - return width; - } - - /** - * Get the first visible column. - * - * @returns {Number} Returns column index or -1 if table is not rendered. - */ - - }, { - key: 'getFirstVisibleColumn', - value: function getFirstVisibleColumn() { - var wot = this.hot.view.wt; - - if (wot.wtViewport.columnsVisibleCalculator) { - return wot.wtTable.getFirstVisibleColumn(); - } - if (wot.wtViewport.columnsRenderCalculator) { - return wot.wtTable.getFirstRenderedColumn(); - } - - return -1; - } - - /** - * Get the last visible column. - * - * @returns {Number} Returns column index or -1 if table is not rendered. - */ - - }, { - key: 'getLastVisibleColumn', - value: function getLastVisibleColumn() { - var wot = this.hot.view.wt; - - if (wot.wtViewport.columnsVisibleCalculator) { - return wot.wtTable.getLastVisibleColumn(); - } - if (wot.wtViewport.columnsRenderCalculator) { - return wot.wtTable.getLastRenderedColumn(); - } - - return -1; - } - - /** - * Collects all columns which titles has been changed in comparison to the previous state. - * - * @returns {Array} It returns an array of physical column indexes. - */ - - }, { - key: 'findColumnsWhereHeaderWasChanged', - value: function findColumnsWhereHeaderWasChanged() { - var columnHeaders = this.hot.getColHeader(); - - var _privatePool$get = privatePool.get(this), - cachedColumnHeaders = _privatePool$get.cachedColumnHeaders; - - var changedColumns = (0, _array.arrayReduce)(columnHeaders, function (acc, columnTitle, physicalColumn) { - var cachedColumnsLength = cachedColumnHeaders.length; - - if (cachedColumnsLength - 1 < physicalColumn || cachedColumnHeaders[physicalColumn] !== columnTitle) { - acc.push(physicalColumn); - } - if (cachedColumnsLength - 1 < physicalColumn) { - cachedColumnHeaders.push(columnTitle); - } else { - cachedColumnHeaders[physicalColumn] = columnTitle; - } - - return acc; - }, []); - - return changedColumns; - } - - /** - * Clear cache of calculated column widths. If you want to clear only selected columns pass an array with their indexes. - * Otherwise whole cache will be cleared. - * - * @param {Array} [columns=[]] List of column indexes (physical indexes) to clear. - */ - - }, { - key: 'clearCache', - value: function clearCache() { - var _this5 = this; - - var columns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - - if (columns.length) { - (0, _array.arrayEach)(columns, function (physicalIndex) { - _this5.widths[physicalIndex] = void 0; - }); - } else { - this.widths.length = 0; - } - } - - /** - * Check if all widths were calculated. If not then return `true` (need recalculate). - * - * @returns {Boolean} - */ - - }, { - key: 'isNeedRecalculate', - value: function isNeedRecalculate() { - return !!(0, _array.arrayFilter)(this.widths, function (item) { - return item === void 0; - }).length; - } - - /** - * On before render listener. - * - * @private - */ - - }, { - key: 'onBeforeRender', - value: function onBeforeRender() { - var force = this.hot.renderCall; - var rowsCount = this.hot.countRows(); - - // Keep last column widths unchanged for situation when all rows was deleted or trimmed (pro #6) - if (!rowsCount) { - return; - } - - this.calculateColumnsWidth({ from: this.getFirstVisibleColumn(), to: this.getLastVisibleColumn() }, void 0, force); - - if (this.isNeedRecalculate() && !this.inProgress) { - this.calculateAllColumnsWidth(); - } - } - - /** - * On after load data listener. - * - * @private - */ - - }, { - key: 'onAfterLoadData', - value: function onAfterLoadData() { - var _this6 = this; - - if (this.hot.view) { - this.recalculateAllColumnsWidth(); - } else { - // first load - initialization - setTimeout(function () { - if (_this6.hot) { - _this6.recalculateAllColumnsWidth(); - } - }, 0); - } - } - - /** - * On before change listener. - * - * @private - * @param {Array} changes - */ - - }, { - key: 'onBeforeChange', - value: function onBeforeChange(changes) { - var _this7 = this; - - var changedColumns = (0, _array.arrayMap)(changes, function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - row = _ref2[0], - column = _ref2[1]; - - return _this7.hot.propToCol(column); - }); - - this.clearCache(changedColumns); - } - - /** - * On before column resize listener. - * - * @private - * @param {Number} col - * @param {Number} size - * @param {Boolean} isDblClick - * @returns {Number} - */ - - }, { - key: 'onBeforeColumnResize', - value: function onBeforeColumnResize(col, size, isDblClick) { - if (isDblClick) { - this.calculateColumnsWidth(col, void 0, true); - size = this.getColumnWidth(col, void 0, false); - } - - return size; - } - - /** - * On after Handsontable init fill plugin with all necessary values. - * - * @private - */ - - }, { - key: 'onAfterInit', - value: function onAfterInit() { - privatePool.get(this).cachedColumnHeaders = this.hot.getColHeader(); - } - - /** - * Destroy plugin instance. - */ - - }, { - key: 'destroy', - value: function destroy() { - this.ghostTable.clean(); - _get(AutoColumnSize.prototype.__proto__ || Object.getPrototypeOf(AutoColumnSize.prototype), 'destroy', this).call(this); - } - }]); - - return AutoColumnSize; -}(_base2.default); - -(0, _plugins.registerPlugin)('autoColumnSize', AutoColumnSize); - -exports.default = AutoColumnSize; - -/***/ }), -/* 249 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _element = __webpack_require__(0); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _plugins = __webpack_require__(5); - -var _src = __webpack_require__(12); - -var _utils = __webpack_require__(250); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -_pluginHooks2.default.getSingleton().register('modifyAutofillRange'); -_pluginHooks2.default.getSingleton().register('beforeAutofill'); - -var INSERT_ROW_ALTER_ACTION_NAME = 'insert_row'; -var INTERVAL_FOR_ADDING_ROW = 200; - -/** - * This plugin provides "drag-down" and "copy-down" functionalities, both operated - * using the small square in the right bottom of the cell selection. - * - * "Drag-down" expands the value of the selected cells to the neighbouring - * cells when you drag the small square in the corner. - * - * "Copy-down" copies the value of the selection to all empty cells - * below when you double click the small square. - * - * @class Autofill - * @plugin Autofill - */ - -var Autofill = function (_BasePlugin) { - _inherits(Autofill, _BasePlugin); - - function Autofill(hotInstance) { - _classCallCheck(this, Autofill); - - /** - * Event manager - * - * @type {EventManager} - */ - var _this = _possibleConstructorReturn(this, (Autofill.__proto__ || Object.getPrototypeOf(Autofill)).call(this, hotInstance)); - - _this.eventManager = new _eventManager2.default(_this); - /** - * Specifies if adding new row started. - * - * @type {Boolean} - */ - _this.addingStarted = false; - /** - * Specifies if there was mouse down on the cell corner. - * - * @type {Boolean} - */ - _this.mouseDownOnCellCorner = false; - /** - * Specifies if mouse was dragged outside Handsontable. - * - * @type {Boolean} - */ - _this.mouseDragOutside = false; - /** - * Specifies how many cell levels were dragged using the handle. - * - * @type {Boolean} - */ - _this.handleDraggedCells = 0; - /** - * Specifies allowed directions of drag. - * - * @type {Array} - */ - _this.directions = []; - /** - * Specifies if can insert new rows if needed. - * - * @type {Boolean} - */ - _this.autoInsertRow = false; - return _this; - } - - /** - * Check if the plugin is enabled in the Handsontable settings. - * - * @returns {Boolean} - */ - - - _createClass(Autofill, [{ - key: 'isEnabled', - value: function isEnabled() { - return this.hot.getSettings().fillHandle; - } - - /** - * Enable plugin for this Handsontable instance. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this2 = this; - - if (this.enabled) { - return; - } - - this.mapSettings(); - this.registerEvents(); - - this.addHook('afterOnCellCornerMouseDown', function (event) { - return _this2.onAfterCellCornerMouseDown(event); - }); - this.addHook('afterOnCellCornerDblClick', function (event) { - return _this2.onCellCornerDblClick(event); - }); - this.addHook('beforeOnCellMouseOver', function (event, coords, TD) { - return _this2.onBeforeCellMouseOver(coords); - }); - - _get(Autofill.prototype.__proto__ || Object.getPrototypeOf(Autofill.prototype), 'enablePlugin', this).call(this); - } - - /** - * Update plugin for this Handsontable instance. - */ - - }, { - key: 'updatePlugin', - value: function updatePlugin() { - this.disablePlugin(); - this.enablePlugin(); - _get(Autofill.prototype.__proto__ || Object.getPrototypeOf(Autofill.prototype), 'updatePlugin', this).call(this); - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - this.clearMappedSettings(); - _get(Autofill.prototype.__proto__ || Object.getPrototypeOf(Autofill.prototype), 'disablePlugin', this).call(this); - } - - /** - * Get selection data - * - * @private - * @returns {Array} Array with the data. - */ - - }, { - key: 'getSelectionData', - value: function getSelectionData() { - var selRange = { - from: this.hot.getSelectedRange().from, - to: this.hot.getSelectedRange().to - }; - - return this.hot.getData(selRange.from.row, selRange.from.col, selRange.to.row, selRange.to.col); - } - - /** - * Try to apply fill values to the area in fill border, omitting the selection border. - * - * @private - * @returns {Boolean} reports if fill was applied. - */ - - }, { - key: 'fillIn', - value: function fillIn() { - if (this.hot.view.wt.selections.fill.isEmpty()) { - return false; - } - - var cornersOfSelectionAndDragAreas = this.hot.view.wt.selections.fill.getCorners(); - - this.resetSelectionOfDraggedArea(); - - var cornersOfSelectedCells = this.getCornersOfSelectedCells(); - - var _getDragDirectionAndR = (0, _utils.getDragDirectionAndRange)(cornersOfSelectedCells, cornersOfSelectionAndDragAreas), - directionOfDrag = _getDragDirectionAndR.directionOfDrag, - startOfDragCoords = _getDragDirectionAndR.startOfDragCoords, - endOfDragCoords = _getDragDirectionAndR.endOfDragCoords; - - this.hot.runHooks('modifyAutofillRange', cornersOfSelectedCells, cornersOfSelectionAndDragAreas); - - if (startOfDragCoords && startOfDragCoords.row > -1 && startOfDragCoords.col > -1) { - var selectionData = this.getSelectionData(); - var deltas = (0, _utils.getDeltas)(startOfDragCoords, endOfDragCoords, selectionData, directionOfDrag); - var fillData = selectionData; - - this.hot.runHooks('beforeAutofill', startOfDragCoords, endOfDragCoords, selectionData); - - if (['up', 'left'].indexOf(directionOfDrag) > -1) { - fillData = []; - - var dragLength = null; - var fillOffset = null; - - if (directionOfDrag === 'up') { - dragLength = endOfDragCoords.row - startOfDragCoords.row + 1; - fillOffset = dragLength % selectionData.length; - - for (var i = 0; i < dragLength; i++) { - fillData.push(selectionData[(i + (selectionData.length - fillOffset)) % selectionData.length]); - } - } else { - dragLength = endOfDragCoords.col - startOfDragCoords.col + 1; - fillOffset = dragLength % selectionData[0].length; - - for (var _i = 0; _i < selectionData.length; _i++) { - fillData.push([]); - for (var j = 0; j < dragLength; j++) { - fillData[_i].push(selectionData[_i][(j + (selectionData[_i].length - fillOffset)) % selectionData[_i].length]); - } - } - } - } - - this.hot.populateFromArray(startOfDragCoords.row, startOfDragCoords.col, fillData, endOfDragCoords.row, endOfDragCoords.col, this.pluginName + '.fill', null, directionOfDrag, deltas); - - this.setSelection(cornersOfSelectionAndDragAreas); - } else { - // reset to avoid some range bug - this.hot.selection.refreshBorders(); - } - - return true; - } - - /** - * Reduce the selection area if the handle was dragged outside of the table or on headers. - * - * @private - * @param {CellCoords} coords indexes of selection corners. - * @returns {CellCoords} - */ - - }, { - key: 'reduceSelectionAreaIfNeeded', - value: function reduceSelectionAreaIfNeeded(coords) { - if (coords.row < 0) { - coords.row = 0; - } - - if (coords.col < 0) { - coords.col = 0; - } - return coords; - } - - /** - * Get the coordinates of the drag & drop borders. - * - * @private - * @param {CellCoords} coordsOfSelection `CellCoords` coord object. - * @returns {Array} - */ - - }, { - key: 'getCoordsOfDragAndDropBorders', - value: function getCoordsOfDragAndDropBorders(coordsOfSelection) { - var topLeftCorner = this.hot.getSelectedRange().getTopLeftCorner(); - var bottomRightCorner = this.hot.getSelectedRange().getBottomRightCorner(); - var coords = void 0; - - if (this.directions.includes(_utils.DIRECTIONS.vertical) && (bottomRightCorner.row < coordsOfSelection.row || topLeftCorner.row > coordsOfSelection.row)) { - coords = new _src.CellCoords(coordsOfSelection.row, bottomRightCorner.col); - } else if (this.directions.includes(_utils.DIRECTIONS.horizontal)) { - coords = new _src.CellCoords(bottomRightCorner.row, coordsOfSelection.col); - } else { - // wrong direction - return; - } - - return this.reduceSelectionAreaIfNeeded(coords); - } - - /** - * Show the fill border. - * - * @private - * @param {CellCoords} coordsOfSelection `CellCoords` coord object. - */ - - }, { - key: 'showBorder', - value: function showBorder(coordsOfSelection) { - var coordsOfDragAndDropBorders = this.getCoordsOfDragAndDropBorders(coordsOfSelection); - - if (coordsOfDragAndDropBorders) { - this.redrawBorders(coordsOfDragAndDropBorders); - } - } - - /** - * Add new row - * - * @private - */ - - }, { - key: 'addRow', - value: function addRow() { - var _this3 = this; - - this.hot._registerTimeout(setTimeout(function () { - _this3.hot.alter(INSERT_ROW_ALTER_ACTION_NAME, void 0, 1, _this3.pluginName + '.fill'); - - _this3.addingStarted = false; - }, INTERVAL_FOR_ADDING_ROW)); - } - - /** - * Add new rows if they are needed to continue auto-filling values. - * - * @private - */ - - }, { - key: 'addNewRowIfNeeded', - value: function addNewRowIfNeeded() { - if (this.hot.view.wt.selections.fill.cellRange && this.addingStarted === false && this.autoInsertRow) { - var cornersOfSelectedCells = this.hot.getSelected(); - var cornersOfSelectedDragArea = this.hot.view.wt.selections.fill.getCorners(); - var nrOfTableRows = this.hot.countRows(); - - if (cornersOfSelectedCells[2] < nrOfTableRows - 1 && cornersOfSelectedDragArea[2] === nrOfTableRows - 1) { - this.addingStarted = true; - - this.addRow(); - } - } - } - - /** - * Get corners of selected cells. - * - * @private - * @returns {Array} - */ - - }, { - key: 'getCornersOfSelectedCells', - value: function getCornersOfSelectedCells() { - if (this.hot.selection.isMultiple()) { - return this.hot.view.wt.selections.area.getCorners(); - } - return this.hot.view.wt.selections.current.getCorners(); - } - - /** - * Get index of last adjacent filled in row - * - * @private - * @param {Array} cornersOfSelectedCells indexes of selection corners. - * @returns {Number} gives number greater than or equal to zero when selection adjacent can be applied. - * or -1 when selection adjacent can't be applied - */ - - }, { - key: 'getIndexOfLastAdjacentFilledInRow', - value: function getIndexOfLastAdjacentFilledInRow(cornersOfSelectedCells) { - var data = this.hot.getData(); - var nrOfTableRows = this.hot.countRows(); - var lastFilledInRowIndex = void 0; - - for (var rowIndex = cornersOfSelectedCells[2] + 1; rowIndex < nrOfTableRows; rowIndex++) { - for (var columnIndex = cornersOfSelectedCells[1]; columnIndex <= cornersOfSelectedCells[3]; columnIndex++) { - var dataInCell = data[rowIndex][columnIndex]; - - if (dataInCell) { - return -1; - } - } - - var dataInNextLeftCell = data[rowIndex][cornersOfSelectedCells[1] - 1]; - var dataInNextRightCell = data[rowIndex][cornersOfSelectedCells[3] + 1]; - - if (!!dataInNextLeftCell || !!dataInNextRightCell) { - lastFilledInRowIndex = rowIndex; - } - } - return lastFilledInRowIndex; - } - - /** - * Add a selection from the start area to the specific row index. - * - * @private - * @param {Array} selectStartArea selection area from which we start to create more comprehensive selection. - * @param {Number} rowIndex - */ - - }, { - key: 'addSelectionFromStartAreaToSpecificRowIndex', - value: function addSelectionFromStartAreaToSpecificRowIndex(selectStartArea, rowIndex) { - this.hot.view.wt.selections.fill.clear(); - this.hot.view.wt.selections.fill.add(new _src.CellCoords(selectStartArea[0], selectStartArea[1])); - this.hot.view.wt.selections.fill.add(new _src.CellCoords(rowIndex, selectStartArea[3])); - } - - /** - * Set selection based on passed corners. - * - * @private - * @param {Array} cornersOfArea - */ - - }, { - key: 'setSelection', - value: function setSelection(cornersOfArea) { - this.hot.selection.setRangeStart(new _src.CellCoords(cornersOfArea[0], cornersOfArea[1])); - this.hot.selection.setRangeEnd(new _src.CellCoords(cornersOfArea[2], cornersOfArea[3])); - } - - /** - * Try to select cells down to the last row in the left column and then returns if selection was applied. - * - * @private - * @returns {Boolean} - */ - - }, { - key: 'selectAdjacent', - value: function selectAdjacent() { - var cornersOfSelectedCells = this.getCornersOfSelectedCells(); - var lastFilledInRowIndex = this.getIndexOfLastAdjacentFilledInRow(cornersOfSelectedCells); - - if (lastFilledInRowIndex === -1) { - return false; - } - this.addSelectionFromStartAreaToSpecificRowIndex(cornersOfSelectedCells, lastFilledInRowIndex); - - return true; - } - - /** - * Reset selection of dragged area. - * - * @private - */ - - }, { - key: 'resetSelectionOfDraggedArea', - value: function resetSelectionOfDraggedArea() { - this.handleDraggedCells = 0; - - this.hot.view.wt.selections.fill.clear(); - } - - /** - * Redraw borders. - * - * @private - * @param {CellCoords} coords `CellCoords` coord object. - */ - - }, { - key: 'redrawBorders', - value: function redrawBorders(coords) { - this.hot.view.wt.selections.fill.clear(); - this.hot.view.wt.selections.fill.add(this.hot.getSelectedRange().from); - this.hot.view.wt.selections.fill.add(this.hot.getSelectedRange().to); - this.hot.view.wt.selections.fill.add(coords); - this.hot.view.render(); - } - - /** - * Get if mouse was dragged outside. - * - * @private - * @param {MouseEvent} event `mousemove` event properties. - * @returns {Boolean} - */ - - }, { - key: 'getIfMouseWasDraggedOutside', - value: function getIfMouseWasDraggedOutside(event) { - var tableBottom = (0, _element.offset)(this.hot.table).top - (window.pageYOffset || document.documentElement.scrollTop) + (0, _element.outerHeight)(this.hot.table); - var tableRight = (0, _element.offset)(this.hot.table).left - (window.pageXOffset || document.documentElement.scrollLeft) + (0, _element.outerWidth)(this.hot.table); - - return event.clientY > tableBottom && event.clientX <= tableRight; - } - - /** - * Bind the events used by the plugin. - * - * @private - */ - - }, { - key: 'registerEvents', - value: function registerEvents() { - var _this4 = this; - - this.eventManager.addEventListener(document.documentElement, 'mouseup', function () { - return _this4.onMouseUp(); - }); - this.eventManager.addEventListener(document.documentElement, 'mousemove', function (event) { - return _this4.onMouseMove(event); - }); - } - - /** - * On cell corner double click callback. - * - * @private - */ - - }, { - key: 'onCellCornerDblClick', - value: function onCellCornerDblClick() { - var selectionApplied = this.selectAdjacent(); - - if (selectionApplied) { - this.fillIn(); - } - } - - /** - * On after cell corner mouse down listener. - * - * @private - */ - - }, { - key: 'onAfterCellCornerMouseDown', - value: function onAfterCellCornerMouseDown() { - this.handleDraggedCells = 1; - this.mouseDownOnCellCorner = true; - } - - /** - * On before cell mouse over listener. - * - * @private - * @param {CellCoords} coords `CellCoords` coord object. - */ - - }, { - key: 'onBeforeCellMouseOver', - value: function onBeforeCellMouseOver(coords) { - if (this.mouseDownOnCellCorner && !this.hot.view.isMouseDown() && this.handleDraggedCells) { - this.handleDraggedCells++; - - this.showBorder(coords); - this.addNewRowIfNeeded(); - } - } - - /** - * On mouse up listener. - * - * @private - */ - - }, { - key: 'onMouseUp', - value: function onMouseUp() { - if (this.handleDraggedCells) { - if (this.handleDraggedCells > 1) { - this.fillIn(); - } - - this.handleDraggedCells = 0; - this.mouseDownOnCellCorner = false; - } - } - - /** - * On mouse move listener. - * - * @private - * @param {MouseEvent} event `mousemove` event properties. - */ - - }, { - key: 'onMouseMove', - value: function onMouseMove(event) { - var mouseWasDraggedOutside = this.getIfMouseWasDraggedOutside(event); - - if (this.addingStarted === false && this.handleDraggedCells > 0 && mouseWasDraggedOutside) { - this.mouseDragOutside = true; - this.addingStarted = true; - } else { - this.mouseDragOutside = false; - } - - if (this.mouseDragOutside && this.autoInsertRow) { - this.addRow(); - } - } - - /** - * Clear mapped settings. - * - * @private - */ - - }, { - key: 'clearMappedSettings', - value: function clearMappedSettings() { - this.directions.length = 0; - this.autoInsertRow = false; - } - - /** - * Map settings. - * - * @private - */ - - }, { - key: 'mapSettings', - value: function mapSettings() { - var mappedSettings = (0, _utils.getMappedFillHandleSetting)(this.hot.getSettings().fillHandle); - this.directions = mappedSettings.directions; - this.autoInsertRow = mappedSettings.autoInsertRow; - } - - /** - * Destroy plugin instance. - */ - - }, { - key: 'destroy', - value: function destroy() { - _get(Autofill.prototype.__proto__ || Object.getPrototypeOf(Autofill.prototype), 'destroy', this).call(this); - } - }]); - - return Autofill; -}(_base2.default); - -(0, _plugins.registerPlugin)('autofill', Autofill); - -exports.default = Autofill; - -/***/ }), -/* 250 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.DIRECTIONS = undefined; -exports.getDeltas = getDeltas; -exports.getDragDirectionAndRange = getDragDirectionAndRange; -exports.getMappedFillHandleSetting = getMappedFillHandleSetting; - -var _object = __webpack_require__(1); - -var _mixed = __webpack_require__(22); - -var _src = __webpack_require__(12); - -var DIRECTIONS = exports.DIRECTIONS = { - horizontal: 'horizontal', - vertical: 'vertical' -}; - -/** - * Get deltas array. - * - * @param {CellCoords} start - * @param {CellCoords} end - * @param {Array} data - * @param {String} direction - * @returns {Array} - */ -function getDeltas(start, end, data, direction) { - var rowsLength = data.length; - var columnsLength = data ? data[0].length : 0; - var deltas = []; - var diffRow = end.row - start.row; - var diffCol = end.col - start.col; - - if (['down', 'up'].indexOf(direction) !== -1) { - var arr = []; - - for (var col = 0; col <= diffCol; col++) { - var startValue = parseInt(data[0][col], 10); - var endValue = parseInt(data[rowsLength - 1][col], 10); - var delta = (direction === 'down' ? endValue - startValue : startValue - endValue) / (rowsLength - 1) || 0; - - arr.push(delta); - } - - deltas.push(arr); - } - - if (['right', 'left'].indexOf(direction) !== -1) { - for (var row = 0; row <= diffRow; row++) { - var _startValue = parseInt(data[row][0], 10); - var _endValue = parseInt(data[row][columnsLength - 1], 10); - var _delta = (direction === 'right' ? _endValue - _startValue : _startValue - _endValue) / (columnsLength - 1) || 0; - - deltas.push([_delta]); - } - } - - return deltas; -} - -/** - * Get direction between positions and cords of selections difference (drag area) - * - * @param {Array} startSelection - * @param {Array} endSelection - * @returns {{direction: String, start: CellCoords, end: CellCoords}} - */ -function getDragDirectionAndRange(startSelection, endSelection) { - var startOfDragCoords = void 0, - endOfDragCoords = void 0, - directionOfDrag = void 0; - - if (endSelection[0] === startSelection[0] && endSelection[1] < startSelection[1]) { - directionOfDrag = 'left'; - - startOfDragCoords = new _src.CellCoords(endSelection[0], endSelection[1]); - endOfDragCoords = new _src.CellCoords(endSelection[2], startSelection[1] - 1); - } else if (endSelection[0] === startSelection[0] && endSelection[3] > startSelection[3]) { - directionOfDrag = 'right'; - - startOfDragCoords = new _src.CellCoords(endSelection[0], startSelection[3] + 1); - endOfDragCoords = new _src.CellCoords(endSelection[2], endSelection[3]); - } else if (endSelection[0] < startSelection[0] && endSelection[1] === startSelection[1]) { - directionOfDrag = 'up'; - - startOfDragCoords = new _src.CellCoords(endSelection[0], endSelection[1]); - endOfDragCoords = new _src.CellCoords(startSelection[0] - 1, endSelection[3]); - } else if (endSelection[2] > startSelection[2] && endSelection[1] === startSelection[1]) { - directionOfDrag = 'down'; - - startOfDragCoords = new _src.CellCoords(startSelection[2] + 1, endSelection[1]); - endOfDragCoords = new _src.CellCoords(endSelection[2], endSelection[3]); - } - - return { - directionOfDrag: directionOfDrag, - startOfDragCoords: startOfDragCoords, - endOfDragCoords: endOfDragCoords - }; -} - -/** - * Get mapped FillHandle setting containing information about - * allowed FillHandle directions and if allowed is automatic insertion of rows on drag - * - * @param {Boolean|Object} fillHandle property of Handsontable settings - * @returns {{directions: Array, autoInsertRow: Boolean}} object allowing access to information - * about FillHandle in more useful way - */ -function getMappedFillHandleSetting(fillHandle) { - var mappedSettings = {}; - - if (fillHandle === true) { - mappedSettings.directions = Object.keys(DIRECTIONS); - mappedSettings.autoInsertRow = true; - } else if ((0, _object.isObject)(fillHandle)) { - if ((0, _mixed.isDefined)(fillHandle.autoInsertRow)) { - - // autoInsertRow for horizontal direction will be always false - - if (fillHandle.direction === DIRECTIONS.horizontal) { - mappedSettings.autoInsertRow = false; - } else { - mappedSettings.autoInsertRow = fillHandle.autoInsertRow; - } - } else { - mappedSettings.autoInsertRow = false; - } - - if ((0, _mixed.isDefined)(fillHandle.direction)) { - mappedSettings.directions = [fillHandle.direction]; - } else { - mappedSettings.directions = Object.keys(DIRECTIONS); - } - } else if (typeof fillHandle === 'string') { - mappedSettings.directions = [fillHandle]; - mappedSettings.autoInsertRow = true; - } else { - mappedSettings.directions = []; - mappedSettings.autoInsertRow = false; - } - - return mappedSettings; -} - -/***/ }), -/* 251 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _array = __webpack_require__(2); - -var _feature = __webpack_require__(34); - -var _element = __webpack_require__(0); - -var _ghostTable = __webpack_require__(85); - -var _ghostTable2 = _interopRequireDefault(_ghostTable); - -var _object = __webpack_require__(1); - -var _number = __webpack_require__(6); - -var _plugins = __webpack_require__(5); - -var _samplesGenerator = __webpack_require__(175); - -var _samplesGenerator2 = _interopRequireDefault(_samplesGenerator); - -var _string = __webpack_require__(32); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * @plugin AutoRowSize - * - * @description - * This plugin allows to set row heights based on their highest cells. - * - * By default, the plugin is declared as `undefined`, which makes it disabled (same as if it was declared as `false`). - * Enabling this plugin may decrease the overall table performance, as it needs to calculate the heights of all cells to - * resize the rows accordingly. - * If you experience problems with the performance, try turning this feature off and declaring the row heights manually. - * - * Row height calculations are divided into sync and async part. Each of this parts has their own advantages and - * disadvantages. Synchronous calculations are faster but they block the browser UI, while the slower asynchronous operations don't - * block the browser UI. - * - * To configure the sync/async distribution, you can pass an absolute value (number of columns) or a percentage value to a config object: - * ```js - * ... - * // as a number (300 columns in sync, rest async) - * autoRowSize: {syncLimit: 300}, - * ... - * - * ... - * // as a string (percent) - * autoRowSize: {syncLimit: '40%'}, - * ... - * ``` - * - * You can also use the `allowSampleDuplicates` option to allow sampling duplicate values when calculating the row height. Note, that this might have - * a negative impact on performance. - * - * To configure this plugin see {@link Options#autoRowSize}. - * - * @example - * - * ```js - * ... - * var hot = new Handsontable(document.getElementById('example'), { - * date: getData(), - * autoRowSize: true - * }); - * // Access to plugin instance: - * var plugin = hot.getPlugin('autoRowSize'); - * - * plugin.getRowHeight(4); - * - * if (plugin.isEnabled()) { - * // code... - * } - * ... - * ``` - */ -var AutoRowSize = function (_BasePlugin) { - _inherits(AutoRowSize, _BasePlugin); - - _createClass(AutoRowSize, null, [{ - key: 'CALCULATION_STEP', - get: function get() { - return 50; - } - }, { - key: 'SYNC_CALCULATION_LIMIT', - get: function get() { - return 500; - } - }]); - - function AutoRowSize(hotInstance) { - _classCallCheck(this, AutoRowSize); - - /** - * Cached rows heights. - * - * @type {Array} - */ - var _this = _possibleConstructorReturn(this, (AutoRowSize.__proto__ || Object.getPrototypeOf(AutoRowSize)).call(this, hotInstance)); - - _this.heights = []; - /** - * Instance of {@link GhostTable} for rows and columns size calculations. - * - * @type {GhostTable} - */ - _this.ghostTable = new _ghostTable2.default(_this.hot); - /** - * Instance of {@link SamplesGenerator} for generating samples necessary for rows height calculations. - * - * @type {SamplesGenerator} - */ - _this.samplesGenerator = new _samplesGenerator2.default(function (row, col) { - if (row >= 0) { - return _this.hot.getDataAtCell(row, col); - } else if (row === -1) { - return _this.hot.getColHeader(col); - } - return null; - }); - /** - * `true` if only the first calculation was performed. - * - * @type {Boolean} - */ - _this.firstCalculation = true; - /** - * `true` if the size calculation is in progress. - * - * @type {Boolean} - */ - _this.inProgress = false; - - // moved to constructor to allow auto-sizing the rows when the plugin is disabled - _this.addHook('beforeRowResize', function (row, size, isDblClick) { - return _this.onBeforeRowResize(row, size, isDblClick); - }); - return _this; - } - - /** - * Check if the plugin is enabled in the Handsontable settings. - * - * @returns {Boolean} - */ - - - _createClass(AutoRowSize, [{ - key: 'isEnabled', - value: function isEnabled() { - return this.hot.getSettings().autoRowSize === true || (0, _object.isObject)(this.hot.getSettings().autoRowSize); - } - - /** - * Enable plugin for this Handsontable instance. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this2 = this; - - if (this.enabled) { - return; - } - - this.setSamplingOptions(); - - this.addHook('afterLoadData', function () { - return _this2.onAfterLoadData(); - }); - this.addHook('beforeChange', function (changes) { - return _this2.onBeforeChange(changes); - }); - this.addHook('beforeColumnMove', function () { - return _this2.recalculateAllRowsHeight(); - }); - this.addHook('beforeColumnResize', function () { - return _this2.recalculateAllRowsHeight(); - }); - this.addHook('beforeColumnSort', function () { - return _this2.clearCache(); - }); - this.addHook('beforeRender', function (force) { - return _this2.onBeforeRender(force); - }); - this.addHook('beforeRowMove', function (rowStart, rowEnd) { - return _this2.onBeforeRowMove(rowStart, rowEnd); - }); - this.addHook('modifyRowHeight', function (height, row) { - return _this2.getRowHeight(row, height); - }); - this.addHook('modifyColumnHeaderHeight', function () { - return _this2.getColumnHeaderHeight(); - }); - _get(AutoRowSize.prototype.__proto__ || Object.getPrototypeOf(AutoRowSize.prototype), 'enablePlugin', this).call(this); - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - _get(AutoRowSize.prototype.__proto__ || Object.getPrototypeOf(AutoRowSize.prototype), 'disablePlugin', this).call(this); - } - - /** - * Calculate a given rows height. - * - * @param {Number|Object} rowRange Row range object. - * @param {Number|Object} colRange Column range object. - * @param {Boolean} [force=false] If `true` force calculate height even when value was cached earlier. - */ - - }, { - key: 'calculateRowsHeight', - value: function calculateRowsHeight() { - var rowRange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { from: 0, to: this.hot.countRows() - 1 }; - - var _this3 = this; - - var colRange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { from: 0, to: this.hot.countCols() - 1 }; - var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (typeof rowRange === 'number') { - rowRange = { from: rowRange, to: rowRange }; - } - if (typeof colRange === 'number') { - colRange = { from: colRange, to: colRange }; - } - - if (this.hot.getColHeader(0) !== null) { - var samples = this.samplesGenerator.generateRowSamples(-1, colRange); - - this.ghostTable.addColumnHeadersRow(samples.get(-1)); - } - - (0, _number.rangeEach)(rowRange.from, rowRange.to, function (row) { - // For rows we must calculate row height even when user had set height value manually. - // We can shrink column but cannot shrink rows! - if (force || _this3.heights[row] === void 0) { - var _samples = _this3.samplesGenerator.generateRowSamples(row, colRange); - - _samples.forEach(function (sample, row) { - _this3.ghostTable.addRow(row, sample); - }); - } - }); - if (this.ghostTable.rows.length) { - this.ghostTable.getHeights(function (row, height) { - _this3.heights[row] = height; - }); - this.ghostTable.clean(); - } - } - - /** - * Calculate the height of all the rows. - * - * @param {Object|Number} colRange Column range object. - */ - - }, { - key: 'calculateAllRowsHeight', - value: function calculateAllRowsHeight() { - var _this4 = this; - - var colRange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { from: 0, to: this.hot.countCols() - 1 }; - - var current = 0; - var length = this.hot.countRows() - 1; - var timer = null; - - this.inProgress = true; - - var loop = function loop() { - // When hot was destroyed after calculating finished cancel frame - if (!_this4.hot) { - (0, _feature.cancelAnimationFrame)(timer); - _this4.inProgress = false; - - return; - } - _this4.calculateRowsHeight({ from: current, to: Math.min(current + AutoRowSize.CALCULATION_STEP, length) }, colRange); - current = current + AutoRowSize.CALCULATION_STEP + 1; - - if (current < length) { - timer = (0, _feature.requestAnimationFrame)(loop); - } else { - (0, _feature.cancelAnimationFrame)(timer); - _this4.inProgress = false; - - // @TODO Should call once per render cycle, currently fired separately in different plugins - _this4.hot.view.wt.wtOverlays.adjustElementsSize(true); - // tmp - if (_this4.hot.view.wt.wtOverlays.leftOverlay.needFullRender) { - _this4.hot.view.wt.wtOverlays.leftOverlay.clone.draw(); - } - } - }; - // sync - if (this.firstCalculation && this.getSyncCalculationLimit()) { - this.calculateRowsHeight({ from: 0, to: this.getSyncCalculationLimit() }, colRange); - this.firstCalculation = false; - current = this.getSyncCalculationLimit() + 1; - } - // async - if (current < length) { - loop(); - } else { - this.inProgress = false; - this.hot.view.wt.wtOverlays.adjustElementsSize(false); - } - } - - /** - * Set the sampling options. - * - * @private - */ - - }, { - key: 'setSamplingOptions', - value: function setSamplingOptions() { - var setting = this.hot.getSettings().autoRowSize; - var samplingRatio = setting && (0, _object.hasOwnProperty)(setting, 'samplingRatio') ? this.hot.getSettings().autoRowSize.samplingRatio : void 0; - var allowSampleDuplicates = setting && (0, _object.hasOwnProperty)(setting, 'allowSampleDuplicates') ? this.hot.getSettings().autoRowSize.allowSampleDuplicates : void 0; - - if (samplingRatio && !isNaN(samplingRatio)) { - this.samplesGenerator.setSampleCount(parseInt(samplingRatio, 10)); - } - - if (allowSampleDuplicates) { - this.samplesGenerator.setAllowDuplicates(allowSampleDuplicates); - } - } - - /** - * Recalculate all rows height (overwrite cache values). - */ - - }, { - key: 'recalculateAllRowsHeight', - value: function recalculateAllRowsHeight() { - if ((0, _element.isVisible)(this.hot.view.wt.wtTable.TABLE)) { - this.clearCache(); - this.calculateAllRowsHeight(); - } - } - - /** - * Get value which tells how much rows will be calculated synchronously. Rest rows will be calculated asynchronously. - * - * @returns {Number} - */ - - }, { - key: 'getSyncCalculationLimit', - value: function getSyncCalculationLimit() { - /* eslint-disable no-bitwise */ - var limit = AutoRowSize.SYNC_CALCULATION_LIMIT; - var rowsLimit = this.hot.countRows() - 1; - - if ((0, _object.isObject)(this.hot.getSettings().autoRowSize)) { - limit = this.hot.getSettings().autoRowSize.syncLimit; - - if ((0, _string.isPercentValue)(limit)) { - limit = (0, _number.valueAccordingPercent)(rowsLimit, limit); - } else { - // Force to Number - limit >>= 0; - } - } - - return Math.min(limit, rowsLimit); - } - - /** - * Get the calculated row height. - * - * @param {Number} row Visual row index. - * @param {Number} [defaultHeight] Default row height. It will be pick up if no calculated height found. - * @returns {Number} - */ - - }, { - key: 'getRowHeight', - value: function getRowHeight(row) { - var defaultHeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : void 0; - - var height = defaultHeight; - - if (this.heights[row] !== void 0 && this.heights[row] > (defaultHeight || 0)) { - height = this.heights[row]; - } - - return height; - } - - /** - * Get the calculated column header height. - * - * @returns {Number|undefined} - */ - - }, { - key: 'getColumnHeaderHeight', - value: function getColumnHeaderHeight() { - return this.heights[-1]; - } - - /** - * Get the first visible row. - * - * @returns {Number} Returns row index or -1 if table is not rendered. - */ - - }, { - key: 'getFirstVisibleRow', - value: function getFirstVisibleRow() { - var wot = this.hot.view.wt; - - if (wot.wtViewport.rowsVisibleCalculator) { - return wot.wtTable.getFirstVisibleRow(); - } - if (wot.wtViewport.rowsRenderCalculator) { - return wot.wtTable.getFirstRenderedRow(); - } - - return -1; - } - - /** - * Get the last visible row. - * - * @returns {Number} Returns row index or -1 if table is not rendered. - */ - - }, { - key: 'getLastVisibleRow', - value: function getLastVisibleRow() { - var wot = this.hot.view.wt; - - if (wot.wtViewport.rowsVisibleCalculator) { - return wot.wtTable.getLastVisibleRow(); - } - if (wot.wtViewport.rowsRenderCalculator) { - return wot.wtTable.getLastRenderedRow(); - } - - return -1; - } - - /** - * Clear cached heights. - */ - - }, { - key: 'clearCache', - value: function clearCache() { - this.heights.length = 0; - this.heights[-1] = void 0; - } - - /** - * Clear cache by range. - * - * @param {Object|Number} range Row range object. - */ - - }, { - key: 'clearCacheByRange', - value: function clearCacheByRange(range) { - var _this5 = this; - - if (typeof range === 'number') { - range = { from: range, to: range }; - } - (0, _number.rangeEach)(Math.min(range.from, range.to), Math.max(range.from, range.to), function (row) { - _this5.heights[row] = void 0; - }); - } - - /** - * @returns {Boolean} - */ - - }, { - key: 'isNeedRecalculate', - value: function isNeedRecalculate() { - return !!(0, _array.arrayFilter)(this.heights, function (item) { - return item === void 0; - }).length; - } - - /** - * On before render listener. - * - * @private - */ - - }, { - key: 'onBeforeRender', - value: function onBeforeRender() { - var force = this.hot.renderCall; - this.calculateRowsHeight({ from: this.getFirstVisibleRow(), to: this.getLastVisibleRow() }, void 0, force); - - var fixedRowsBottom = this.hot.getSettings().fixedRowsBottom; - - // Calculate rows height synchronously for bottom overlay - if (fixedRowsBottom) { - var totalRows = this.hot.countRows() - 1; - this.calculateRowsHeight({ from: totalRows - fixedRowsBottom, to: totalRows }); - } - - if (this.isNeedRecalculate() && !this.inProgress) { - this.calculateAllRowsHeight(); - } - } - - /** - * On before row move listener. - * - * @private - * @param {Number} from Row index where was grabbed. - * @param {Number} to Destination row index. - */ - - }, { - key: 'onBeforeRowMove', - value: function onBeforeRowMove(from, to) { - this.clearCacheByRange({ from: from, to: to }); - this.calculateAllRowsHeight(); - } - - /** - * On before row resize listener. - * - * @private - * @param {Number} row - * @param {Number} size - * @param {Boolean} isDblClick - * @returns {Number} - */ - - }, { - key: 'onBeforeRowResize', - value: function onBeforeRowResize(row, size, isDblClick) { - if (isDblClick) { - this.calculateRowsHeight(row, void 0, true); - size = this.getRowHeight(row); - } - - return size; - } - - /** - * On after load data listener. - * - * @private - */ - - }, { - key: 'onAfterLoadData', - value: function onAfterLoadData() { - var _this6 = this; - - if (this.hot.view) { - this.recalculateAllRowsHeight(); - } else { - // first load - initialization - setTimeout(function () { - if (_this6.hot) { - _this6.recalculateAllRowsHeight(); - } - }, 0); - } - } - - /** - * On before change listener. - * - * @private - * @param {Array} changes - */ - - }, { - key: 'onBeforeChange', - value: function onBeforeChange(changes) { - var range = null; - - if (changes.length === 1) { - range = changes[0][0]; - } else if (changes.length > 1) { - range = { - from: changes[0][0], - to: changes[changes.length - 1][0] - }; - } - if (range !== null) { - this.clearCacheByRange(range); - } - } - - /** - * Destroy plugin instance. - */ - - }, { - key: 'destroy', - value: function destroy() { - this.ghostTable.clean(); - _get(AutoRowSize.prototype.__proto__ || Object.getPrototypeOf(AutoRowSize.prototype), 'destroy', this).call(this); - } - }]); - - return AutoRowSize; -}(_base2.default); - -(0, _plugins.registerPlugin)('autoRowSize', AutoRowSize); - -exports.default = AutoRowSize; - -/***/ }), -/* 252 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _moment = __webpack_require__(50); - -var _moment2 = _interopRequireDefault(_moment); - -var _element = __webpack_require__(0); - -var _array = __webpack_require__(2); - -var _mixed = __webpack_require__(22); - -var _object = __webpack_require__(1); - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _plugins = __webpack_require__(5); - -var _mergeSort = __webpack_require__(253); - -var _mergeSort2 = _interopRequireDefault(_mergeSort); - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -_pluginHooks2.default.getSingleton().register('beforeColumnSort'); -_pluginHooks2.default.getSingleton().register('afterColumnSort'); - -// TODO: Implement mixin arrayMapper to ColumnSorting plugin. - -/** - * @plugin ColumnSorting - * - * @description - * This plugin sorts the view by a column (but does not sort the data source!). - * To enable the plugin, set the `columnSorting` property to either: - * * a boolean value (`true`/`false`), - * * an object defining the initial sorting order (see the example below). - * - * @example - * ```js - * ... - * // as boolean - * columnSorting: true - * ... - * // as a object with initial order (sort ascending column at index 2) - * columnSorting: { - * column: 2, - * sortOrder: true, // true = ascending, false = descending, undefined = original order - * sortEmptyCells: true // true = the table sorts empty cells, false = the table moves all empty cells to the end of the table - * } - * ... - * ``` - * @dependencies ObserveChanges - */ - -var ColumnSorting = function (_BasePlugin) { - _inherits(ColumnSorting, _BasePlugin); - - function ColumnSorting(hotInstance) { - _classCallCheck(this, ColumnSorting); - - var _this2 = _possibleConstructorReturn(this, (ColumnSorting.__proto__ || Object.getPrototypeOf(ColumnSorting)).call(this, hotInstance)); - - _this2.sortIndicators = []; - _this2.lastSortedColumn = null; - _this2.sortEmptyCells = false; - return _this2; - } - - /** - * Check if the plugin is enabled in the handsontable settings. - * - * @returns {Boolean} - */ - - - _createClass(ColumnSorting, [{ - key: 'isEnabled', - value: function isEnabled() { - return !!this.hot.getSettings().columnSorting; - } - - /** - * Enable plugin for this Handsontable instance. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this3 = this; - - if (this.enabled) { - return; - } - - this.setPluginOptions(); - - var _this = this; - this.hot.sortIndex = []; - - this.hot.sort = function () { - var args = Array.prototype.slice.call(arguments); - - return _this.sortByColumn.apply(_this, _toConsumableArray(args)); - }; - - if (typeof this.hot.getSettings().observeChanges === 'undefined') { - this.enableObserveChangesPlugin(); - } - - this.addHook('afterTrimRow', function (row) { - return _this3.sort(); - }); - this.addHook('afterUntrimRow', function (row) { - return _this3.sort(); - }); - this.addHook('modifyRow', function (row) { - return _this3.translateRow(row); - }); - this.addHook('unmodifyRow', function (row) { - return _this3.untranslateRow(row); - }); - this.addHook('afterUpdateSettings', function () { - return _this3.onAfterUpdateSettings(); - }); - this.addHook('afterGetColHeader', function (col, TH) { - return _this3.getColHeader(col, TH); - }); - this.addHook('afterOnCellMouseDown', function (event, target) { - return _this3.onAfterOnCellMouseDown(event, target); - }); - this.addHook('afterCreateRow', function () { - _this.afterCreateRow.apply(_this, arguments); - }); - this.addHook('afterRemoveRow', function () { - _this.afterRemoveRow.apply(_this, arguments); - }); - this.addHook('afterInit', function () { - return _this3.sortBySettings(); - }); - this.addHook('afterLoadData', function () { - _this3.hot.sortIndex = []; - - if (_this3.hot.view) { - _this3.sortBySettings(); - } - }); - if (this.hot.view) { - this.sortBySettings(); - } - _get(ColumnSorting.prototype.__proto__ || Object.getPrototypeOf(ColumnSorting.prototype), 'enablePlugin', this).call(this); - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - this.hot.sort = void 0; - _get(ColumnSorting.prototype.__proto__ || Object.getPrototypeOf(ColumnSorting.prototype), 'disablePlugin', this).call(this); - } - - /** - * afterUpdateSettings callback. - * - * @private - */ - - }, { - key: 'onAfterUpdateSettings', - value: function onAfterUpdateSettings() { - this.sortBySettings(); - } - }, { - key: 'sortBySettings', - value: function sortBySettings() { - var sortingSettings = this.hot.getSettings().columnSorting; - var loadedSortingState = this.loadSortingState(); - var sortingColumn = void 0; - var sortingOrder = void 0; - - if (typeof loadedSortingState === 'undefined') { - sortingColumn = sortingSettings.column; - sortingOrder = sortingSettings.sortOrder; - } else { - sortingColumn = loadedSortingState.sortColumn; - sortingOrder = loadedSortingState.sortOrder; - } - if (typeof sortingColumn === 'number') { - this.lastSortedColumn = sortingColumn; - this.sortByColumn(sortingColumn, sortingOrder); - } - } - - /** - * Set sorted column and order info - * - * @param {number} col Sorted visual column index. - * @param {boolean|undefined} order Sorting order (`true` for ascending, `false` for descending). - */ - - }, { - key: 'setSortingColumn', - value: function setSortingColumn(col, order) { - if (typeof col == 'undefined') { - this.hot.sortColumn = void 0; - this.hot.sortOrder = void 0; - - return; - } else if (this.hot.sortColumn === col && typeof order == 'undefined') { - if (this.hot.sortOrder === false) { - this.hot.sortOrder = void 0; - } else { - this.hot.sortOrder = !this.hot.sortOrder; - } - } else { - this.hot.sortOrder = typeof order === 'undefined' ? true : order; - } - - this.hot.sortColumn = col; - } - }, { - key: 'sortByColumn', - value: function sortByColumn(col, order) { - this.setSortingColumn(col, order); - - if (typeof this.hot.sortColumn == 'undefined') { - return; - } - - var allowSorting = this.hot.runHooks('beforeColumnSort', this.hot.sortColumn, this.hot.sortOrder); - - if (allowSorting !== false) { - this.sort(); - } - this.updateOrderClass(); - this.updateSortIndicator(); - - this.hot.runHooks('afterColumnSort', this.hot.sortColumn, this.hot.sortOrder); - - this.hot.render(); - this.saveSortingState(); - } - - /** - * Save the sorting state - */ - - }, { - key: 'saveSortingState', - value: function saveSortingState() { - var sortingState = {}; - - if (typeof this.hot.sortColumn != 'undefined') { - sortingState.sortColumn = this.hot.sortColumn; - } - - if (typeof this.hot.sortOrder != 'undefined') { - sortingState.sortOrder = this.hot.sortOrder; - } - - if ((0, _object.hasOwnProperty)(sortingState, 'sortColumn') || (0, _object.hasOwnProperty)(sortingState, 'sortOrder')) { - this.hot.runHooks('persistentStateSave', 'columnSorting', sortingState); - } - } - - /** - * Load the sorting state. - * - * @returns {*} Previously saved sorting state. - */ - - }, { - key: 'loadSortingState', - value: function loadSortingState() { - var storedState = {}; - this.hot.runHooks('persistentStateLoad', 'columnSorting', storedState); - - return storedState.value; - } - - /** - * Update sorting class name state. - */ - - }, { - key: 'updateOrderClass', - value: function updateOrderClass() { - var orderClass = void 0; - - if (this.hot.sortOrder === true) { - orderClass = 'ascending'; - } else if (this.hot.sortOrder === false) { - orderClass = 'descending'; - } - this.sortOrderClass = orderClass; - } - }, { - key: 'enableObserveChangesPlugin', - value: function enableObserveChangesPlugin() { - var _this = this; - - this.hot._registerTimeout(setTimeout(function () { - _this.hot.updateSettings({ - observeChanges: true - }); - }, 0)); - } - - /** - * Default sorting algorithm. - * - * @param {Boolean} sortOrder Sorting order - `true` for ascending, `false` for descending. - * @param {Object} columnMeta Column meta object. - * @returns {Function} The comparing function. - */ - - }, { - key: 'defaultSort', - value: function defaultSort(sortOrder, columnMeta) { - return function (a, b) { - if (typeof a[1] == 'string') { - a[1] = a[1].toLowerCase(); - } - if (typeof b[1] == 'string') { - b[1] = b[1].toLowerCase(); - } - - if (a[1] === b[1]) { - return 0; - } - - if ((0, _mixed.isEmpty)(a[1])) { - if ((0, _mixed.isEmpty)(b[1])) { - return 0; - } - - if (columnMeta.columnSorting.sortEmptyCells) { - return sortOrder ? -1 : 1; - } - - return 1; - } - if ((0, _mixed.isEmpty)(b[1])) { - if ((0, _mixed.isEmpty)(a[1])) { - return 0; - } - - if (columnMeta.columnSorting.sortEmptyCells) { - return sortOrder ? 1 : -1; - } - - return -1; - } - - if (isNaN(a[1]) && !isNaN(b[1])) { - return sortOrder ? 1 : -1; - } else if (!isNaN(a[1]) && isNaN(b[1])) { - return sortOrder ? -1 : 1; - } else if (!(isNaN(a[1]) || isNaN(b[1]))) { - a[1] = parseFloat(a[1]); - b[1] = parseFloat(b[1]); - } - if (a[1] < b[1]) { - return sortOrder ? -1 : 1; - } - if (a[1] > b[1]) { - return sortOrder ? 1 : -1; - } - - return 0; - }; - } - - /** - * Date sorting algorithm - * @param {Boolean} sortOrder Sorting order (`true` for ascending, `false` for descending). - * @param {Object} columnMeta Column meta object. - * @returns {Function} The compare function. - */ - - }, { - key: 'dateSort', - value: function dateSort(sortOrder, columnMeta) { - return function (a, b) { - if (a[1] === b[1]) { - return 0; - } - - if ((0, _mixed.isEmpty)(a[1])) { - if ((0, _mixed.isEmpty)(b[1])) { - return 0; - } - - if (columnMeta.columnSorting.sortEmptyCells) { - return sortOrder ? -1 : 1; - } - - return 1; - } - - if ((0, _mixed.isEmpty)(b[1])) { - if ((0, _mixed.isEmpty)(a[1])) { - return 0; - } - - if (columnMeta.columnSorting.sortEmptyCells) { - return sortOrder ? 1 : -1; - } - - return -1; - } - - var aDate = (0, _moment2.default)(a[1], columnMeta.dateFormat); - var bDate = (0, _moment2.default)(b[1], columnMeta.dateFormat); - - if (!aDate.isValid()) { - return 1; - } - if (!bDate.isValid()) { - return -1; - } - - if (bDate.isAfter(aDate)) { - return sortOrder ? -1 : 1; - } - if (bDate.isBefore(aDate)) { - return sortOrder ? 1 : -1; - } - - return 0; - }; - } - - /** - * Numeric sorting algorithm. - * - * @param {Boolean} sortOrder Sorting order (`true` for ascending, `false` for descending). - * @param {Object} columnMeta Column meta object. - * @returns {Function} The compare function. - */ - - }, { - key: 'numericSort', - value: function numericSort(sortOrder, columnMeta) { - return function (a, b) { - var parsedA = parseFloat(a[1]); - var parsedB = parseFloat(b[1]); - - // Watch out when changing this part of code! - // Check below returns 0 (as expected) when comparing empty string, null, undefined - if (parsedA === parsedB || isNaN(parsedA) && isNaN(parsedB)) { - return 0; - } - - if (columnMeta.columnSorting.sortEmptyCells) { - if ((0, _mixed.isEmpty)(a[1])) { - return sortOrder ? -1 : 1; - } - - if ((0, _mixed.isEmpty)(b[1])) { - return sortOrder ? 1 : -1; - } - } - - if (isNaN(parsedA)) { - return 1; - } - - if (isNaN(parsedB)) { - return -1; - } - - if (parsedA < parsedB) { - return sortOrder ? -1 : 1; - } else if (parsedA > parsedB) { - return sortOrder ? 1 : -1; - } - - return 0; - }; - } - - /** - * Perform the sorting. - */ - - }, { - key: 'sort', - value: function sort() { - if (typeof this.hot.sortOrder == 'undefined') { - this.hot.sortIndex.length = 0; - - return; - } - - var colMeta = this.hot.getCellMeta(0, this.hot.sortColumn); - var emptyRows = this.hot.countEmptyRows(); - var sortFunction = void 0; - var nrOfRows = void 0; - - this.hot.sortingEnabled = false; // this is required by translateRow plugin hook - this.hot.sortIndex.length = 0; - - if (typeof colMeta.columnSorting.sortEmptyCells === 'undefined') { - colMeta.columnSorting = { sortEmptyCells: this.sortEmptyCells }; - } - - if (this.hot.getSettings().maxRows === Number.POSITIVE_INFINITY) { - nrOfRows = this.hot.countRows() - this.hot.getSettings().minSpareRows; - } else { - nrOfRows = this.hot.countRows() - emptyRows; - } - - for (var i = 0, ilen = nrOfRows; i < ilen; i++) { - this.hot.sortIndex.push([i, this.hot.getDataAtCell(i, this.hot.sortColumn)]); - } - - if (colMeta.sortFunction) { - sortFunction = colMeta.sortFunction; - } else { - switch (colMeta.type) { - case 'date': - sortFunction = this.dateSort; - break; - case 'numeric': - sortFunction = this.numericSort; - break; - default: - sortFunction = this.defaultSort; - } - } - - (0, _mergeSort2.default)(this.hot.sortIndex, sortFunction(this.hot.sortOrder, colMeta)); - - // Append spareRows - for (var _i = this.hot.sortIndex.length; _i < this.hot.countRows(); _i++) { - this.hot.sortIndex.push([_i, this.hot.getDataAtCell(_i, this.hot.sortColumn)]); - } - - this.hot.sortingEnabled = true; // this is required by translateRow plugin hook - } - - /** - * Update indicator states. - */ - - }, { - key: 'updateSortIndicator', - value: function updateSortIndicator() { - if (typeof this.hot.sortOrder == 'undefined') { - return; - } - var colMeta = this.hot.getCellMeta(0, this.hot.sortColumn); - - this.sortIndicators[this.hot.sortColumn] = colMeta.sortIndicator; - } - - /** - * `modifyRow` hook callback. Translates physical row index to the sorted row index. - * - * @param {Number} row Row index. - * @returns {Number} Sorted row index. - */ - - }, { - key: 'translateRow', - value: function translateRow(row) { - if (this.hot.sortingEnabled && typeof this.hot.sortOrder !== 'undefined' && this.hot.sortIndex && this.hot.sortIndex.length && this.hot.sortIndex[row]) { - return this.hot.sortIndex[row][0]; - } - - return row; - } - - /** - * Translates sorted row index to physical row index. - * - * @param {Number} row Sorted (visual) row index. - * @returns {number} Physical row index. - */ - - }, { - key: 'untranslateRow', - value: function untranslateRow(row) { - if (this.hot.sortingEnabled && this.hot.sortIndex && this.hot.sortIndex.length) { - for (var i = 0; i < this.hot.sortIndex.length; i++) { - if (this.hot.sortIndex[i][0] == row) { - return i; - } - } - } - } - - /** - * `afterGetColHeader` callback. Adds column sorting css classes to clickable headers. - * - * @private - * @param {Number} col Visual column index. - * @param {Element} TH TH HTML element. - */ - - }, { - key: 'getColHeader', - value: function getColHeader(col, TH) { - if (col < 0 || !TH.parentNode) { - return false; - } - - var headerLink = TH.querySelector('.colHeader'); - var colspan = TH.getAttribute('colspan'); - var TRs = TH.parentNode.parentNode.childNodes; - var headerLevel = Array.prototype.indexOf.call(TRs, TH.parentNode); - headerLevel -= TRs.length; - - if (!headerLink) { - return; - } - - if (this.hot.getSettings().columnSorting && col >= 0 && headerLevel === -1) { - (0, _element.addClass)(headerLink, 'columnSorting'); - } - (0, _element.removeClass)(headerLink, 'descending'); - (0, _element.removeClass)(headerLink, 'ascending'); - - if (this.sortIndicators[col]) { - if (col === this.hot.sortColumn) { - if (this.sortOrderClass === 'ascending') { - (0, _element.addClass)(headerLink, 'ascending'); - } else if (this.sortOrderClass === 'descending') { - (0, _element.addClass)(headerLink, 'descending'); - } - } - } - } - - /** - * Check if any column is in a sorted state. - * - * @returns {Boolean} - */ - - }, { - key: 'isSorted', - value: function isSorted() { - return typeof this.hot.sortColumn != 'undefined'; - } - - /** - * `afterCreateRow` callback. Updates the sorting state after a row have been created. - * - * @private - * @param {Number} index Visual row index. - * @param {Number} amount - */ - - }, { - key: 'afterCreateRow', - value: function afterCreateRow(index, amount) { - if (!this.isSorted()) { - return; - } - - for (var i = 0; i < this.hot.sortIndex.length; i++) { - if (this.hot.sortIndex[i][0] >= index) { - this.hot.sortIndex[i][0] += amount; - } - } - - for (var _i2 = 0; _i2 < amount; _i2++) { - this.hot.sortIndex.splice(index + _i2, 0, [index + _i2, this.hot.getSourceData()[index + _i2][this.hot.sortColumn + this.hot.colOffset()]]); - } - - this.saveSortingState(); - } - - /** - * `afterRemoveRow` hook callback. - * - * @private - * @param {Number} index Visual row index. - * @param {Number} amount - */ - - }, { - key: 'afterRemoveRow', - value: function afterRemoveRow(index, amount) { - if (!this.isSorted()) { - return; - } - var removedRows = this.hot.sortIndex.splice(index, amount); - - removedRows = (0, _array.arrayMap)(removedRows, function (row) { - return row[0]; - }); - - function countRowShift(logicalRow) { - // Todo: compare perf between reduce vs sort->each->brake - return (0, _array.arrayReduce)(removedRows, function (count, removedLogicalRow) { - if (logicalRow > removedLogicalRow) { - count++; - } - - return count; - }, 0); - } - - this.hot.sortIndex = (0, _array.arrayMap)(this.hot.sortIndex, function (logicalRow, physicalRow) { - var rowShift = countRowShift(logicalRow[0]); - - if (rowShift) { - logicalRow[0] -= rowShift; - } - - return logicalRow; - }); - - this.saveSortingState(); - } - - /** - * Set options by passed settings - * - * @private - */ - - }, { - key: 'setPluginOptions', - value: function setPluginOptions() { - var columnSorting = this.hot.getSettings().columnSorting; - - if ((typeof columnSorting === 'undefined' ? 'undefined' : _typeof(columnSorting)) === 'object') { - this.sortEmptyCells = columnSorting.sortEmptyCells || false; - } else { - this.sortEmptyCells = false; - } - } - - /** - * `onAfterOnCellMouseDown` hook callback. - * - * @private - * @param {Event} event Event which are provided by hook. - * @param {CellCoords} coords Visual coords of the selected cell. - */ - - }, { - key: 'onAfterOnCellMouseDown', - value: function onAfterOnCellMouseDown(event, coords) { - if (coords.row > -1) { - return; - } - - if ((0, _element.hasClass)(event.realTarget, 'columnSorting')) { - // reset order state on every new column header click - if (coords.col !== this.lastSortedColumn) { - this.hot.sortOrder = true; - } - - this.lastSortedColumn = coords.col; - - this.sortByColumn(coords.col); - } - } - }]); - - return ColumnSorting; -}(_base2.default); - -(0, _plugins.registerPlugin)('columnSorting', ColumnSorting); - -exports.default = ColumnSorting; - -/***/ }), -/* 253 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = mergeSort; -exports.merge = merge; - -var _linkedList = __webpack_require__(254); - -var _linkedList2 = _interopRequireDefault(_linkedList); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Refactored implementation of mergeSort (part of javascript-algorithms project) by Github users: - * mgechev, AndriiHeonia and lekkas (part of javascript-algorithms project - all project contributors - * at repository website) - * - * Link to repository: https://github.com/mgechev/javascript-algorithms - */ - -/** - * Specifies a function that defines the sort order. The array is sorted according to each - * character's Unicode code point value, according to the string conversion of each element. - * - * @param a {*} first compared element. - * @param b {*} second compared element. - * @returns {Number} - */ -var defaultCompareFunction = function defaultCompareFunction(a, b) { - // sort lexically - - var firstValue = a.toString(); - var secondValue = b.toString(); - - if (firstValue === secondValue) { - return 0; - } else if (firstValue < secondValue) { - return -1; - } - return 1; -}; - -/** - * Mergesort method which is recursively called for sorting the input array. - * - * @param {Array} array The array which should be sorted. - * @param {Function} compareFunction Compares two items in an array. If compareFunction is not supplied, - * elements are sorted by converting them to strings and comparing strings in Unicode code point order. - * @param {Number} startIndex Left side of the subarray. - * @param {Number} endIndex Right side of the subarray. - * @returns {Array} Array with sorted subarray. - */ -function mergeSort(array) { - var compareFunction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultCompareFunction; - var startIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; - var endIndex = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : array.length; - - if (Math.abs(endIndex - startIndex) <= 1) { - return []; - } - - var middleIndex = Math.ceil((startIndex + endIndex) / 2); - - mergeSort(array, compareFunction, startIndex, middleIndex); - mergeSort(array, compareFunction, middleIndex, endIndex); - - return merge(array, compareFunction, startIndex, middleIndex, endIndex); -} - -/** - * Devides and sort merges two subarrays of given array - * - * @param {Array} array The array which subarrays should be sorted. - * @param {Number} startIndex The start of the first subarray. - * This subarray is with end middle - 1. - * @param {Number} middleIndex The start of the second array. - * @param {Number} endIndex end - 1 is the end of the second array. - * @returns {Array} The array with sorted subarray. - */ -function merge(array, compareFunction, startIndex, middleIndex, endIndex) { - var leftElements = new _linkedList2.default(); - var rightElements = new _linkedList2.default(); - var leftSize = middleIndex - startIndex; - var rightSize = endIndex - middleIndex; - var maxSize = Math.max(leftSize, rightSize); - var size = endIndex - startIndex; - - for (var _i = 0; _i < maxSize; _i += 1) { - if (_i < leftSize) { - leftElements.push(array[startIndex + _i]); - } - - if (_i < rightSize) { - rightElements.push(array[middleIndex + _i]); - } - } - - var i = 0; - - while (i < size) { - if (leftElements.first && rightElements.first) { - if (compareFunction(leftElements.first.data, rightElements.first.data) > 0) { - array[startIndex + i] = rightElements.shift().data; - } else { - array[startIndex + i] = leftElements.shift().data; - } - } else if (leftElements.first) { - - array[startIndex + i] = leftElements.shift().data; - } else { - - array[startIndex + i] = rightElements.shift().data; - } - - i += 1; - } - - return array; -}; - -/***/ }), -/* 254 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * Refactored implementation of LinkedList (part of javascript-algorithms project) by Github users: - * mgechev, AndriiHeonia, Microfed and Jakeh (part of javascript-algorithms project - all project contributors - * at repository website) - * - * Link to repository: https://github.com/mgechev/javascript-algorithms - */ - -/** - * Linked list node. - * - * @class NodeStructure - * @util - */ -var NodeStructure = function NodeStructure(data) { - _classCallCheck(this, NodeStructure); - - /** - * Data of the node. - * @member {Object} - */ - this.data = data; - /** - * Next node. - * @member {NodeStructure} - */ - this.next = null; - /** - * Previous node. - * @member {NodeStructure} - */ - this.prev = null; -}; - -/** - * Linked list. - * - * @class LinkedList - * @util - */ - - -var LinkedList = function () { - function LinkedList() { - _classCallCheck(this, LinkedList); - - this.first = null; - this.last = null; - } - - /** - * Add data to the end of linked list. - * - * @param {Object} data Data which should be added. - */ - - - _createClass(LinkedList, [{ - key: "push", - value: function push(data) { - var node = new NodeStructure(data); - - if (this.first === null) { - this.first = node; - this.last = node; - } else { - var temp = this.last; - - this.last = node; - node.prev = temp; - temp.next = node; - } - } - - /** - * Add data to the beginning of linked list. - * - * @param {Object} data Data which should be added. - */ - - }, { - key: "unshift", - value: function unshift(data) { - var node = new NodeStructure(data); - - if (this.first === null) { - this.first = node; - this.last = node; - } else { - var temp = this.first; - - this.first = node; - node.next = temp; - temp.prev = node; - } - } - - /** - * In order traversal of the linked list. - * - * @param {Function} callback Callback which should be executed on each node. - */ - - }, { - key: "inorder", - value: function inorder(callback) { - var temp = this.first; - - while (temp) { - callback(temp); - temp = temp.next; - } - } - - /** - * Remove data from the linked list. - * - * @param {Object} data Data which should be removed. - * @returns {Boolean} Returns true if data has been removed. - */ - - }, { - key: "remove", - value: function remove(data) { - if (this.first === null) { - return false; - } - - var temp = this.first; - var next = void 0; - var prev = void 0; - - while (temp) { - if (temp.data === data) { - next = temp.next; - prev = temp.prev; - - if (next) { - next.prev = prev; - } - - if (prev) { - prev.next = next; - } - - if (temp === this.first) { - this.first = next; - } - - if (temp === this.last) { - this.last = prev; - } - - return true; - } - - temp = temp.next; - } - - return false; - } - - /** - * Check if linked list contains cycle. - * - * @returns {Boolean} Returns true if linked list contains cycle. - */ - - }, { - key: "hasCycle", - value: function hasCycle() { - var fast = this.first; - var slow = this.first; - - while (true) { - if (fast === null) { - return false; - } - - fast = fast.next; - - if (fast === null) { - return false; - } - - fast = fast.next; - slow = slow.next; - - if (fast === slow) { - return true; - } - } - } - }, { - key: "pop", - - - /** - * Return last node from the linked list. - * - * @returns {NodeStructure} Last node. - */ - value: function pop() { - if (this.last === null) { - return null; - } - - var temp = this.last; - this.last = this.last.prev; - - return temp; - } - }, { - key: "shift", - - - /** - * Return first node from the linked list. - * - * @returns {NodeStructure} First node. - */ - value: function shift() { - if (this.first === null) { - return null; - } - - var temp = this.first; - this.first = this.first.next; - - return temp; - } - }, { - key: "recursiveReverse", - - - /** - * Reverses the linked list recursively - */ - value: function recursiveReverse() { - function inverse(current, next) { - if (!next) { - return; - } - inverse(next, next.next); - next.next = current; - } - - if (!this.first) { - return; - } - - inverse(this.first, this.first.next); - - this.first.next = null; - var temp = this.first; - this.first = this.last; - this.last = temp; - } - }, { - key: "reverse", - - - /** - * Reverses the linked list iteratively - */ - value: function reverse() { - if (!this.first || !this.first.next) { - return; - } - - var current = this.first.next; - var prev = this.first; - var temp = void 0; - - while (current) { - temp = current.next; - current.next = prev; - prev.prev = current; - prev = current; - current = temp; - } - - this.first.next = null; - this.last.prev = null; - temp = this.first; - this.first = prev; - this.last = temp; - } - }]); - - return LinkedList; -}(); - -; - -exports.NodeStructure = NodeStructure; -exports.default = LinkedList; - -/***/ }), -/* 255 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _element = __webpack_require__(0); - -var _object = __webpack_require__(1); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _src = __webpack_require__(12); - -var _plugins = __webpack_require__(5); - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _commentEditor = __webpack_require__(256); - -var _commentEditor2 = _interopRequireDefault(_commentEditor); - -var _utils = __webpack_require__(19); - -var _displaySwitch = __webpack_require__(257); - -var _displaySwitch2 = _interopRequireDefault(_displaySwitch); - -__webpack_require__(258); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var privatePool = new WeakMap(); -var META_COMMENT = 'comment'; -var META_COMMENT_VALUE = 'value'; -var META_STYLE = 'style'; -var META_READONLY = 'readOnly'; - -/** - * @plugin Comments - * - * @description - * This plugin allows setting and managing cell comments by either an option in the context menu or with the use of the API. - * - * To enable the plugin, you'll need to set the comments property of the config object to `true`: - * ```js - * ... - * comments: true - * ... - * ``` - * - * or object with extra predefined plugin config: - * - * ```js - * ... - * comments: { - * displayDelay: 1000 - * } - * ... - * ``` - * - * To add comments at the table initialization, define the `comment` property in the `cell` config array as in an example below. - * - * @example - * - * ```js - * ... - * var hot = new Handsontable(document.getElementById('example'), { - * date: getData(), - * comments: true, - * cell: [ - * {row: 1, col: 1, comment: {value: 'Foo'}}, - * {row: 2, col: 2, comment: {value: 'Bar'}} - * ] - * }); - * - * // Access to the Comments plugin instance: - * var commentsPlugin = hot.getPlugin('comments'); - * - * // Manage comments programmatically: - * commentsPlugin.setCommentAtCell(1, 6, 'Comment contents'); - * commentsPlugin.showAtCell(1, 6); - * commentsPlugin.removeCommentAtCell(1, 6); - * - * // You can also set range once and use proper methods: - * commentsPlugin.setRange({row: 1, col: 6}); - * commentsPlugin.setComment('Comment contents'); - * commentsPlugin.show(); - * commentsPlugin.removeComment(); - * ... - * ``` - */ - -var Comments = function (_BasePlugin) { - _inherits(Comments, _BasePlugin); - - function Comments(hotInstance) { - _classCallCheck(this, Comments); - - /** - * Instance of {@link CommentEditor}. - * - * @type {CommentEditor} - */ - var _this = _possibleConstructorReturn(this, (Comments.__proto__ || Object.getPrototypeOf(Comments)).call(this, hotInstance)); - - _this.editor = null; - /** - * Instance of {@link DisplaySwitch}. - * - * @type {DisplaySwitch} - */ - _this.displaySwitch = null; - /** - * Instance of {@link EventManager}. - * - * @private - * @type {EventManager} - */ - _this.eventManager = null; - /** - * Current cell range. - * - * @type {Object} - */ - _this.range = {}; - /** - * @private - * @type {Boolean} - */ - _this.mouseDown = false; - /** - * @private - * @type {Boolean} - */ - _this.contextMenuEvent = false; - /** - * @private - * @type {*} - */ - _this.timer = null; - - privatePool.set(_this, { - tempEditorDimensions: {}, - cellBelowCursor: null - }); - return _this; - } - - /** - * Check if the plugin is enabled in the Handsontable settings. - * - * @returns {Boolean} - */ - - - _createClass(Comments, [{ - key: 'isEnabled', - value: function isEnabled() { - return !!this.hot.getSettings().comments; - } - - /** - * Enable plugin for this Handsontable instance. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this2 = this; - - if (this.enabled) { - return; - } - - if (!this.editor) { - this.editor = new _commentEditor2.default(); - } - - if (!this.eventManager) { - this.eventManager = new _eventManager2.default(this); - } - - if (!this.displaySwitch) { - this.displaySwitch = new _displaySwitch2.default(this.getDisplayDelaySetting()); - } - - this.addHook('afterContextMenuDefaultOptions', function (options) { - return _this2.addToContextMenu(options); - }); - this.addHook('afterRenderer', function (TD, row, col, prop, value, cellProperties) { - return _this2.onAfterRenderer(TD, cellProperties); - }); - this.addHook('afterScrollHorizontally', function () { - return _this2.hide(); - }); - this.addHook('afterScrollVertically', function () { - return _this2.hide(); - }); - this.addHook('afterBeginEditing', function (args) { - return _this2.onAfterBeginEditing(args); - }); - - this.displaySwitch.addLocalHook('hide', function () { - return _this2.hide(); - }); - this.displaySwitch.addLocalHook('show', function (row, col) { - return _this2.showAtCell(row, col); - }); - - this.registerListeners(); - - _get(Comments.prototype.__proto__ || Object.getPrototypeOf(Comments.prototype), 'enablePlugin', this).call(this); - } - - /** - * Update plugin for this Handsontable instance. - */ - - }, { - key: 'updatePlugin', - value: function updatePlugin() { - this.disablePlugin(); - this.enablePlugin(); - _get(Comments.prototype.__proto__ || Object.getPrototypeOf(Comments.prototype), 'updatePlugin', this).call(this); - - this.displaySwitch.updateDelay(this.getDisplayDelaySetting()); - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - _get(Comments.prototype.__proto__ || Object.getPrototypeOf(Comments.prototype), 'disablePlugin', this).call(this); - } - - /** - * Register all necessary DOM listeners. - * - * @private - */ - - }, { - key: 'registerListeners', - value: function registerListeners() { - var _this3 = this; - - this.eventManager.addEventListener(document, 'mouseover', function (event) { - return _this3.onMouseOver(event); - }); - this.eventManager.addEventListener(document, 'mousedown', function (event) { - return _this3.onMouseDown(event); - }); - this.eventManager.addEventListener(document, 'mouseup', function (event) { - return _this3.onMouseUp(event); - }); - this.eventManager.addEventListener(this.editor.getInputElement(), 'blur', function (event) { - return _this3.onEditorBlur(event); - }); - this.eventManager.addEventListener(this.editor.getInputElement(), 'mousedown', function (event) { - return _this3.onEditorMouseDown(event); - }); - this.eventManager.addEventListener(this.editor.getInputElement(), 'mouseup', function (event) { - return _this3.onEditorMouseUp(event); - }); - } - - /** - * Set current cell range to be able to use general methods like {@link Comments#setComment}, - * {@link Comments#removeComment}, {@link Comments#show}. - * - * @param {Object} range Object with `from` and `to` properties, each with `row` and `col` properties. - */ - - }, { - key: 'setRange', - value: function setRange(range) { - this.range = range; - } - - /** - * Clear the currently selected cell. - */ - - }, { - key: 'clearRange', - value: function clearRange() { - this.range = {}; - } - - /** - * Check if the event target is a cell containing a comment. - * - * @param {Event} event DOM event - * @returns {Boolean} - */ - - }, { - key: 'targetIsCellWithComment', - value: function targetIsCellWithComment(event) { - var closestCell = (0, _element.closest)(event.target, 'TD', 'TBODY'); - - return !!(closestCell && (0, _element.hasClass)(closestCell, 'htCommentCell') && (0, _element.closest)(closestCell, [this.hot.rootElement])); - } - - /** - * Check if the event target is a comment textarea. - * - * @param {Event} event DOM event. - * @returns {Boolean} - */ - - }, { - key: 'targetIsCommentTextArea', - value: function targetIsCommentTextArea(event) { - return this.editor.getInputElement() === event.target; - } - - /** - * Set a comment for a cell according to the previously set range (see {@link Comments#setRange}). - * - * @param {String} value Comment contents. - */ - - }, { - key: 'setComment', - value: function setComment(value) { - if (!this.range.from) { - throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())'); - } - var editorValue = this.editor.getValue(); - var comment = ''; - - if (value != null) { - comment = value; - } else if (editorValue != null) { - comment = editorValue; - } - - var row = this.range.from.row; - var col = this.range.from.col; - - this.updateCommentMeta(row, col, _defineProperty({}, META_COMMENT_VALUE, comment)); - this.hot.render(); - } - - /** - * Set a comment for a cell. - * - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {String} value Comment contents. - */ - - }, { - key: 'setCommentAtCell', - value: function setCommentAtCell(row, col, value) { - this.setRange({ - from: new _src.CellCoords(row, col) - }); - this.setComment(value); - } - - /** - * Remove a comment from a cell according to previously set range (see {@link Comments#setRange}). - * - * @param {Boolean} [forceRender = true] If set to `true`, the table will be re-rendered at the end of the operation. - */ - - }, { - key: 'removeComment', - value: function removeComment() { - var forceRender = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - - if (!this.range.from) { - throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())'); - } - - this.hot.setCellMeta(this.range.from.row, this.range.from.col, META_COMMENT, void 0); - - if (forceRender) { - this.hot.render(); - } - - this.hide(); - } - - /** - * Remove comment from a cell. - * - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param {Boolean} [forceRender = true] If `true`, the table will be re-rendered at the end of the operation. - */ - - }, { - key: 'removeCommentAtCell', - value: function removeCommentAtCell(row, col) { - var forceRender = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; - - this.setRange({ - from: new _src.CellCoords(row, col) - }); - this.removeComment(forceRender); - } - - /** - * Get comment from a cell at the predefined range. - */ - - }, { - key: 'getComment', - value: function getComment() { - var row = this.range.from.row; - var column = this.range.from.col; - - return this.getCommentMeta(row, column, META_COMMENT_VALUE); - } - - /** - * Get comment from a cell at the provided coordinates. - * - * @param {Number} row Visual row index. - * @param {Number} column Visual column index. - */ - - }, { - key: 'getCommentAtCell', - value: function getCommentAtCell(row, column) { - return this.getCommentMeta(row, column, META_COMMENT_VALUE); - } - - /** - * Show the comment editor accordingly to the previously set range (see {@link Comments#setRange}). - * - * @returns {Boolean} Returns `true` if comment editor was shown. - */ - - }, { - key: 'show', - value: function show() { - if (!this.range.from) { - throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())'); - } - var meta = this.hot.getCellMeta(this.range.from.row, this.range.from.col); - - this.refreshEditor(true); - this.editor.setValue(meta[META_COMMENT] ? meta[META_COMMENT][META_COMMENT_VALUE] : null || ''); - - if (this.editor.hidden) { - this.editor.show(); - } - - return true; - } - - /** - * Show comment editor according to cell coordinates. - * - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @returns {Boolean} Returns `true` if comment editor was shown. - */ - - }, { - key: 'showAtCell', - value: function showAtCell(row, col) { - this.setRange({ - from: new _src.CellCoords(row, col) - }); - - return this.show(); - } - - /** - * Hide the comment editor. - */ - - }, { - key: 'hide', - value: function hide() { - if (!this.editor.hidden) { - this.editor.hide(); - } - } - - /** - * Refresh comment editor position and styling. - * - * @param {Boolean} [force=false] If `true` then recalculation will be forced. - */ - - }, { - key: 'refreshEditor', - value: function refreshEditor() { - var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (!force && (!this.range.from || !this.editor.isVisible())) { - return; - } - var scrollableElement = (0, _element.getScrollableElement)(this.hot.view.wt.wtTable.TABLE); - var TD = this.hot.view.wt.wtTable.getCell(this.range.from); - var row = this.range.from.row; - var column = this.range.from.col; - var cellOffset = (0, _element.offset)(TD); - var lastColWidth = this.hot.view.wt.wtTable.getStretchedColumnWidth(column); - var cellTopOffset = cellOffset.top < 0 ? 0 : cellOffset.top; - var cellLeftOffset = cellOffset.left; - - if (this.hot.view.wt.wtViewport.hasVerticalScroll() && scrollableElement !== window) { - cellTopOffset -= this.hot.view.wt.wtOverlays.topOverlay.getScrollPosition(); - } - - if (this.hot.view.wt.wtViewport.hasHorizontalScroll() && scrollableElement !== window) { - cellLeftOffset -= this.hot.view.wt.wtOverlays.leftOverlay.getScrollPosition(); - } - - var x = cellLeftOffset + lastColWidth; - var y = cellTopOffset; - - var commentStyle = this.getCommentMeta(row, column, META_STYLE); - var readOnly = this.getCommentMeta(row, column, META_READONLY); - - if (commentStyle) { - this.editor.setSize(commentStyle.width, commentStyle.height); - } else { - this.editor.resetSize(); - } - - this.editor.setReadOnlyState(readOnly); - - this.editor.setPosition(x, y); - } - - /** - * Check if there is a comment for selected range. - * - * @private - * @returns {Boolean} - */ - - }, { - key: 'checkSelectionCommentsConsistency', - value: function checkSelectionCommentsConsistency() { - var selected = this.hot.getSelectedRange(); - - if (!selected) { - return false; - } - var hasComment = false; - var cell = selected.from; // IN EXCEL THERE IS COMMENT ONLY FOR TOP LEFT CELL IN SELECTION - - if (this.getCommentMeta(cell.row, cell.col, META_COMMENT_VALUE)) { - hasComment = true; - } - - return hasComment; - } - - /** - * Set or update the comment-related cell meta. - * - * @param {Number} row Visual row index. - * @param {Number} column Visual column index. - * @param {Object} metaObject Object defining all the comment-related meta information. - */ - - }, { - key: 'updateCommentMeta', - value: function updateCommentMeta(row, column, metaObject) { - var oldComment = this.hot.getCellMeta(row, column)[META_COMMENT]; - var newComment = void 0; - - if (oldComment) { - newComment = (0, _object.deepClone)(oldComment); - (0, _object.deepExtend)(newComment, metaObject); - } else { - newComment = metaObject; - } - - this.hot.setCellMeta(row, column, META_COMMENT, newComment); - } - - /** - * Get the comment related meta information. - * - * @param {Number} row Visual row index. - * @param {Number} column Visual column index. - * @param {String} property Cell meta property. - * @returns {Mixed} - */ - - }, { - key: 'getCommentMeta', - value: function getCommentMeta(row, column, property) { - var cellMeta = this.hot.getCellMeta(row, column); - - if (!cellMeta[META_COMMENT]) { - return void 0; - } - - return cellMeta[META_COMMENT][property]; - } - - /** - * `mousedown` event callback. - * - * @private - * @param {MouseEvent} event The `mousedown` event. - */ - - }, { - key: 'onMouseDown', - value: function onMouseDown(event) { - this.mouseDown = true; - - if (!this.hot.view || !this.hot.view.wt) { - return; - } - - if (!this.contextMenuEvent && !this.targetIsCommentTextArea(event)) { - var eventCell = (0, _element.closest)(event.target, 'TD', 'TBODY'); - var coordinates = null; - - if (eventCell) { - coordinates = this.hot.view.wt.wtTable.getCoords(eventCell); - } - - if (!eventCell || this.range.from && coordinates && (this.range.from.row !== coordinates.row || this.range.from.col !== coordinates.col)) { - this.hide(); - } - } - this.contextMenuEvent = false; - } - - /** - * `mouseover` event callback. - * - * @private - * @param {MouseEvent} event The `mouseover` event. - */ - - }, { - key: 'onMouseOver', - value: function onMouseOver(event) { - var priv = privatePool.get(this); - - priv.cellBelowCursor = document.elementFromPoint(event.clientX, event.clientY); - - if (this.mouseDown || this.editor.isFocused() || (0, _element.hasClass)(event.target, 'wtBorder') || priv.cellBelowCursor !== event.target || !this.editor) { - return; - } - - if (this.targetIsCellWithComment(event)) { - var coordinates = this.hot.view.wt.wtTable.getCoords(event.target); - var range = { - from: new _src.CellCoords(coordinates.row, coordinates.col) - }; - - this.displaySwitch.show(range); - } else if ((0, _element.isChildOf)(event.target, document) && !this.targetIsCommentTextArea(event)) { - this.displaySwitch.hide(); - } - } - - /** - * `mouseup` event callback. - * - * @private - * @param {MouseEvent} event The `mouseup` event. - */ - - }, { - key: 'onMouseUp', - value: function onMouseUp(event) { - this.mouseDown = false; - } - - /** * - * The `afterRenderer` hook callback.. - * - * @private - * @param {HTMLTableCellElement} TD The rendered `TD` element. - * @param {Object} cellProperties The rendered cell's property object. - */ - - }, { - key: 'onAfterRenderer', - value: function onAfterRenderer(TD, cellProperties) { - if (cellProperties[META_COMMENT] && cellProperties[META_COMMENT][META_COMMENT_VALUE]) { - (0, _element.addClass)(TD, cellProperties.commentedCellClassName); - } - } - - /** - * `blur` event callback for the comment editor. - * - * @private - * @param {Event} event The `blur` event. - */ - - }, { - key: 'onEditorBlur', - value: function onEditorBlur(event) { - this.setComment(); - } - - /** - * `mousedown` hook. Along with `onEditorMouseUp` used to simulate the textarea resizing event. - * - * @private - * @param {MouseEvent} event The `mousedown` event. - */ - - }, { - key: 'onEditorMouseDown', - value: function onEditorMouseDown(event) { - var priv = privatePool.get(this); - - priv.tempEditorDimensions = { - width: (0, _element.outerWidth)(event.target), - height: (0, _element.outerHeight)(event.target) - }; - } - - /** - * `mouseup` hook. Along with `onEditorMouseDown` used to simulate the textarea resizing event. - * - * @private - * @param {MouseEvent} event The `mouseup` event. - */ - - }, { - key: 'onEditorMouseUp', - value: function onEditorMouseUp(event) { - var priv = privatePool.get(this); - var currentWidth = (0, _element.outerWidth)(event.target); - var currentHeight = (0, _element.outerHeight)(event.target); - - if (currentWidth !== priv.tempEditorDimensions.width + 1 || currentHeight !== priv.tempEditorDimensions.height + 2) { - this.updateCommentMeta(this.range.from.row, this.range.from.col, _defineProperty({}, META_STYLE, { - width: currentWidth, - height: currentHeight - })); - } - } - - /** - * Context Menu's "Add comment" callback. Results in showing the comment editor. - * - * @private - */ - - }, { - key: 'onContextMenuAddComment', - value: function onContextMenuAddComment() { - var _this4 = this; - - this.displaySwitch.cancelHiding(); - var coords = this.hot.getSelectedRange(); - - this.contextMenuEvent = true; - this.setRange({ - from: coords.from - }); - this.show(); - setTimeout(function () { - if (_this4.hot) { - _this4.hot.deselectCell(); - _this4.editor.focus(); - } - }, 10); - } - - /** - * Context Menu's "remove comment" callback. - * - * @private - * @param {Object} selection The current selection. - */ - - }, { - key: 'onContextMenuRemoveComment', - value: function onContextMenuRemoveComment(selection) { - this.contextMenuEvent = true; - - for (var i = selection.start.row; i <= selection.end.row; i++) { - for (var j = selection.start.col; j <= selection.end.col; j++) { - this.removeCommentAtCell(i, j, false); - } - } - - this.hot.render(); - } - - /** - * Context Menu's "make comment read-only" callback. - * - * @private - * @param {Object} selection The current selection. - */ - - }, { - key: 'onContextMenuMakeReadOnly', - value: function onContextMenuMakeReadOnly(selection) { - this.contextMenuEvent = true; - - for (var i = selection.start.row; i <= selection.end.row; i++) { - for (var j = selection.start.col; j <= selection.end.col; j++) { - var currentState = !!this.getCommentMeta(i, j, META_READONLY); - - this.updateCommentMeta(i, j, _defineProperty({}, META_READONLY, !currentState)); - } - } - } - - /** - * Add Comments plugin options to the Context Menu. - * - * @private - * @param {Object} defaultOptions - */ - - }, { - key: 'addToContextMenu', - value: function addToContextMenu(defaultOptions) { - var _this5 = this; - - defaultOptions.items.push({ - name: '---------' - }, { - key: 'commentsAddEdit', - name: function name() { - return _this5.checkSelectionCommentsConsistency() ? 'Edit comment' : 'Add comment'; - }, - callback: function callback() { - return _this5.onContextMenuAddComment(); - }, - disabled: function disabled() { - return !(this.getSelected() && !this.selection.selectedHeader.corner); - } - }, { - key: 'commentsRemove', - name: function name() { - return 'Delete comment'; - }, - - callback: function callback(key, selection) { - return _this5.onContextMenuRemoveComment(selection); - }, - disabled: function disabled() { - return _this5.hot.selection.selectedHeader.corner; - } - }, { - key: 'commentsReadOnly', - name: function name() { - var _this6 = this; - - var label = 'Read only comment'; - var hasProperty = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), function (row, col) { - var readOnlyProperty = _this6.getCellMeta(row, col)[META_COMMENT]; - if (readOnlyProperty) { - readOnlyProperty = readOnlyProperty[META_READONLY]; - } - - if (readOnlyProperty) { - return true; - } - }); - - if (hasProperty) { - label = (0, _utils.markLabelAsSelected)(label); - } - - return label; - }, - - callback: function callback(key, selection) { - return _this5.onContextMenuMakeReadOnly(selection); - }, - disabled: function disabled() { - return _this5.hot.selection.selectedHeader.corner || !_this5.checkSelectionCommentsConsistency(); - } - }); - } - - /** - * Get `displayDelay` setting of comment plugin. - * - * @returns {Number|undefined} - */ - - }, { - key: 'getDisplayDelaySetting', - value: function getDisplayDelaySetting() { - var commentSetting = this.hot.getSettings().comments; - - if ((0, _object.isObject)(commentSetting)) { - return commentSetting.displayDelay; - } - - return void 0; - } - - /** - * `afterBeginEditing` hook callback. - * - * @private - * @param {Number} row Visual row index of the currently edited cell. - * @param {Number} column Visual column index of the currently edited cell. - */ - - }, { - key: 'onAfterBeginEditing', - value: function onAfterBeginEditing(row, column) { - this.hide(); - } - - /** - * Destroy plugin instance. - */ - - }, { - key: 'destroy', - value: function destroy() { - if (this.editor) { - this.editor.destroy(); - } - - if (this.displaySwitch) { - this.displaySwitch.destroy(); - } - - _get(Comments.prototype.__proto__ || Object.getPrototypeOf(Comments.prototype), 'destroy', this).call(this); - } - }]); - - return Comments; -}(_base2.default); - -(0, _plugins.registerPlugin)('comments', Comments); - -exports.default = Comments; - -/***/ }), -/* 256 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * Comment editor for the Comments plugin. - * - * @class CommentEditor - * @plugin Comments - */ -var CommentEditor = function () { - _createClass(CommentEditor, null, [{ - key: 'CLASS_EDITOR_CONTAINER', - get: function get() { - return 'htCommentsContainer'; - } - }, { - key: 'CLASS_EDITOR', - get: function get() { - return 'htComments'; - } - }, { - key: 'CLASS_INPUT', - get: function get() { - return 'htCommentTextArea'; - } - }, { - key: 'CLASS_CELL', - get: function get() { - return 'htCommentCell'; - } - }]); - - function CommentEditor() { - _classCallCheck(this, CommentEditor); - - this.editor = this.createEditor(); - this.editorStyle = this.editor.style; - - this.hidden = true; - - this.hide(); - } - - /** - * Set position of the comments editor according to the provided x and y coordinates. - * - * @param {Number} x X position (in pixels). - * @param {Number} y Y position (in pixels). - */ - - - _createClass(CommentEditor, [{ - key: 'setPosition', - value: function setPosition(x, y) { - this.editorStyle.left = x + 'px'; - this.editorStyle.top = y + 'px'; - } - - /** - * Set the editor size according to the provided arguments. - * - * @param {Number} width Width in pixels. - * @param {Number} height Height in pixels. - */ - - }, { - key: 'setSize', - value: function setSize(width, height) { - if (width && height) { - var input = this.getInputElement(); - - input.style.width = width + 'px'; - input.style.height = height + 'px'; - } - } - - /** - * Reset the editor size to its initial state. - */ - - }, { - key: 'resetSize', - value: function resetSize() { - var input = this.getInputElement(); - - input.style.width = ''; - input.style.height = ''; - } - - /** - * Set the read-only state for the comments editor. - * - * @param {Boolean} state The new read only state. - */ - - }, { - key: 'setReadOnlyState', - value: function setReadOnlyState(state) { - var input = this.getInputElement(); - - input.readOnly = state; - } - - /** - * Show the comments editor. - */ - - }, { - key: 'show', - value: function show() { - this.editorStyle.display = 'block'; - this.hidden = false; - } - - /** - * Hide the comments editor. - */ - - }, { - key: 'hide', - value: function hide() { - this.editorStyle.display = 'none'; - this.hidden = true; - } - - /** - * Checks if the editor is visible. - * - * @returns {Boolean} - */ - - }, { - key: 'isVisible', - value: function isVisible() { - return this.editorStyle.display === 'block'; - } - - /** - * Set the comment value. - * - * @param {String} [value] The value to use. - */ - - }, { - key: 'setValue', - value: function setValue() { - var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - - value = value || ''; - this.getInputElement().value = value; - } - - /** - * Get the comment value. - * - * @returns {String} - */ - - }, { - key: 'getValue', - value: function getValue() { - return this.getInputElement().value; - } - - /** - * Checks if the comment input element is focused. - * - * @returns {Boolean} - */ - - }, { - key: 'isFocused', - value: function isFocused() { - return document.activeElement === this.getInputElement(); - } - - /** - * Focus the comments input element. - */ - - }, { - key: 'focus', - value: function focus() { - this.getInputElement().focus(); - } - - /** - * Create the `textarea` to be used as a comments editor. - * - * @returns {HTMLElement} - */ - - }, { - key: 'createEditor', - value: function createEditor() { - var container = document.querySelector('.' + CommentEditor.CLASS_EDITOR_CONTAINER); - var editor = void 0; - var textArea = void 0; - - if (!container) { - container = document.createElement('div'); - (0, _element.addClass)(container, CommentEditor.CLASS_EDITOR_CONTAINER); - document.body.appendChild(container); - } - editor = document.createElement('div'); - (0, _element.addClass)(editor, CommentEditor.CLASS_EDITOR); - - textArea = document.createElement('textarea'); - (0, _element.addClass)(textArea, CommentEditor.CLASS_INPUT); - - editor.appendChild(textArea); - container.appendChild(editor); - - return editor; - } - - /** - * Get the input element. - * - * @returns {HTMLElement} - */ - - }, { - key: 'getInputElement', - value: function getInputElement() { - return this.editor.querySelector('.' + CommentEditor.CLASS_INPUT); - } - - /** - * Destroy the comments editor. - */ - - }, { - key: 'destroy', - value: function destroy() { - this.editor.parentNode.removeChild(this.editor); - this.editor = null; - this.editorStyle = null; - } - }]); - - return CommentEditor; -}(); - -exports.default = CommentEditor; - -/***/ }), -/* 257 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _function = __webpack_require__(35); - -var _object = __webpack_require__(1); - -var _localHooks = __webpack_require__(87); - -var _localHooks2 = _interopRequireDefault(_localHooks); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var DEFAULT_DISPLAY_DELAY = 250; -var DEFAULT_HIDE_DELAY = 250; - -/** - * Display switch for the Comments plugin. Manages the time of delayed displaying / hiding comments. - * - * @class DisplaySwitch - * @plugin Comments - */ - -var DisplaySwitch = function () { - function DisplaySwitch(displayDelay) { - _classCallCheck(this, DisplaySwitch); - - /** - * Flag to determine if comment can be showed or hidden. State `true` mean that last performed action - * was an attempt to show comment element. State `false` mean that it was attempt to hide comment element. - * - * @type {Boolean} - */ - this.wasLastActionShow = true; - /** - * Show comment after predefined delay. It keeps reference to immutable `debounce` function. - * - * @type {Function} - */ - this.showDebounced = null; - /** - * Reference to timer, run by `setTimeout`, which is hiding comment - * - * @type {Number} - */ - this.hidingTimer = null; - - this.updateDelay(displayDelay); - } - - /** - * Responsible for hiding comment after proper delay. - */ - - - _createClass(DisplaySwitch, [{ - key: 'hide', - value: function hide() { - var _this = this; - - this.wasLastActionShow = false; - - this.hidingTimer = setTimeout(function () { - if (_this.wasLastActionShow === false) { - _this.runLocalHooks('hide'); - } - }, DEFAULT_HIDE_DELAY); - } - - /** - * Responsible for showing comment after proper delay. - * - * @param {Object} range Coordinates of selected cell. - */ - - }, { - key: 'show', - value: function show(range) { - this.wasLastActionShow = true; - this.showDebounced(range); - } - }, { - key: 'cancelHiding', - - - /** - * Cancel hiding comment. - */ - value: function cancelHiding() { - this.wasLastActionShow = true; - - clearTimeout(this.hidingTimer); - this.hidingTimer = null; - } - - /** - * Update the switch settings. - * - * @param {Number} displayDelay Delay of showing the comments (in milliseconds). - */ - - }, { - key: 'updateDelay', - value: function updateDelay() { - var _this2 = this; - - var displayDelay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_DISPLAY_DELAY; - - this.showDebounced = (0, _function.debounce)(function (range) { - if (_this2.wasLastActionShow) { - _this2.runLocalHooks('show', range.from.row, range.from.col); - } - }, displayDelay); - } - - /** - * Destroy the switcher. - */ - - }, { - key: 'destroy', - value: function destroy() { - this.clearLocalHooks(); - } - }]); - - return DisplaySwitch; -}(); - -(0, _object.mixin)(DisplaySwitch, _localHooks2.default); - -exports.default = DisplaySwitch; - -/***/ }), -/* 258 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 259 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _array = __webpack_require__(2); - -var _commandExecutor = __webpack_require__(260); - -var _commandExecutor2 = _interopRequireDefault(_commandExecutor); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _itemsFactory = __webpack_require__(261); - -var _itemsFactory2 = _interopRequireDefault(_itemsFactory); - -var _menu = __webpack_require__(273); - -var _menu2 = _interopRequireDefault(_menu); - -var _plugins = __webpack_require__(5); - -var _event = __webpack_require__(8); - -var _element = __webpack_require__(0); - -var _predefinedItems = __webpack_require__(88); - -__webpack_require__(275); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -_pluginHooks2.default.getSingleton().register('afterContextMenuDefaultOptions'); -_pluginHooks2.default.getSingleton().register('afterContextMenuShow'); -_pluginHooks2.default.getSingleton().register('afterContextMenuHide'); -_pluginHooks2.default.getSingleton().register('afterContextMenuExecute'); - -/** - * @description - * This plugin creates the Handsontable Context Menu. It allows to create a new row or - * column at any place in the grid among [other features](http://docs.handsontable.com/demo-context-menu.html). - * Possible values: - * * `true` (to enable default options), - * * `false` (to disable completely) - * - * or array of any available strings: - * * `["row_above", "row_below", "col_left", "col_right", - * "remove_row", "remove_col", "---------", "undo", "redo"]`. - * - * See [the context menu demo](http://docs.handsontable.com/demo-context-menu.html) for examples. - * - * @example - * ```js - * ... - * // as a boolean - * contextMenu: true - * ... - * // as a array - * contextMenu: ['row_above', 'row_below', '---------', 'undo', 'redo'] - * ... - * ``` - * - * @plugin ContextMenu - */ - -var ContextMenu = function (_BasePlugin) { - _inherits(ContextMenu, _BasePlugin); - - _createClass(ContextMenu, null, [{ - key: 'DEFAULT_ITEMS', - - /** - * Default menu items order when `contextMenu` is enabled by `true`. - * - * @returns {Array} - */ - get: function get() { - return [_predefinedItems.ROW_ABOVE, _predefinedItems.ROW_BELOW, _predefinedItems.SEPARATOR, _predefinedItems.COLUMN_LEFT, _predefinedItems.COLUMN_RIGHT, _predefinedItems.SEPARATOR, _predefinedItems.REMOVE_ROW, _predefinedItems.REMOVE_COLUMN, _predefinedItems.SEPARATOR, _predefinedItems.UNDO, _predefinedItems.REDO, _predefinedItems.SEPARATOR, _predefinedItems.READ_ONLY, _predefinedItems.SEPARATOR, _predefinedItems.ALIGNMENT]; - } - }]); - - function ContextMenu(hotInstance) { - _classCallCheck(this, ContextMenu); - - /** - * Instance of {@link EventManager}. - * - * @type {EventManager} - */ - var _this = _possibleConstructorReturn(this, (ContextMenu.__proto__ || Object.getPrototypeOf(ContextMenu)).call(this, hotInstance)); - - _this.eventManager = new _eventManager2.default(_this); - /** - * Instance of {@link CommandExecutor}. - * - * @type {CommandExecutor} - */ - _this.commandExecutor = new _commandExecutor2.default(_this.hot); - /** - * Instance of {@link ItemsFactory}. - * - * @type {ItemsFactory} - */ - _this.itemsFactory = null; - /** - * Instance of {@link Menu}. - * - * @type {Menu} - */ - _this.menu = null; - return _this; - } - - /** - * Check if the plugin is enabled in the Handsontable settings. - * - * @returns {Boolean} - */ - - - _createClass(ContextMenu, [{ - key: 'isEnabled', - value: function isEnabled() { - return this.hot.getSettings().contextMenu; - } - - /** - * Enable plugin for this Handsontable instance. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this2 = this; - - if (this.enabled) { - return; - } - this.itemsFactory = new _itemsFactory2.default(this.hot, ContextMenu.DEFAULT_ITEMS); - - var settings = this.hot.getSettings().contextMenu; - var predefinedItems = { - items: this.itemsFactory.getItems(settings) - }; - this.registerEvents(); - - if (typeof settings.callback === 'function') { - this.commandExecutor.setCommonCallback(settings.callback); - } - _get(ContextMenu.prototype.__proto__ || Object.getPrototypeOf(ContextMenu.prototype), 'enablePlugin', this).call(this); - - this.callOnPluginsReady(function () { - _this2.hot.runHooks('afterContextMenuDefaultOptions', predefinedItems); - - _this2.itemsFactory.setPredefinedItems(predefinedItems.items); - var menuItems = _this2.itemsFactory.getItems(settings); - - _this2.menu = new _menu2.default(_this2.hot, { - className: 'htContextMenu', - keepInViewport: true - }); - _this2.hot.runHooks('beforeContextMenuSetItems', menuItems); - - _this2.menu.setMenuItems(menuItems); - - _this2.menu.addLocalHook('afterOpen', function () { - return _this2.onMenuAfterOpen(); - }); - _this2.menu.addLocalHook('afterClose', function () { - return _this2.onMenuAfterClose(); - }); - _this2.menu.addLocalHook('executeCommand', function () { - for (var _len = arguments.length, params = Array(_len), _key = 0; _key < _len; _key++) { - params[_key] = arguments[_key]; - } - - return _this2.executeCommand.apply(_this2, params); - }); - - // Register all commands. Predefined and added by user or by plugins - (0, _array.arrayEach)(menuItems, function (command) { - return _this2.commandExecutor.registerCommand(command.key, command); - }); - }); - } - - /** - * Updates the plugin to use the latest options you have specified. - */ - - }, { - key: 'updatePlugin', - value: function updatePlugin() { - this.disablePlugin(); - this.enablePlugin(); - - _get(ContextMenu.prototype.__proto__ || Object.getPrototypeOf(ContextMenu.prototype), 'updatePlugin', this).call(this); - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - this.close(); - - if (this.menu) { - this.menu.destroy(); - this.menu = null; - } - _get(ContextMenu.prototype.__proto__ || Object.getPrototypeOf(ContextMenu.prototype), 'disablePlugin', this).call(this); - } - - /** - * Register dom listeners. - * - * @private - */ - - }, { - key: 'registerEvents', - value: function registerEvents() { - var _this3 = this; - - this.eventManager.addEventListener(this.hot.rootElement, 'contextmenu', function (event) { - return _this3.onContextMenu(event); - }); - } - - /** - * Open menu and re-position it based on dom event object. - * - * @param {Event} event The event object. - */ - - }, { - key: 'open', - value: function open(event) { - if (!this.menu) { - return; - } - this.menu.open(); - this.menu.setPosition({ - top: parseInt((0, _event.pageY)(event), 10) - (0, _element.getWindowScrollTop)(), - left: parseInt((0, _event.pageX)(event), 10) - (0, _element.getWindowScrollLeft)() - }); - - // ContextMenu is not detected HotTableEnv correctly because is injected outside hot-table - this.menu.hotMenu.isHotTableEnv = this.hot.isHotTableEnv; - // Handsontable.eventManager.isHotTableEnv = this.hot.isHotTableEnv; - } - - /** - * Close menu. - */ - - }, { - key: 'close', - value: function close() { - if (!this.menu) { - return; - } - this.menu.close(); - } - - /** - * Execute context menu command. - * - * You can execute all predefined commands: - * * `'row_above'` - Insert row above - * * `'row_below'` - Insert row below - * * `'col_left'` - Insert column on the left - * * `'col_right'` - Insert column on the right - * * `'clear_column'` - Clear selected column - * * `'remove_row'` - Remove row - * * `'remove_col'` - Remove column - * * `'undo'` - Undo last action - * * `'redo'` - Redo last action - * * `'make_read_only'` - Make cell read only - * * `'alignment:left'` - Alignment to the left - * * `'alignment:top'` - Alignment to the top - * * `'alignment:right'` - Alignment to the right - * * `'alignment:bottom'` - Alignment to the bottom - * * `'alignment:middle'` - Alignment to the middle - * * `'alignment:center'` - Alignment to the center (justify) - * - * Or you can execute command registered in settings where `key` is your command name. - * - * @param {String} commandName - * @param {*} params - */ - - }, { - key: 'executeCommand', - value: function executeCommand() { - for (var _len2 = arguments.length, params = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - params[_key2] = arguments[_key2]; - } - - this.commandExecutor.execute.apply(this.commandExecutor, params); - } - - /** - * On context menu listener. - * - * @private - * @param {Event} event - */ - - }, { - key: 'onContextMenu', - value: function onContextMenu(event) { - var settings = this.hot.getSettings(); - var showRowHeaders = settings.rowHeaders; - var showColHeaders = settings.colHeaders; - - function isValidElement(element) { - return element.nodeName === 'TD' || element.parentNode.nodeName === 'TD'; - } - // if event is from hot-table we must get web component element not element inside him - var element = event.realTarget; - this.close(); - - if ((0, _element.hasClass)(element, 'handsontableInput')) { - return; - } - - event.preventDefault(); - (0, _event.stopPropagation)(event); - - if (!(showRowHeaders || showColHeaders)) { - if (!isValidElement(element) && !((0, _element.hasClass)(element, 'current') && (0, _element.hasClass)(element, 'wtBorder'))) { - return; - } - } - - this.open(event); - } - - /** - * On menu after open listener. - * - * @private - */ - - }, { - key: 'onMenuAfterOpen', - value: function onMenuAfterOpen() { - this.hot.runHooks('afterContextMenuShow', this); - } - - /** - * On menu after close listener. - * - * @private - */ - - }, { - key: 'onMenuAfterClose', - value: function onMenuAfterClose() { - this.hot.listen(); - this.hot.runHooks('afterContextMenuHide', this); - } - - /** - * Destroy instance. - */ - - }, { - key: 'destroy', - value: function destroy() { - this.close(); - - if (this.menu) { - this.menu.destroy(); - } - _get(ContextMenu.prototype.__proto__ || Object.getPrototypeOf(ContextMenu.prototype), 'destroy', this).call(this); - } - }]); - - return ContextMenu; -}(_base2.default); - -ContextMenu.SEPARATOR = { - name: _predefinedItems.SEPARATOR -}; - -(0, _plugins.registerPlugin)('contextMenu', ContextMenu); - -exports.default = ContextMenu; - -/***/ }), -/* 260 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _array = __webpack_require__(2); - -var _object = __webpack_require__(1); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * Command executor for ContextMenu. - * - * @class CommandExecutor - * @plugin ContextMenu - */ -var CommandExecutor = function () { - function CommandExecutor(hotInstance) { - _classCallCheck(this, CommandExecutor); - - this.hot = hotInstance; - this.commands = {}; - this.commonCallback = null; - } - - /** - * Register command. - * - * @param {String} name Command name. - * @param {Object} commandDescriptor Command descriptor object with properties like `key` (command id), - * `callback` (task to execute), `name` (command name), `disabled` (command availability). - */ - - - _createClass(CommandExecutor, [{ - key: 'registerCommand', - value: function registerCommand(name, commandDescriptor) { - this.commands[name] = commandDescriptor; - } - - /** - * Set common callback which will be trigger on every executed command. - * - * @param {Function} callback Function which will be fired on every command execute. - */ - - }, { - key: 'setCommonCallback', - value: function setCommonCallback(callback) { - this.commonCallback = callback; - } - - /** - * Execute command by its name. - * - * @param {String} commandName Command id. - * @param {*} params Arguments passed to command task. - */ - - }, { - key: 'execute', - value: function execute(commandName) { - var _this = this; - - for (var _len = arguments.length, params = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - params[_key - 1] = arguments[_key]; - } - - var commandSplit = commandName.split(':'); - commandName = commandSplit[0]; - - var subCommandName = commandSplit.length === 2 ? commandSplit[1] : null; - var command = this.commands[commandName]; - - if (!command) { - throw new Error('Menu command \'' + commandName + '\' not exists.'); - } - if (subCommandName && command.submenu) { - command = findSubCommand(subCommandName, command.submenu.items); - } - if (command.disabled === true) { - return; - } - if (typeof command.disabled == 'function' && command.disabled.call(this.hot) === true) { - return; - } - if ((0, _object.hasOwnProperty)(command, 'submenu')) { - return; - } - var callbacks = []; - - if (typeof command.callback === 'function') { - callbacks.push(command.callback); - } - if (typeof this.commonCallback === 'function') { - callbacks.push(this.commonCallback); - } - params.unshift(commandSplit.join(':')); - (0, _array.arrayEach)(callbacks, function (callback) { - return callback.apply(_this.hot, params); - }); - } - }]); - - return CommandExecutor; -}(); - -function findSubCommand(subCommandName, subCommands) { - var command = void 0; - - (0, _array.arrayEach)(subCommands, function (cmd) { - var cmds = cmd.key ? cmd.key.split(':') : null; - - if (Array.isArray(cmds) && cmds[1] === subCommandName) { - command = cmd; - - return false; - } - }); - - return command; -} - -exports.default = CommandExecutor; - -/***/ }), -/* 261 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _object = __webpack_require__(1); - -var _array = __webpack_require__(2); - -var _predefinedItems = __webpack_require__(88); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * Predefined items class factory for menu items. - * - * @class ItemsFactory - * @plugin ContextMenu - */ -var ItemsFactory = function () { - function ItemsFactory(hotInstance) { - var orderPattern = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - _classCallCheck(this, ItemsFactory); - - this.hot = hotInstance; - this.predefinedItems = (0, _predefinedItems.predefinedItems)(); - this.defaultOrderPattern = orderPattern; - } - - /** - * Set predefined items. - * - * @param {Array} predefinedItems Array of predefined items. - */ - - - _createClass(ItemsFactory, [{ - key: 'setPredefinedItems', - value: function setPredefinedItems(predefinedItems) { - var _this = this; - - var items = {}; - - this.defaultOrderPattern.length = 0; - - (0, _object.objectEach)(predefinedItems, function (value, key) { - var menuItemKey = ''; - - if (value.name === _predefinedItems.SEPARATOR) { - items[_predefinedItems.SEPARATOR] = value; - menuItemKey = _predefinedItems.SEPARATOR; - - // Menu item added as a property to array - } else if (isNaN(parseInt(key, 10))) { - value.key = value.key === void 0 ? key : value.key; - items[key] = value; - menuItemKey = value.key; - } else { - items[value.key] = value; - menuItemKey = value.key; - } - _this.defaultOrderPattern.push(menuItemKey); - }); - this.predefinedItems = items; - } - - /** - * Get all menu items based on pattern. - * - * @param {Array|Object|Boolean} pattern Pattern which you can define by displaying menu items order. If `true` default - * pattern will be used. - * @returns {Array} - */ - - }, { - key: 'getItems', - value: function getItems() { - var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - return _getItems(pattern, this.defaultOrderPattern, this.predefinedItems); - } - }]); - - return ItemsFactory; -}(); - -function _getItems() { - var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - var defaultPattern = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - var items = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - var result = []; - - if (pattern && pattern.items) { - pattern = pattern.items; - } else if (!Array.isArray(pattern)) { - pattern = defaultPattern; - } - if ((0, _object.isObject)(pattern)) { - (0, _object.objectEach)(pattern, function (value, key) { - var item = items[typeof value === 'string' ? value : key]; - - if (!item) { - item = value; - } - if ((0, _object.isObject)(value)) { - (0, _object.extend)(item, value); - } else if (typeof item === 'string') { - item = { name: item }; - } - if (item.key === void 0) { - item.key = key; - } - result.push(item); - }); - } else { - (0, _array.arrayEach)(pattern, function (name, key) { - var item = items[name]; - - // Item deleted from settings `allowInsertRow: false` etc. - if (!item && _predefinedItems.ITEMS.indexOf(name) >= 0) { - return; - } - if (!item) { - item = { name: name, key: '' + key }; - } - if ((0, _object.isObject)(name)) { - (0, _object.extend)(item, name); - } - if (item.key === void 0) { - item.key = key; - } - result.push(item); - }); - } - - return result; -} - -exports.default = ItemsFactory; - -/***/ }), -/* 262 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.KEY = undefined; -exports.default = alignmentItem; - -var _utils = __webpack_require__(19); - -var _separator = __webpack_require__(86); - -var KEY = exports.KEY = 'alignment'; - -function alignmentItem() { - return { - key: KEY, - name: 'Alignment', - disabled: function disabled() { - return !(this.getSelectedRange() && !this.selection.selectedHeader.corner); - }, - - submenu: { - items: [{ - key: KEY + ':left', - name: function name() { - var _this = this; - - var label = 'Left'; - var hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), function (row, col) { - var className = _this.getCellMeta(row, col).className; - - if (className && className.indexOf('htLeft') !== -1) { - return true; - } - }); - - if (hasClass) { - label = (0, _utils.markLabelAsSelected)(label); - } - - return label; - }, - callback: function callback() { - var _this2 = this; - - var range = this.getSelectedRange(); - var stateBefore = (0, _utils.getAlignmentClasses)(range, function (row, col) { - return _this2.getCellMeta(row, col).className; - }); - var type = 'horizontal'; - var alignment = 'htLeft'; - - this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment); - (0, _utils.align)(range, type, alignment, function (row, col) { - return _this2.getCellMeta(row, col); - }, function (row, col, key, value) { - return _this2.setCellMeta(row, col, key, value); - }); - this.render(); - }, - - disabled: false - }, { - key: KEY + ':center', - name: function name() { - var _this3 = this; - - var label = 'Center'; - var hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), function (row, col) { - var className = _this3.getCellMeta(row, col).className; - - if (className && className.indexOf('htCenter') !== -1) { - return true; - } - }); - - if (hasClass) { - label = (0, _utils.markLabelAsSelected)(label); - } - - return label; - }, - callback: function callback() { - var _this4 = this; - - var range = this.getSelectedRange(); - var stateBefore = (0, _utils.getAlignmentClasses)(range, function (row, col) { - return _this4.getCellMeta(row, col).className; - }); - var type = 'horizontal'; - var alignment = 'htCenter'; - - this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment); - (0, _utils.align)(range, type, alignment, function (row, col) { - return _this4.getCellMeta(row, col); - }, function (row, col, key, value) { - return _this4.setCellMeta(row, col, key, value); - }); - this.render(); - }, - - disabled: false - }, { - key: KEY + ':right', - name: function name() { - var _this5 = this; - - var label = 'Right'; - var hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), function (row, col) { - var className = _this5.getCellMeta(row, col).className; - - if (className && className.indexOf('htRight') !== -1) { - return true; - } - }); - - if (hasClass) { - label = (0, _utils.markLabelAsSelected)(label); - } - - return label; - }, - callback: function callback() { - var _this6 = this; - - var range = this.getSelectedRange(); - var stateBefore = (0, _utils.getAlignmentClasses)(range, function (row, col) { - return _this6.getCellMeta(row, col).className; - }); - var type = 'horizontal'; - var alignment = 'htRight'; - - this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment); - (0, _utils.align)(range, type, alignment, function (row, col) { - return _this6.getCellMeta(row, col); - }, function (row, col, key, value) { - return _this6.setCellMeta(row, col, key, value); - }); - this.render(); - }, - - disabled: false - }, { - key: KEY + ':justify', - name: function name() { - var _this7 = this; - - var label = 'Justify'; - var hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), function (row, col) { - var className = _this7.getCellMeta(row, col).className; - - if (className && className.indexOf('htJustify') !== -1) { - return true; - } - }); - - if (hasClass) { - label = (0, _utils.markLabelAsSelected)(label); - } - - return label; - }, - callback: function callback() { - var _this8 = this; - - var range = this.getSelectedRange(); - var stateBefore = (0, _utils.getAlignmentClasses)(range, function (row, col) { - return _this8.getCellMeta(row, col).className; - }); - var type = 'horizontal'; - var alignment = 'htJustify'; - - this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment); - (0, _utils.align)(range, type, alignment, function (row, col) { - return _this8.getCellMeta(row, col); - }, function (row, col, key, value) { - return _this8.setCellMeta(row, col, key, value); - }); - this.render(); - }, - - disabled: false - }, { - name: _separator.KEY - }, { - key: KEY + ':top', - name: function name() { - var _this9 = this; - - var label = 'Top'; - var hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), function (row, col) { - var className = _this9.getCellMeta(row, col).className; - - if (className && className.indexOf('htTop') !== -1) { - return true; - } - }); - - if (hasClass) { - label = (0, _utils.markLabelAsSelected)(label); - } - return label; - }, - callback: function callback() { - var _this10 = this; - - var range = this.getSelectedRange(); - var stateBefore = (0, _utils.getAlignmentClasses)(range, function (row, col) { - return _this10.getCellMeta(row, col).className; - }); - var type = 'vertical'; - var alignment = 'htTop'; - - this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment); - (0, _utils.align)(range, type, alignment, function (row, col) { - return _this10.getCellMeta(row, col); - }, function (row, col, key, value) { - return _this10.setCellMeta(row, col, key, value); - }); - this.render(); - }, - - disabled: false - }, { - key: KEY + ':middle', - name: function name() { - var _this11 = this; - - var label = 'Middle'; - var hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), function (row, col) { - var className = _this11.getCellMeta(row, col).className; - - if (className && className.indexOf('htMiddle') !== -1) { - return true; - } - }); - - if (hasClass) { - label = (0, _utils.markLabelAsSelected)(label); - } - - return label; - }, - callback: function callback() { - var _this12 = this; - - var range = this.getSelectedRange(); - var stateBefore = (0, _utils.getAlignmentClasses)(range, function (row, col) { - return _this12.getCellMeta(row, col).className; - }); - var type = 'vertical'; - var alignment = 'htMiddle'; - - this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment); - (0, _utils.align)(range, type, alignment, function (row, col) { - return _this12.getCellMeta(row, col); - }, function (row, col, key, value) { - return _this12.setCellMeta(row, col, key, value); - }); - this.render(); - }, - - disabled: false - }, { - key: KEY + ':bottom', - name: function name() { - var _this13 = this; - - var label = 'Bottom'; - var hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), function (row, col) { - var className = _this13.getCellMeta(row, col).className; - - if (className && className.indexOf('htBottom') !== -1) { - return true; - } - }); - - if (hasClass) { - label = (0, _utils.markLabelAsSelected)(label); - } - - return label; - }, - callback: function callback() { - var _this14 = this; - - var range = this.getSelectedRange(); - var stateBefore = (0, _utils.getAlignmentClasses)(range, function (row, col) { - return _this14.getCellMeta(row, col).className; - }); - var type = 'vertical'; - var alignment = 'htBottom'; - - this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment); - (0, _utils.align)(range, type, alignment, function (row, col) { - return _this14.getCellMeta(row, col); - }, function (row, col, key, value) { - return _this14.setCellMeta(row, col, key, value); - }); - this.render(); - }, - - disabled: false - }] - } - }; -} - -/***/ }), -/* 263 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.KEY = undefined; -exports.default = clearColumnItem; - -var _utils = __webpack_require__(19); - -var KEY = exports.KEY = 'clear_column'; - -function clearColumnItem() { - return { - key: KEY, - name: 'Clear column', - - callback: function callback(key, selection) { - var column = selection.start.col; - - if (this.countRows()) { - this.populateFromArray(0, column, [[null]], Math.max(selection.start.row, selection.end.row), column, 'ContextMenu.clearColumn'); - } - }, - disabled: function disabled() { - var selected = (0, _utils.getValidSelection)(this); - - if (!selected) { - return true; - } - var entireRowSelection = [selected[0], 0, selected[0], this.countCols() - 1]; - var rowSelected = entireRowSelection.join(',') == selected.join(','); - - return selected[1] < 0 || this.countCols() >= this.getSettings().maxCols || rowSelected; - } - }; -} - -/***/ }), -/* 264 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.KEY = undefined; -exports.default = columnLeftItem; - -var _utils = __webpack_require__(19); - -var KEY = exports.KEY = 'col_left'; - -function columnLeftItem() { - return { - key: KEY, - name: 'Insert column on the left', - callback: function callback(key, selection) { - this.alter('insert_col', selection.start.col, 1, 'ContextMenu.columnLeft'); - }, - disabled: function disabled() { - var selected = (0, _utils.getValidSelection)(this); - - if (!selected) { - return true; - } - if (!this.isColumnModificationAllowed()) { - return true; - } - var entireRowSelection = [selected[0], 0, selected[0], this.countCols() - 1]; - var rowSelected = entireRowSelection.join(',') == selected.join(','); - var onlyOneColumn = this.countCols() === 1; - - return selected[1] < 0 || this.countCols() >= this.getSettings().maxCols || !onlyOneColumn && rowSelected; - }, - hidden: function hidden() { - return !this.getSettings().allowInsertColumn; - } - }; -} - -/***/ }), -/* 265 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.KEY = undefined; -exports.default = columnRightItem; - -var _utils = __webpack_require__(19); - -var KEY = exports.KEY = 'col_right'; - -function columnRightItem() { - return { - key: KEY, - name: 'Insert column on the right', - - callback: function callback(key, selection) { - this.alter('insert_col', selection.end.col + 1, 1, 'ContextMenu.columnRight'); - }, - disabled: function disabled() { - var selected = (0, _utils.getValidSelection)(this); - - if (!selected) { - return true; - } - if (!this.isColumnModificationAllowed()) { - return true; - } - var entireRowSelection = [selected[0], 0, selected[0], this.countCols() - 1]; - var rowSelected = entireRowSelection.join(',') == selected.join(','); - var onlyOneColumn = this.countCols() === 1; - - return selected[1] < 0 || this.countCols() >= this.getSettings().maxCols || !onlyOneColumn && rowSelected; - }, - hidden: function hidden() { - return !this.getSettings().allowInsertColumn; - } - }; -} - -/***/ }), -/* 266 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.KEY = undefined; -exports.default = readOnlyItem; - -var _utils = __webpack_require__(19); - -var KEY = exports.KEY = 'make_read_only'; - -function readOnlyItem() { - return { - key: KEY, - name: function name() { - var _this = this; - - var label = 'Read only'; - var atLeastOneReadOnly = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), function (row, col) { - return _this.getCellMeta(row, col).readOnly; - }); - - if (atLeastOneReadOnly) { - label = (0, _utils.markLabelAsSelected)(label); - } - - return label; - }, - callback: function callback() { - var _this2 = this; - - var range = this.getSelectedRange(); - var atLeastOneReadOnly = (0, _utils.checkSelectionConsistency)(range, function (row, col) { - return _this2.getCellMeta(row, col).readOnly; - }); - - range.forAll(function (row, col) { - _this2.setCellMeta(row, col, 'readOnly', !atLeastOneReadOnly); - }); - this.render(); - }, - disabled: function disabled() { - return !(this.getSelectedRange() && !this.selection.selectedHeader.corner); - } - }; -} - -/***/ }), -/* 267 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = redoItem; -var KEY = exports.KEY = 'redo'; - -function redoItem() { - return { - key: KEY, - name: 'Redo', - - callback: function callback() { - this.redo(); - }, - disabled: function disabled() { - return this.undoRedo && !this.undoRedo.isRedoAvailable(); - } - }; -} - -/***/ }), -/* 268 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.KEY = undefined; -exports.default = removeColumnItem; - -var _utils = __webpack_require__(19); - -var KEY = exports.KEY = 'remove_col'; - -function removeColumnItem() { - return { - key: KEY, - name: 'Remove column', - - callback: function callback(key, selection) { - var amount = selection.end.col - selection.start.col + 1; - - this.alter('remove_col', selection.start.col, amount, 'ContextMenu.removeColumn'); - }, - disabled: function disabled() { - var selected = (0, _utils.getValidSelection)(this); - var totalColumns = this.countCols(); - - return !selected || this.selection.selectedHeader.rows || this.selection.selectedHeader.corner || !this.isColumnModificationAllowed() || !totalColumns; - }, - hidden: function hidden() { - return !this.getSettings().allowRemoveColumn; - } - }; -} - -/***/ }), -/* 269 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.KEY = undefined; -exports.default = removeRowItem; - -var _utils = __webpack_require__(19); - -var KEY = exports.KEY = 'remove_row'; - -function removeRowItem() { - return { - key: KEY, - name: 'Remove row', - - callback: function callback(key, selection) { - var amount = selection.end.row - selection.start.row + 1; - - this.alter('remove_row', selection.start.row, amount, 'ContextMenu.removeRow'); - }, - disabled: function disabled() { - var selected = (0, _utils.getValidSelection)(this); - var totalRows = this.countRows(); - - return !selected || this.selection.selectedHeader.cols || this.selection.selectedHeader.corner || !totalRows; - }, - hidden: function hidden() { - return !this.getSettings().allowRemoveRow; - } - }; -} - -/***/ }), -/* 270 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.KEY = undefined; -exports.default = rowAboveItem; - -var _utils = __webpack_require__(19); - -var KEY = exports.KEY = 'row_above'; - -function rowAboveItem() { - return { - key: KEY, - name: 'Insert row above', - - callback: function callback(key, selection) { - this.alter('insert_row', selection.start.row, 1, 'ContextMenu.rowAbove'); - }, - disabled: function disabled() { - var selected = (0, _utils.getValidSelection)(this); - - return !selected || this.selection.selectedHeader.cols || this.countRows() >= this.getSettings().maxRows; - }, - hidden: function hidden() { - return !this.getSettings().allowInsertRow; - } - }; -} - -/***/ }), -/* 271 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.KEY = undefined; -exports.default = rowBelowItem; - -var _utils = __webpack_require__(19); - -var KEY = exports.KEY = 'row_below'; - -function rowBelowItem() { - return { - key: KEY, - name: 'Insert row below', - - callback: function callback(key, selection) { - this.alter('insert_row', selection.end.row + 1, 1, 'ContextMenu.rowBelow'); - }, - disabled: function disabled() { - var selected = (0, _utils.getValidSelection)(this); - - return !selected || this.selection.selectedHeader.cols || this.countRows() >= this.getSettings().maxRows; - }, - hidden: function hidden() { - return !this.getSettings().allowInsertRow; - } - }; -} - -/***/ }), -/* 272 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = undoItem; -var KEY = exports.KEY = 'undo'; - -function undoItem() { - return { - key: KEY, - name: 'Undo', - - callback: function callback() { - this.undo(); - }, - disabled: function disabled() { - return this.undoRedo && !this.undoRedo.isUndoAvailable(); - } - }; -} - -/***/ }), -/* 273 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _core = __webpack_require__(82); - -var _core2 = _interopRequireDefault(_core); - -var _element = __webpack_require__(0); - -var _array = __webpack_require__(2); - -var _cursor = __webpack_require__(274); - -var _cursor2 = _interopRequireDefault(_cursor); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _object = __webpack_require__(1); - -var _function = __webpack_require__(35); - -var _utils = __webpack_require__(19); - -var _unicode = __webpack_require__(17); - -var _localHooks = __webpack_require__(87); - -var _localHooks2 = _interopRequireDefault(_localHooks); - -var _predefinedItems = __webpack_require__(88); - -var _event = __webpack_require__(8); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class Menu - * @plugin ContextMenu - */ -var Menu = function () { - function Menu(hotInstance, options) { - _classCallCheck(this, Menu); - - this.hot = hotInstance; - this.options = options || { - parent: null, - name: null, - className: '', - keepInViewport: true, - standalone: false - }; - this.eventManager = new _eventManager2.default(this); - this.container = this.createContainer(this.options.name); - this.hotMenu = null; - this.hotSubMenus = {}; - this.parentMenu = this.options.parent || null; - this.menuItems = null; - this.origOutsideClickDeselects = null; - this.keyEvent = false; - - this.offset = { - above: 0, - below: 0, - left: 0, - right: 0 - }; - this._afterScrollCallback = null; - - this.registerEvents(); - } - - /** - * Register event listeners. - * - * @private - */ - - - _createClass(Menu, [{ - key: 'registerEvents', - value: function registerEvents() { - var _this = this; - - this.eventManager.addEventListener(document.documentElement, 'mousedown', function (event) { - return _this.onDocumentMouseDown(event); - }); - } - - /** - * Set array of objects which defines menu items. - * - * @param {Array} menuItems Menu items to display. - */ - - }, { - key: 'setMenuItems', - value: function setMenuItems(menuItems) { - this.menuItems = menuItems; - } - - /** - * Set offset menu position for specified area (`above`, `below`, `left` or `right`). - * - * @param {String} area Specified area name (`above`, `below`, `left` or `right`). - * @param {Number} offset Offset value. - */ - - }, { - key: 'setOffset', - value: function setOffset(area) { - var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - - this.offset[area] = offset; - } - - /** - * Check if menu is using as sub-menu. - * - * @returns {Boolean} - */ - - }, { - key: 'isSubMenu', - value: function isSubMenu() { - return this.parentMenu !== null; - } - - /** - * Open menu. - */ - - }, { - key: 'open', - value: function open() { - var _this2 = this; - - this.container.removeAttribute('style'); - this.container.style.display = 'block'; - - var delayedOpenSubMenu = (0, _function.debounce)(function (row) { - return _this2.openSubMenu(row); - }, 300); - - var filteredItems = (0, _array.arrayFilter)(this.menuItems, function (item) { - return (0, _utils.isItemHidden)(item, _this2.hot); - }); - - filteredItems = (0, _utils.filterSeparators)(filteredItems, _predefinedItems.SEPARATOR); - - var settings = { - data: filteredItems, - colHeaders: false, - colWidths: [200], - autoRowSize: false, - readOnly: true, - copyPaste: false, - columns: [{ - data: 'name', - renderer: function renderer(hot, TD, row, col, prop, value) { - return _this2.menuItemRenderer(hot, TD, row, col, prop, value); - } - }], - renderAllRows: true, - fragmentSelection: 'cell', - disableVisualSelection: 'area', - beforeKeyDown: function beforeKeyDown(event) { - return _this2.onBeforeKeyDown(event); - }, - afterOnCellMouseOver: function afterOnCellMouseOver(event, coords, TD) { - if (_this2.isAllSubMenusClosed()) { - delayedOpenSubMenu(coords.row); - } else { - _this2.openSubMenu(coords.row); - } - }, - rowHeights: function rowHeights(row) { - return filteredItems[row].name === _predefinedItems.SEPARATOR ? 1 : 23; - } - }; - this.origOutsideClickDeselects = this.hot.getSettings().outsideClickDeselects; - this.hot.getSettings().outsideClickDeselects = false; - this.hotMenu = new _core2.default(this.container, settings); - this.hotMenu.addHook('afterInit', function () { - return _this2.onAfterInit(); - }); - this.hotMenu.addHook('afterSelection', function (r, c, r2, c2, preventScrolling) { - return _this2.onAfterSelection(r, c, r2, c2, preventScrolling); - }); - this.hotMenu.init(); - this.hotMenu.listen(); - this.blockMainTableCallbacks(); - this.runLocalHooks('afterOpen'); - } - - /** - * Close menu. - * - * @param {Boolean} [closeParent=false] if `true` try to close parent menu if exists. - */ - - }, { - key: 'close', - value: function close() { - var closeParent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (!this.isOpened()) { - return; - } - if (closeParent && this.parentMenu) { - this.parentMenu.close(); - } else { - this.closeAllSubMenus(); - this.container.style.display = 'none'; - this.releaseMainTableCallbacks(); - this.hotMenu.destroy(); - this.hotMenu = null; - this.hot.getSettings().outsideClickDeselects = this.origOutsideClickDeselects; - this.runLocalHooks('afterClose'); - - if (this.parentMenu) { - this.parentMenu.hotMenu.listen(); - } - } - } - - /** - * Open sub menu at the provided row index. - * - * @param {Number} row Row index. - * @returns {Menu|Boolean} Returns created menu or `false` if no one menu was created. - */ - - }, { - key: 'openSubMenu', - value: function openSubMenu(row) { - if (!this.hotMenu) { - return false; - } - var cell = this.hotMenu.getCell(row, 0); - - this.closeAllSubMenus(); - - if (!cell || !(0, _utils.hasSubMenu)(cell)) { - return false; - } - var dataItem = this.hotMenu.getSourceDataAtRow(row); - var subMenu = new Menu(this.hot, { - parent: this, - name: dataItem.name, - className: this.options.className, - keepInViewport: true - }); - subMenu.setMenuItems(dataItem.submenu.items); - subMenu.open(); - subMenu.setPosition(cell.getBoundingClientRect()); - this.hotSubMenus[dataItem.key] = subMenu; - - return subMenu; - } - - /** - * Close sub menu at row index. - * - * @param {Number} row Row index. - */ - - }, { - key: 'closeSubMenu', - value: function closeSubMenu(row) { - var dataItem = this.hotMenu.getSourceDataAtRow(row); - var menus = this.hotSubMenus[dataItem.key]; - - if (menus) { - menus.destroy(); - delete this.hotSubMenus[dataItem.key]; - } - } - - /** - * Close all opened sub menus. - */ - - }, { - key: 'closeAllSubMenus', - value: function closeAllSubMenus() { - var _this3 = this; - - (0, _array.arrayEach)(this.hotMenu.getData(), function (value, row) { - return _this3.closeSubMenu(row); - }); - } - - /** - * Checks if all created and opened sub menus are closed. - * - * @returns {Boolean} - */ - - }, { - key: 'isAllSubMenusClosed', - value: function isAllSubMenusClosed() { - return Object.keys(this.hotSubMenus).length === 0; - } - - /** - * Destroy instance. - */ - - }, { - key: 'destroy', - value: function destroy() { - this.clearLocalHooks(); - this.close(); - this.parentMenu = null; - this.eventManager.destroy(); - } - - /** - * Checks if menu was opened. - * - * @returns {Boolean} Returns `true` if menu was opened. - */ - - }, { - key: 'isOpened', - value: function isOpened() { - return this.hotMenu !== null; - } - - /** - * Execute menu command. - * - * @param {Event} [event] - */ - - }, { - key: 'executeCommand', - value: function executeCommand(event) { - if (!this.isOpened() || !this.hotMenu.getSelected()) { - return; - } - var selectedItem = this.hotMenu.getSourceDataAtRow(this.hotMenu.getSelected()[0]); - - this.runLocalHooks('select', selectedItem, event); - - if (selectedItem.isCommand === false || selectedItem.name === _predefinedItems.SEPARATOR) { - return; - } - var selRange = this.hot.getSelectedRange(); - var normalizedSelection = selRange ? (0, _utils.normalizeSelection)(selRange) : {}; - var autoClose = true; - - // Don't close context menu if item is disabled or it has submenu - if (selectedItem.disabled === true || typeof selectedItem.disabled === 'function' && selectedItem.disabled.call(this.hot) === true || selectedItem.submenu) { - autoClose = false; - } - - this.runLocalHooks('executeCommand', selectedItem.key, normalizedSelection, event); - - if (this.isSubMenu()) { - this.parentMenu.runLocalHooks('executeCommand', selectedItem.key, normalizedSelection, event); - } - - if (autoClose) { - this.close(true); - } - } - - /** - * Set menu position based on dom event or based on literal object. - * - * @param {Event|Object} coords Event or literal Object with coordinates. - */ - - }, { - key: 'setPosition', - value: function setPosition(coords) { - var cursor = new _cursor2.default(coords); - - if (this.options.keepInViewport) { - if (cursor.fitsBelow(this.container)) { - this.setPositionBelowCursor(cursor); - } else if (cursor.fitsAbove(this.container)) { - this.setPositionAboveCursor(cursor); - } else { - this.setPositionBelowCursor(cursor); - } - if (cursor.fitsOnRight(this.container)) { - this.setPositionOnRightOfCursor(cursor); - } else { - this.setPositionOnLeftOfCursor(cursor); - } - } else { - this.setPositionBelowCursor(cursor); - this.setPositionOnRightOfCursor(cursor); - } - } - - /** - * Set menu position above cursor object. - * - * @param {Cursor} cursor `Cursor` object. - */ - - }, { - key: 'setPositionAboveCursor', - value: function setPositionAboveCursor(cursor) { - var top = this.offset.above + cursor.top - this.container.offsetHeight; - - if (this.isSubMenu()) { - top = cursor.top + cursor.cellHeight - this.container.offsetHeight + 3; - } - this.container.style.top = top + 'px'; - } - - /** - * Set menu position below cursor object. - * - * @param {Cursor} cursor `Cursor` object. - */ - - }, { - key: 'setPositionBelowCursor', - value: function setPositionBelowCursor(cursor) { - var top = this.offset.below + cursor.top; - - if (this.isSubMenu()) { - top = cursor.top - 1; - } - this.container.style.top = top + 'px'; - } - - /** - * Set menu position on the right of cursor object. - * - * @param {Cursor} cursor `Cursor` object. - */ - - }, { - key: 'setPositionOnRightOfCursor', - value: function setPositionOnRightOfCursor(cursor) { - var left = void 0; - - if (this.isSubMenu()) { - left = 1 + cursor.left + cursor.cellWidth; - } else { - left = this.offset.right + 1 + cursor.left; - } - - this.container.style.left = left + 'px'; - } - - /** - * Set menu position on the left of cursor object. - * - * @param {Cursor} cursor `Cursor` object. - */ - - }, { - key: 'setPositionOnLeftOfCursor', - value: function setPositionOnLeftOfCursor(cursor) { - var left = this.offset.left + cursor.left - this.container.offsetWidth + (0, _element.getScrollbarWidth)() + 4; - - this.container.style.left = left + 'px'; - } - - /** - * Select first cell in opened menu. - */ - - }, { - key: 'selectFirstCell', - value: function selectFirstCell() { - var cell = this.hotMenu.getCell(0, 0); - - if ((0, _utils.isSeparator)(cell) || (0, _utils.isDisabled)(cell) || (0, _utils.isSelectionDisabled)(cell)) { - this.selectNextCell(0, 0); - } else { - this.hotMenu.selectCell(0, 0); - } - } - - /** - * Select last cell in opened menu. - */ - - }, { - key: 'selectLastCell', - value: function selectLastCell() { - var lastRow = this.hotMenu.countRows() - 1; - var cell = this.hotMenu.getCell(lastRow, 0); - - if ((0, _utils.isSeparator)(cell) || (0, _utils.isDisabled)(cell) || (0, _utils.isSelectionDisabled)(cell)) { - this.selectPrevCell(lastRow, 0); - } else { - this.hotMenu.selectCell(lastRow, 0); - } - } - - /** - * Select next cell in opened menu. - * - * @param {Number} row Row index. - * @param {Number} col Column index. - */ - - }, { - key: 'selectNextCell', - value: function selectNextCell(row, col) { - var nextRow = row + 1; - var cell = nextRow < this.hotMenu.countRows() ? this.hotMenu.getCell(nextRow, col) : null; - - if (!cell) { - return; - } - if ((0, _utils.isSeparator)(cell) || (0, _utils.isDisabled)(cell) || (0, _utils.isSelectionDisabled)(cell)) { - this.selectNextCell(nextRow, col); - } else { - this.hotMenu.selectCell(nextRow, col); - } - } - - /** - * Select previous cell in opened menu. - * - * @param {Number} row Row index. - * @param {Number} col Column index. - */ - - }, { - key: 'selectPrevCell', - value: function selectPrevCell(row, col) { - var prevRow = row - 1; - var cell = prevRow >= 0 ? this.hotMenu.getCell(prevRow, col) : null; - - if (!cell) { - return; - } - if ((0, _utils.isSeparator)(cell) || (0, _utils.isDisabled)(cell) || (0, _utils.isSelectionDisabled)(cell)) { - this.selectPrevCell(prevRow, col); - } else { - this.hotMenu.selectCell(prevRow, col); - } - } - - /** - * Menu item renderer. - * - * @private - */ - - }, { - key: 'menuItemRenderer', - value: function menuItemRenderer(hot, TD, row, col, prop, value) { - var _this4 = this; - - var item = hot.getSourceDataAtRow(row); - var wrapper = document.createElement('div'); - - var isSubMenu = function isSubMenu(item) { - return (0, _object.hasOwnProperty)(item, 'submenu'); - }; - var itemIsSeparator = function itemIsSeparator(item) { - return new RegExp(_predefinedItems.SEPARATOR, 'i').test(item.name); - }; - var itemIsDisabled = function itemIsDisabled(item) { - return item.disabled === true || typeof item.disabled == 'function' && item.disabled.call(_this4.hot) === true; - }; - var itemIsSelectionDisabled = function itemIsSelectionDisabled(item) { - return item.disableSelection; - }; - - if (typeof value === 'function') { - value = value.call(this.hot); - } - (0, _element.empty)(TD); - (0, _element.addClass)(wrapper, 'htItemWrapper'); - TD.appendChild(wrapper); - - if (itemIsSeparator(item)) { - (0, _element.addClass)(TD, 'htSeparator'); - } else if (typeof item.renderer === 'function') { - (0, _element.addClass)(TD, 'htCustomMenuRenderer'); - TD.appendChild(item.renderer(hot, wrapper, row, col, prop, value)); - } else { - (0, _element.fastInnerHTML)(wrapper, value); - } - if (itemIsDisabled(item)) { - (0, _element.addClass)(TD, 'htDisabled'); - this.eventManager.addEventListener(TD, 'mouseenter', function () { - return hot.deselectCell(); - }); - } else if (itemIsSelectionDisabled(item)) { - (0, _element.addClass)(TD, 'htSelectionDisabled'); - this.eventManager.addEventListener(TD, 'mouseenter', function () { - return hot.deselectCell(); - }); - } else if (isSubMenu(item)) { - (0, _element.addClass)(TD, 'htSubmenu'); - - if (itemIsSelectionDisabled(item)) { - this.eventManager.addEventListener(TD, 'mouseenter', function () { - return hot.deselectCell(); - }); - } else { - this.eventManager.addEventListener(TD, 'mouseenter', function () { - return hot.selectCell(row, col, void 0, void 0, false, false); - }); - } - } else { - (0, _element.removeClass)(TD, 'htSubmenu'); - (0, _element.removeClass)(TD, 'htDisabled'); - - if (itemIsSelectionDisabled(item)) { - this.eventManager.addEventListener(TD, 'mouseenter', function () { - return hot.deselectCell(); - }); - } else { - this.eventManager.addEventListener(TD, 'mouseenter', function () { - return hot.selectCell(row, col, void 0, void 0, false, false); - }); - } - } - } - - /** - * Create container/wrapper for handsontable. - * - * @private - * @param {String} [name] Class name. - * @returns {HTMLElement} - */ - - }, { - key: 'createContainer', - value: function createContainer() { - var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - if (name) { - name = name.replace(/[^A-z0-9]/g, '_'); - name = this.options.className + 'Sub_' + name; - } - var container = void 0; - - if (name) { - container = document.querySelector('.' + this.options.className + '.' + name); - } else { - container = document.querySelector('.' + this.options.className); - } - if (!container) { - container = document.createElement('div'); - (0, _element.addClass)(container, 'htMenu ' + this.options.className); - - if (name) { - (0, _element.addClass)(container, name); - } - document.getElementsByTagName('body')[0].appendChild(container); - } - - return container; - } - - /** - * @private - */ - - }, { - key: 'blockMainTableCallbacks', - value: function blockMainTableCallbacks() { - this._afterScrollCallback = function () {}; - this.hot.addHook('afterScrollVertically', this._afterScrollCallback); - this.hot.addHook('afterScrollHorizontally', this._afterScrollCallback); - } - - /** - * @private - */ - - }, { - key: 'releaseMainTableCallbacks', - value: function releaseMainTableCallbacks() { - if (this._afterScrollCallback) { - this.hot.removeHook('afterScrollVertically', this._afterScrollCallback); - this.hot.removeHook('afterScrollHorizontally', this._afterScrollCallback); - this._afterScrollCallback = null; - } - } - - /** - * On before key down listener. - * - * @private - * @param {Event} event - */ - - }, { - key: 'onBeforeKeyDown', - value: function onBeforeKeyDown(event) { - var selection = this.hotMenu.getSelected(); - var stopEvent = false; - this.keyEvent = true; - - switch (event.keyCode) { - case _unicode.KEY_CODES.ESCAPE: - this.close(); - stopEvent = true; - break; - - case _unicode.KEY_CODES.ENTER: - if (selection) { - if (this.hotMenu.getSourceDataAtRow(selection[0]).submenu) { - stopEvent = true; - } else { - this.executeCommand(event); - this.close(true); - } - } - break; - - case _unicode.KEY_CODES.ARROW_DOWN: - if (selection) { - this.selectNextCell(selection[0], selection[1]); - } else { - this.selectFirstCell(); - } - stopEvent = true; - break; - - case _unicode.KEY_CODES.ARROW_UP: - if (selection) { - this.selectPrevCell(selection[0], selection[1]); - } else { - this.selectLastCell(); - } - stopEvent = true; - break; - - case _unicode.KEY_CODES.ARROW_RIGHT: - if (selection) { - var menu = this.openSubMenu(selection[0]); - - if (menu) { - menu.selectFirstCell(); - } - } - stopEvent = true; - - break; - - case _unicode.KEY_CODES.ARROW_LEFT: - if (selection && this.isSubMenu()) { - this.close(); - - if (this.parentMenu) { - this.parentMenu.hotMenu.listen(); - } - stopEvent = true; - } - break; - default: - break; - } - if (stopEvent) { - event.preventDefault(); - (0, _event.stopImmediatePropagation)(event); - } - - this.keyEvent = false; - } - - /** - * On after init listener. - * - * @private - */ - - }, { - key: 'onAfterInit', - value: function onAfterInit() { - var data = this.hotMenu.getSettings().data; - var hiderStyle = this.hotMenu.view.wt.wtTable.hider.style; - var holderStyle = this.hotMenu.view.wt.wtTable.holder.style; - var currentHiderWidth = parseInt(hiderStyle.width, 10); - - var realHeight = (0, _array.arrayReduce)(data, function (accumulator, value) { - return accumulator + (value.name === _predefinedItems.SEPARATOR ? 1 : 26); - }, 0); - - holderStyle.width = currentHiderWidth + 22 + 'px'; - holderStyle.height = realHeight + 4 + 'px'; - hiderStyle.height = holderStyle.height; - } - - /** - * On after selection listener. - * - * @param {Number} r Selection start row index. - * @param {Number} c Selection start column index. - * @param {Number} r2 Selection end row index. - * @param {Number} c2 Selection end column index. - * @param {Object} preventScrolling Object with `value` property where its value change will be observed. - */ - - }, { - key: 'onAfterSelection', - value: function onAfterSelection(r, c, r2, c2, preventScrolling) { - if (this.keyEvent === false) { - preventScrolling.value = true; - } - } - - /** - * Document mouse down listener. - * - * @private - * @param {Event} event - */ - - }, { - key: 'onDocumentMouseDown', - value: function onDocumentMouseDown(event) { - if (!this.isOpened()) { - return; - } - if (this.container && (0, _element.isChildOf)(event.target, this.container)) { - this.executeCommand(event); - } - // Close menu when clicked element is not belongs to menu itself - if (this.options.standalone && this.hotMenu && !(0, _element.isChildOf)(event.target, this.hotMenu.rootElement)) { - this.close(true); - - // Automatically close menu when clicked element is not belongs to menu or submenu (not necessarily to itself) - } else if ((this.isAllSubMenusClosed() || this.isSubMenu()) && !(0, _element.isChildOf)(event.target, '.htMenu') && (0, _element.isChildOf)(event.target, document)) { - this.close(true); - } - } - }]); - - return Menu; -}(); - -(0, _object.mixin)(Menu, _localHooks2.default); - -exports.default = Menu; - -/***/ }), -/* 274 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _element = __webpack_require__(0); - -var _event = __webpack_require__(8); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * Helper class for checking if element will fit at the desired side of cursor. - * - * @class Cursor - * @plugin ContextMenu - */ -var Cursor = function () { - function Cursor(object) { - _classCallCheck(this, Cursor); - - var windowScrollTop = (0, _element.getWindowScrollTop)(); - var windowScrollLeft = (0, _element.getWindowScrollLeft)(); - var top = void 0, - topRelative = void 0; - var left = void 0, - leftRelative = void 0; - var cellHeight = void 0, - cellWidth = void 0; - - this.type = this.getSourceType(object); - - if (this.type === 'literal') { - top = parseInt(object.top, 10); - left = parseInt(object.left, 10); - cellHeight = object.height || 0; - cellWidth = object.width || 0; - topRelative = top; - leftRelative = left; - top += windowScrollTop; - left += windowScrollLeft; - } else if (this.type === 'event') { - top = parseInt((0, _event.pageY)(object), 10); - left = parseInt((0, _event.pageX)(object), 10); - cellHeight = object.target.clientHeight; - cellWidth = object.target.clientWidth; - topRelative = top - windowScrollTop; - leftRelative = left - windowScrollLeft; - } - - this.top = top; - this.topRelative = topRelative; - this.left = left; - this.leftRelative = leftRelative; - this.scrollTop = windowScrollTop; - this.scrollLeft = windowScrollLeft; - this.cellHeight = cellHeight; - this.cellWidth = cellWidth; - } - - /** - * Get source type name. - * - * @param {*} object Event or Object with coordinates. - * @returns {String} Returns one of this values: `'literal'`, `'event'`. - */ - - - _createClass(Cursor, [{ - key: 'getSourceType', - value: function getSourceType(object) { - var type = 'literal'; - - if (object instanceof Event) { - type = 'event'; - } - - return type; - } - - /** - * Checks if element can be placed above the cursor. - * - * @param {HTMLElement} element Element to check if it's size will fit above the cursor. - * @returns {Boolean} - */ - - }, { - key: 'fitsAbove', - value: function fitsAbove(element) { - return this.topRelative >= element.offsetHeight; - } - - /** - * Checks if element can be placed below the cursor. - * - * @param {HTMLElement} element Element to check if it's size will fit below the cursor. - * @param {Number} [viewportHeight] The viewport height. - * @returns {Boolean} - */ - - }, { - key: 'fitsBelow', - value: function fitsBelow(element) { - var viewportHeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window.innerHeight; - - return this.topRelative + element.offsetHeight <= viewportHeight; - } - - /** - * Checks if element can be placed on the right of the cursor. - * - * @param {HTMLElement} element Element to check if it's size will fit on the right of the cursor. - * @param {Number} [viewportWidth] The viewport width. - * @returns {Boolean} - */ - - }, { - key: 'fitsOnRight', - value: function fitsOnRight(element) { - var viewportWidth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window.innerWidth; - - return this.leftRelative + this.cellWidth + element.offsetWidth <= viewportWidth; - } - - /** - * Checks if element can be placed on the left on the cursor. - * - * @param {HTMLElement} element Element to check if it's size will fit on the left of the cursor. - * @returns {Boolean} - */ - - }, { - key: 'fitsOnLeft', - value: function fitsOnLeft(element) { - return this.leftRelative >= element.offsetWidth; - } - }]); - - return Cursor; -}(); - -exports.default = Cursor; - -/***/ }), -/* 275 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 276 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _SheetClip = __webpack_require__(171); - -var _SheetClip2 = _interopRequireDefault(_SheetClip); - -var _src = __webpack_require__(12); - -var _unicode = __webpack_require__(17); - -var _element = __webpack_require__(0); - -var _array = __webpack_require__(2); - -var _number = __webpack_require__(6); - -var _event = __webpack_require__(8); - -var _plugins = __webpack_require__(5); - -var _textarea = __webpack_require__(277); - -var _textarea2 = _interopRequireDefault(_textarea); - -var _copy = __webpack_require__(278); - -var _copy2 = _interopRequireDefault(_copy); - -var _cut = __webpack_require__(279); - -var _cut2 = _interopRequireDefault(_cut); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -__webpack_require__(280); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -_pluginHooks2.default.getSingleton().register('afterCopyLimit'); -_pluginHooks2.default.getSingleton().register('modifyCopyableRange'); -_pluginHooks2.default.getSingleton().register('beforeCut'); -_pluginHooks2.default.getSingleton().register('afterCut'); -_pluginHooks2.default.getSingleton().register('beforePaste'); -_pluginHooks2.default.getSingleton().register('afterPaste'); -_pluginHooks2.default.getSingleton().register('beforeCopy'); -_pluginHooks2.default.getSingleton().register('afterCopy'); - -var ROWS_LIMIT = 1000; -var COLUMNS_LIMIT = 1000; -var privatePool = new WeakMap(); - -/** - * @description - * This plugin enables the copy/paste functionality in the Handsontable. - * - * @example - * ```js - * ... - * copyPaste: true, - * ... - * ``` - * @class CopyPaste - * @plugin CopyPaste - */ - -var CopyPaste = function (_BasePlugin) { - _inherits(CopyPaste, _BasePlugin); - - function CopyPaste(hotInstance) { - _classCallCheck(this, CopyPaste); - - /** - * Event manager - * - * @type {EventManager} - */ - var _this = _possibleConstructorReturn(this, (CopyPaste.__proto__ || Object.getPrototypeOf(CopyPaste)).call(this, hotInstance)); - - _this.eventManager = new _eventManager2.default(_this); - /** - * Maximum number of columns than can be copied to clipboard using CTRL + C. - * - * @private - * @type {Number} - * @default 1000 - */ - _this.columnsLimit = COLUMNS_LIMIT; - /** - * Ranges of the cells coordinates, which should be used to copy/cut/paste actions. - * - * @private - * @type {Array} - */ - _this.copyableRanges = []; - /** - * Defines paste (CTRL + V) behavior. - * * Default value `"overwrite"` will paste clipboard value over current selection. - * * When set to `"shift_down"`, clipboard data will be pasted in place of current selection, while all selected cells are moved down. - * * When set to `"shift_right"`, clipboard data will be pasted in place of current selection, while all selected cells are moved right. - * - * @private - * @type {String} - * @default 'overwrite' - */ - _this.pasteMode = 'overwrite'; - /** - * Maximum number of rows than can be copied to clipboard using CTRL + C. - * - * @private - * @type {Number} - * @default 1000 - */ - _this.rowsLimit = ROWS_LIMIT; - /** - * The `textarea` element which is necessary to process copying, cutting off and pasting. - * - * @private - * @type {HTMLElement} - * @default undefined - */ - _this.textarea = void 0; - - privatePool.set(_this, { - isTriggeredByPaste: false - }); - return _this; - } - - /** - * Check if plugin is enabled. - * - * @returns {Boolean} - */ - - - _createClass(CopyPaste, [{ - key: 'isEnabled', - value: function isEnabled() { - return !!this.hot.getSettings().copyPaste; - } - - /** - * Enable the plugin. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this2 = this; - - if (this.enabled) { - return; - } - - var settings = this.hot.getSettings(); - - this.textarea = _textarea2.default.getSingleton(); - - if (_typeof(settings.copyPaste) === 'object') { - this.pasteMode = settings.copyPaste.pasteMode || this.pasteMode; - this.rowsLimit = settings.copyPaste.rowsLimit || this.rowsLimit; - this.columnsLimit = settings.copyPaste.columnsLimit || this.columnsLimit; - } - - this.addHook('afterContextMenuDefaultOptions', function (options) { - return _this2.onAfterContextMenuDefaultOptions(options); - }); - this.addHook('beforeKeyDown', function (event) { - return _this2.onBeforeKeyDown(event); - }); - - this.registerEvents(); - - _get(CopyPaste.prototype.__proto__ || Object.getPrototypeOf(CopyPaste.prototype), 'enablePlugin', this).call(this); - } - /** - * Updates the plugin to use the latest options you have specified. - */ - - }, { - key: 'updatePlugin', - value: function updatePlugin() { - this.disablePlugin(); - this.enablePlugin(); - - _get(CopyPaste.prototype.__proto__ || Object.getPrototypeOf(CopyPaste.prototype), 'updatePlugin', this).call(this); - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - if (this.textarea) { - this.textarea.destroy(); - } - - _get(CopyPaste.prototype.__proto__ || Object.getPrototypeOf(CopyPaste.prototype), 'disablePlugin', this).call(this); - } - - /** - * Prepares copyable text from the cells selection in the invisible textarea. - * - * @function setCopyable - * @memberof CopyPaste# - */ - - }, { - key: 'setCopyableText', - value: function setCopyableText() { - var selRange = this.hot.getSelectedRange(); - - if (!selRange) { - return; - } - - var topLeft = selRange.getTopLeftCorner(); - var bottomRight = selRange.getBottomRightCorner(); - var startRow = topLeft.row; - var startCol = topLeft.col; - var endRow = bottomRight.row; - var endCol = bottomRight.col; - var finalEndRow = Math.min(endRow, startRow + this.rowsLimit - 1); - var finalEndCol = Math.min(endCol, startCol + this.columnsLimit - 1); - - this.copyableRanges.length = 0; - - this.copyableRanges.push({ - startRow: startRow, - startCol: startCol, - endRow: finalEndRow, - endCol: finalEndCol - }); - - this.copyableRanges = this.hot.runHooks('modifyCopyableRange', this.copyableRanges); - - var copyableData = this.getRangedCopyableData(this.copyableRanges); - - this.textarea.setValue(copyableData); - - if (endRow !== finalEndRow || endCol !== finalEndCol) { - this.hot.runHooks('afterCopyLimit', endRow - startRow + 1, endCol - startCol + 1, this.rowsLimit, this.columnsLimit); - } - } - - /** - * Create copyable text releated to range objects. - * - * @since 0.19.0 - * @param {Array} ranges Array of Objects with properties `startRow`, `endRow`, `startCol` and `endCol`. - * @returns {String} Returns string which will be copied into clipboard. - */ - - }, { - key: 'getRangedCopyableData', - value: function getRangedCopyableData(ranges) { - var _this3 = this; - - var dataSet = []; - var copyableRows = []; - var copyableColumns = []; - - // Count all copyable rows and columns - (0, _array.arrayEach)(ranges, function (range) { - (0, _number.rangeEach)(range.startRow, range.endRow, function (row) { - if (copyableRows.indexOf(row) === -1) { - copyableRows.push(row); - } - }); - (0, _number.rangeEach)(range.startCol, range.endCol, function (column) { - if (copyableColumns.indexOf(column) === -1) { - copyableColumns.push(column); - } - }); - }); - // Concat all rows and columns data defined in ranges into one copyable string - (0, _array.arrayEach)(copyableRows, function (row) { - var rowSet = []; - - (0, _array.arrayEach)(copyableColumns, function (column) { - rowSet.push(_this3.hot.getCopyableData(row, column)); - }); - - dataSet.push(rowSet); - }); - - return _SheetClip2.default.stringify(dataSet); - } - - /** - * Create copyable text releated to range objects. - * - * @since 0.31.1 - * @param {Array} ranges Array of Objects with properties `startRow`, `startCol`, `endRow` and `endCol`. - * @returns {Array} Returns array of arrays which will be copied into clipboard. - */ - - }, { - key: 'getRangedData', - value: function getRangedData(ranges) { - var _this4 = this; - - var dataSet = []; - var copyableRows = []; - var copyableColumns = []; - - // Count all copyable rows and columns - (0, _array.arrayEach)(ranges, function (range) { - (0, _number.rangeEach)(range.startRow, range.endRow, function (row) { - if (copyableRows.indexOf(row) === -1) { - copyableRows.push(row); - } - }); - (0, _number.rangeEach)(range.startCol, range.endCol, function (column) { - if (copyableColumns.indexOf(column) === -1) { - copyableColumns.push(column); - } - }); - }); - // Concat all rows and columns data defined in ranges into one copyable string - (0, _array.arrayEach)(copyableRows, function (row) { - var rowSet = []; - - (0, _array.arrayEach)(copyableColumns, function (column) { - rowSet.push(_this4.hot.getCopyableData(row, column)); - }); - - dataSet.push(rowSet); - }); - - return dataSet; - } - - /** - * Copy action. - * - * @param {Boolean} isTriggeredByClick Flag to determine that copy action was executed by the mouse click. - */ - - }, { - key: 'copy', - value: function copy(isTriggeredByClick) { - var rangedData = this.getRangedData(this.copyableRanges); - - var allowCopying = !!this.hot.runHooks('beforeCopy', rangedData, this.copyableRanges); - - if (allowCopying) { - this.textarea.setValue(_SheetClip2.default.stringify(rangedData)); - this.textarea.select(); - - if (isTriggeredByClick) { - document.execCommand('copy'); - } - - this.hot.runHooks('afterCopy', rangedData, this.copyableRanges); - } else { - this.textarea.setValue(''); - } - } - - /** - * Cut action. - * - * @param {Boolean} isTriggeredByClick Flag to determine that cut action was executed by the mouse click. - */ - - }, { - key: 'cut', - value: function cut(isTriggeredByClick) { - var rangedData = this.getRangedData(this.copyableRanges); - - var allowCuttingOut = !!this.hot.runHooks('beforeCut', rangedData, this.copyableRanges); - - if (allowCuttingOut) { - this.textarea.setValue(_SheetClip2.default.stringify(rangedData)); - this.hot.selection.empty(); - this.textarea.select(); - - if (isTriggeredByClick) { - document.execCommand('cut'); - } - - this.hot.runHooks('afterCut', rangedData, this.copyableRanges); - } else { - this.textarea.setValue(''); - } - } - - /** - * Simulated paste action. - * - * @param {String} [value=''] New value, which should be `pasted`. - */ - - }, { - key: 'paste', - value: function paste() { - var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - - this.textarea.setValue(value); - - this.onPaste(); - this.onInput(); - } - - /** - * Register event listeners. - * - * @private - */ - - }, { - key: 'registerEvents', - value: function registerEvents() { - var _this5 = this; - - this.eventManager.addEventListener(this.textarea.element, 'paste', function (event) { - return _this5.onPaste(event); - }); - this.eventManager.addEventListener(this.textarea.element, 'input', function (event) { - return _this5.onInput(event); - }); - } - - /** - * Trigger to make possible observe `onInput` in textarea. - * - * @private - */ - - }, { - key: 'triggerPaste', - value: function triggerPaste() { - this.textarea.select(); - - this.onPaste(); - } - - /** - * `paste` event callback on textarea element. - * - * @private - */ - - }, { - key: 'onPaste', - value: function onPaste() { - var priv = privatePool.get(this); - - priv.isTriggeredByPaste = true; - } - - /** - * `input` event callback is called after `paste` event callback. - * - * @private - */ - - }, { - key: 'onInput', - value: function onInput() { - var _this6 = this; - - var priv = privatePool.get(this); - - if (!this.hot.isListening() || !priv.isTriggeredByPaste) { - return; - } - - priv.isTriggeredByPaste = false; - - var input = void 0, - inputArray = void 0, - selected = void 0, - coordsFrom = void 0, - coordsTo = void 0, - cellRange = void 0, - topLeftCorner = void 0, - bottomRightCorner = void 0, - areaStart = void 0, - areaEnd = void 0; - - input = this.textarea.getValue(); - inputArray = _SheetClip2.default.parse(input); - - var allowPasting = !!this.hot.runHooks('beforePaste', inputArray, this.copyableRanges); - - if (!allowPasting) { - return; - } - - selected = this.hot.getSelected(); - coordsFrom = new _src.CellCoords(selected[0], selected[1]); - coordsTo = new _src.CellCoords(selected[2], selected[3]); - cellRange = new _src.CellRange(coordsFrom, coordsFrom, coordsTo); - topLeftCorner = cellRange.getTopLeftCorner(); - bottomRightCorner = cellRange.getBottomRightCorner(); - areaStart = topLeftCorner; - areaEnd = new _src.CellCoords(Math.max(bottomRightCorner.row, inputArray.length - 1 + topLeftCorner.row), Math.max(bottomRightCorner.col, inputArray[0].length - 1 + topLeftCorner.col)); - - var isSelRowAreaCoverInputValue = coordsTo.row - coordsFrom.row >= inputArray.length - 1; - var isSelColAreaCoverInputValue = coordsTo.col - coordsFrom.col >= inputArray[0].length - 1; - - this.hot.addHookOnce('afterChange', function (changes, source) { - var changesLength = changes ? changes.length : 0; - - if (changesLength) { - var offset = { row: 0, col: 0 }; - var highestColumnIndex = -1; - - (0, _array.arrayEach)(changes, function (change, index) { - var nextChange = changesLength > index + 1 ? changes[index + 1] : null; - - if (nextChange) { - if (!isSelRowAreaCoverInputValue) { - offset.row += Math.max(nextChange[0] - change[0] - 1, 0); - } - if (!isSelColAreaCoverInputValue && change[1] > highestColumnIndex) { - highestColumnIndex = change[1]; - offset.col += Math.max(nextChange[1] - change[1] - 1, 0); - } - } - }); - _this6.hot.selectCell(areaStart.row, areaStart.col, areaEnd.row + offset.row, areaEnd.col + offset.col); - } - }); - - this.hot.populateFromArray(areaStart.row, areaStart.col, inputArray, areaEnd.row, areaEnd.col, 'CopyPaste.paste', this.pasteMode); - this.hot.runHooks('afterPaste', inputArray, this.copyableRanges); - } - - /** - * Add copy, cut and paste options to the Context Menu. - * - * @private - * @param {Object} options Contains default added options of the Context Menu. - */ - - }, { - key: 'onAfterContextMenuDefaultOptions', - value: function onAfterContextMenuDefaultOptions(options) { - options.items.push({ - name: '---------' - }, (0, _copy2.default)(this), (0, _cut2.default)(this)); - } - - /** - * beforeKeyDown callback. - * - * @private - * @param {Event} event - */ - - }, { - key: 'onBeforeKeyDown', - value: function onBeforeKeyDown(event) { - var _this7 = this; - - if (!this.hot.getSelected()) { - return; - } - if (this.hot.getActiveEditor() && this.hot.getActiveEditor().isOpened()) { - return; - } - if ((0, _event.isImmediatePropagationStopped)(event)) { - return; - } - if (!this.textarea.isActive() && (0, _element.getSelectionText)()) { - return; - } - - if ((0, _unicode.isCtrlKey)(event.keyCode)) { - // When fragmentSelection is enabled and some text is selected then don't blur selection calling 'setCopyableText' - if (this.hot.getSettings().fragmentSelection && (0, _element.getSelectionText)()) { - return; - } - - // when CTRL is pressed, prepare selectable text in textarea - this.setCopyableText(); - (0, _event.stopImmediatePropagation)(event); - - return; - } - - // catch CTRL but not right ALT (which in some systems triggers ALT+CTRL) - var ctrlDown = (event.ctrlKey || event.metaKey) && !event.altKey; - - if (ctrlDown) { - if (event.keyCode == _unicode.KEY_CODES.A) { - setTimeout(function () { - _this7.setCopyableText(); - }, 0); - } - if (event.keyCode == _unicode.KEY_CODES.X) { - this.cut(); - } - if (event.keyCode == _unicode.KEY_CODES.C) { - this.copy(); - } - if (event.keyCode == _unicode.KEY_CODES.V) { - this.triggerPaste(); - } - } - } - - /** - * Destroy plugin instance. - */ - - }, { - key: 'destroy', - value: function destroy() { - if (this.textarea) { - this.textarea.destroy(); - } - - _get(CopyPaste.prototype.__proto__ || Object.getPrototypeOf(CopyPaste.prototype), 'destroy', this).call(this); - } - }]); - - return CopyPaste; -}(_base2.default); - -(0, _plugins.registerPlugin)('CopyPaste', CopyPaste); - -exports.default = CopyPaste; - -/***/ }), -/* 277 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class Textarea - * - * @plugin CopyPaste - */ -var Textarea = function () { - _createClass(Textarea, null, [{ - key: 'getSingleton', - value: function getSingleton() { - globalSingleton.append(); - - return globalSingleton; - } - }]); - - function Textarea() { - _classCallCheck(this, Textarea); - - /** - * Main textarea element. - * - * @type {HTMLElement} - */ - this.element = void 0; - /** - * Store information about append to the document.body. - * - * @type {Boolean} - */ - this.isAppended = false; - /** - * Reference counter. - * - * @type {Number} - */ - this.refCounter = 0; - } - - /** - * Apends textarea element to the `body` - */ - - - _createClass(Textarea, [{ - key: 'append', - value: function append() { - if (this.hasBeenDestroyed()) { - this.create(); - } - - this.refCounter++; - - if (!this.isAppended && document.body) { - if (document.body) { - this.isAppended = true; - document.body.appendChild(this.element); - } - } - } - - /** - * Prepares textarea element with proper attributes. - */ - - }, { - key: 'create', - value: function create() { - this.element = document.createElement('textarea'); - this.element.id = 'HandsontableCopyPaste'; - this.element.className = 'copyPaste'; - this.element.tabIndex = -1; - this.element.autocomplete = 'off'; - this.element.wrap = 'off'; - } - - /** - * Deselects textarea element if is active. - */ - - }, { - key: 'deselect', - value: function deselect() { - if (this.element === document.activeElement) { - document.activeElement.blur(); - } - } - - /** - * Destroy instance - */ - - }, { - key: 'destroy', - value: function destroy() { - this.refCounter--; - this.refCounter = this.refCounter < 0 ? 0 : this.refCounter; - - if (this.hasBeenDestroyed() && this.element && this.element.parentNode) { - this.element.parentNode.removeChild(this.element); - this.element = null; - this.isAppended = false; - } - } - - /** - * Getter for the element. - * - * @returns {String} - */ - - }, { - key: 'getValue', - value: function getValue() { - return this.element.value; - } - - /** - * Check if instance has been destroyed - * - * @returns {Boolean} - */ - - }, { - key: 'hasBeenDestroyed', - value: function hasBeenDestroyed() { - return this.refCounter < 1; - } - - /** - * Check if the element is an active element in frame. - * - * @returns {Boolean} - */ - - }, { - key: 'isActive', - value: function isActive() { - return this.element === document.activeElement; - } - - /** - * Sets focus on the element and select content. - */ - - }, { - key: 'select', - value: function select() { - this.element.focus(); - this.element.select(); - } - - /** - * Setter for the element. - * - * @param {String} data Value which should be insert into the element. - */ - - }, { - key: 'setValue', - value: function setValue(data) { - this.element.value = data; - } - }]); - - return Textarea; -}(); - -var globalSingleton = new Textarea(); - -exports.default = Textarea; - -/***/ }), -/* 278 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = copyItem; -function copyItem(copyPastePlugin) { - return { - key: 'copy', - name: 'Copy', - callback: function callback() { - copyPastePlugin.setCopyableText(); - copyPastePlugin.copy(true); - }, - disabled: function disabled() { - return !copyPastePlugin.hot.getSelected(); - }, - - hidden: false - }; -} - -/***/ }), -/* 279 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = cutItem; -function cutItem(copyPastePlugin) { - return { - key: 'cut', - name: 'Cut', - callback: function callback() { - copyPastePlugin.setCopyableText(); - copyPastePlugin.cut(true); - }, - disabled: function disabled() { - return !copyPastePlugin.hot.getSelected(); - }, - - hidden: false - }; -} - -/***/ }), -/* 280 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 281 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _plugins = __webpack_require__(5); - -var _object = __webpack_require__(1); - -var _src = __webpack_require__(12); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function CustomBorders() {} -/** * - * Current instance (table where borders should be placed) - */ -var instance; - -/** - * This plugin enables an option to apply custom borders through the context menu (configurable with context menu key `borders`). - * - * To initialize Handsontable with predefined custom borders, provide cell coordinates and border styles in a form of an array. - * - * See [Custom Borders](http://docs.handsontable.com/demo-custom-borders.html) demo for more examples. - * - * @example - * ```js - * ... - * customBorders: [ - * {range: { - * from: {row: 1, col: 1}, - * to: {row: 3, col: 4}}, - * left: {}, - * right: {}, - * top: {}, - * bottom: {} - * } - * ], - * ... - * - * // or - * ... - * customBorders: [ - * {row: 2, col: 2, left: {width: 2, color: 'red'}, - * right: {width: 1, color: 'green'}, top: '', bottom: ''} - * ], - * ... - * ``` - * @private - * @class CustomBorders - * @plugin CustomBorders - */ - -/** * - * Check if plugin should be enabled. - */ -var checkEnable = function checkEnable(customBorders) { - if (typeof customBorders === 'boolean') { - if (customBorders === true) { - return true; - } - } - if ((typeof customBorders === 'undefined' ? 'undefined' : _typeof(customBorders)) === 'object') { - if (customBorders.length > 0) { - return true; - } - } - - return false; -}; - -/** * - * Initialize plugin. - */ -var init = function init() { - if (checkEnable(this.getSettings().customBorders)) { - if (!this.customBorders) { - instance = this; - this.customBorders = new CustomBorders(); - } - } -}; - -/** * - * Get index of border from the settings. - * - * @param {String} className - * @returns {Number} - */ -var getSettingIndex = function getSettingIndex(className) { - for (var i = 0; i < instance.view.wt.selections.length; i++) { - if (instance.view.wt.selections[i].settings.className == className) { - return i; - } - } - - return -1; -}; - -/** * - * Insert WalkontableSelection instance into Walkontable settings. - * - * @param border - */ -var insertBorderIntoSettings = function insertBorderIntoSettings(border) { - var coordinates = { - row: border.row, - col: border.col - }; - var selection = new _src.Selection(border, new _src.CellRange(coordinates, coordinates, coordinates)); - var index = getSettingIndex(border.className); - - if (index >= 0) { - instance.view.wt.selections[index] = selection; - } else { - instance.view.wt.selections.push(selection); - } -}; - -/** * - * Prepare borders from setting (single cell). - * - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @param borderObj - */ -var prepareBorderFromCustomAdded = function prepareBorderFromCustomAdded(row, col, borderObj) { - var border = createEmptyBorders(row, col); - border = extendDefaultBorder(border, borderObj); - this.setCellMeta(row, col, 'borders', border); - - insertBorderIntoSettings(border); -}; - -/** * - * Prepare borders from setting (object). - * - * @param {Object} rowObj - */ -var prepareBorderFromCustomAddedRange = function prepareBorderFromCustomAddedRange(rowObj) { - var range = rowObj.range; - - for (var row = range.from.row; row <= range.to.row; row++) { - for (var col = range.from.col; col <= range.to.col; col++) { - var border = createEmptyBorders(row, col); - var add = 0; - - if (row == range.from.row) { - add++; - - if ((0, _object.hasOwnProperty)(rowObj, 'top')) { - border.top = rowObj.top; - } - } - - if (row == range.to.row) { - add++; - - if ((0, _object.hasOwnProperty)(rowObj, 'bottom')) { - border.bottom = rowObj.bottom; - } - } - - if (col == range.from.col) { - add++; - - if ((0, _object.hasOwnProperty)(rowObj, 'left')) { - border.left = rowObj.left; - } - } - - if (col == range.to.col) { - add++; - - if ((0, _object.hasOwnProperty)(rowObj, 'right')) { - border.right = rowObj.right; - } - } - - if (add > 0) { - this.setCellMeta(row, col, 'borders', border); - insertBorderIntoSettings(border); - } - } - } -}; - -/** * - * Create separated class name for borders for each cell. - * - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @returns {String} - */ -var createClassName = function createClassName(row, col) { - return 'border_row' + row + 'col' + col; -}; - -/** * - * Create default single border for each position (top/right/bottom/left). - * - * @returns {Object} `{{width: number, color: string}}` - */ -var createDefaultCustomBorder = function createDefaultCustomBorder() { - return { - width: 1, - color: '#000' - }; -}; - -/** * - * Create default object for empty border. - * - * @returns {Object} `{{hide: boolean}}` - */ -var createSingleEmptyBorder = function createSingleEmptyBorder() { - return { - hide: true - }; -}; - -/** * - * Create default Handsontable border object. - * - * @returns {Object} `{{width: number, color: string, cornerVisible: boolean}}` - */ -var createDefaultHtBorder = function createDefaultHtBorder() { - return { - width: 1, - color: '#000', - cornerVisible: false - }; -}; - -/** * - * Prepare empty border for each cell with all custom borders hidden. - * - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - * @returns {Object} `{{className: *, border: *, row: *, col: *, top: {hide: boolean}, right: {hide: boolean}, bottom: {hide: boolean}, left: {hide: boolean}}}` - */ -var createEmptyBorders = function createEmptyBorders(row, col) { - return { - className: createClassName(row, col), - border: createDefaultHtBorder(), - row: row, - col: col, - top: createSingleEmptyBorder(), - right: createSingleEmptyBorder(), - bottom: createSingleEmptyBorder(), - left: createSingleEmptyBorder() - }; -}; - -var extendDefaultBorder = function extendDefaultBorder(defaultBorder, customBorder) { - if ((0, _object.hasOwnProperty)(customBorder, 'border')) { - defaultBorder.border = customBorder.border; - } - - if ((0, _object.hasOwnProperty)(customBorder, 'top')) { - defaultBorder.top = customBorder.top; - } - - if ((0, _object.hasOwnProperty)(customBorder, 'right')) { - defaultBorder.right = customBorder.right; - } - - if ((0, _object.hasOwnProperty)(customBorder, 'bottom')) { - defaultBorder.bottom = customBorder.bottom; - } - - if ((0, _object.hasOwnProperty)(customBorder, 'left')) { - defaultBorder.left = customBorder.left; - } - - return defaultBorder; -}; - -/** - * Remove borders divs from DOM. - * - * @param borderClassName - */ -var removeBordersFromDom = function removeBordersFromDom(borderClassName) { - var borders = document.querySelectorAll('.' + borderClassName); - - for (var i = 0; i < borders.length; i++) { - if (borders[i]) { - if (borders[i].nodeName != 'TD') { - var parent = borders[i].parentNode; - - if (parent.parentNode) { - parent.parentNode.removeChild(parent); - } - } - } - } -}; - -/** * - * Remove border (triggered from context menu). - * - * @param {Number} row Visual row index. - * @param {Number} col Visual column index. - */ -var removeAllBorders = function removeAllBorders(row, col) { - var borderClassName = createClassName(row, col); - removeBordersFromDom(borderClassName); - this.removeCellMeta(row, col, 'borders'); -}; - -/** * - * Set borders for each cell re. to border position - * - * @param row Visual row index. - * @param col Visual column index. - * @param place - * @param remove - */ -var setBorder = function setBorder(row, col, place, remove) { - - var bordersMeta = this.getCellMeta(row, col).borders; - - if (!bordersMeta || bordersMeta.border == undefined) { - bordersMeta = createEmptyBorders(row, col); - } - - if (remove) { - bordersMeta[place] = createSingleEmptyBorder(); - } else { - bordersMeta[place] = createDefaultCustomBorder(); - } - - this.setCellMeta(row, col, 'borders', bordersMeta); - - var borderClassName = createClassName(row, col); - removeBordersFromDom(borderClassName); - insertBorderIntoSettings(bordersMeta); - - this.render(); -}; - -/** * - * Prepare borders based on cell and border position - * - * @param range - * @param place - * @param remove - */ -var prepareBorder = function prepareBorder(range, place, remove) { - - if (range.from.row == range.to.row && range.from.col == range.to.col) { - if (place == 'noBorders') { - removeAllBorders.call(this, range.from.row, range.from.col); - } else { - setBorder.call(this, range.from.row, range.from.col, place, remove); - } - } else { - switch (place) { - case 'noBorders': - for (var column = range.from.col; column <= range.to.col; column++) { - for (var row = range.from.row; row <= range.to.row; row++) { - removeAllBorders.call(this, row, column); - } - } - break; - case 'top': - for (var topCol = range.from.col; topCol <= range.to.col; topCol++) { - setBorder.call(this, range.from.row, topCol, place, remove); - } - break; - case 'right': - for (var rowRight = range.from.row; rowRight <= range.to.row; rowRight++) { - setBorder.call(this, rowRight, range.to.col, place); - } - break; - case 'bottom': - for (var bottomCol = range.from.col; bottomCol <= range.to.col; bottomCol++) { - setBorder.call(this, range.to.row, bottomCol, place); - } - break; - case 'left': - for (var rowLeft = range.from.row; rowLeft <= range.to.row; rowLeft++) { - setBorder.call(this, rowLeft, range.from.col, place); - } - break; - default: - break; - } - } -}; - -/** * - * Check if selection has border by className - * - * @param hot - * @param direction - */ -var checkSelectionBorders = function checkSelectionBorders(hot, direction) { - var atLeastOneHasBorder = false; - - hot.getSelectedRange().forAll(function (r, c) { - var metaBorders = hot.getCellMeta(r, c).borders; - - if (metaBorders) { - if (direction) { - if (!(0, _object.hasOwnProperty)(metaBorders[direction], 'hide')) { - atLeastOneHasBorder = true; - return false; // breaks forAll - } - } else { - atLeastOneHasBorder = true; - return false; // breaks forAll - } - } - }); - return atLeastOneHasBorder; -}; - -/** * - * Mark label in contextMenu as selected - * - * @param label - * @returns {string} - */ -var markSelected = function markSelected(label) { - return '' + String.fromCharCode(10003) + '' + label; // workaround for https://github.com/handsontable/handsontable/issues/1946 -}; - -/** * - * Add border options to context menu - * - * @param defaultOptions - */ -var addBordersOptionsToContextMenu = function addBordersOptionsToContextMenu(defaultOptions) { - if (!this.getSettings().customBorders) { - return; - } - - defaultOptions.items.push({ - name: '---------' - }); - defaultOptions.items.push({ - key: 'borders', - name: 'Borders', - disabled: function disabled() { - return this.selection.selectedHeader.corner; - }, - - submenu: { - items: [{ - key: 'borders:top', - name: function name() { - var label = 'Top'; - var hasBorder = checkSelectionBorders(this, 'top'); - if (hasBorder) { - label = markSelected(label); - } - - return label; - }, - callback: function callback() { - var hasBorder = checkSelectionBorders(this, 'top'); - prepareBorder.call(this, this.getSelectedRange(), 'top', hasBorder); - } - }, { - key: 'borders:right', - name: function name() { - var label = 'Right'; - var hasBorder = checkSelectionBorders(this, 'right'); - if (hasBorder) { - label = markSelected(label); - } - return label; - }, - callback: function callback() { - var hasBorder = checkSelectionBorders(this, 'right'); - prepareBorder.call(this, this.getSelectedRange(), 'right', hasBorder); - } - }, { - key: 'borders:bottom', - name: function name() { - var label = 'Bottom'; - var hasBorder = checkSelectionBorders(this, 'bottom'); - if (hasBorder) { - label = markSelected(label); - } - return label; - }, - callback: function callback() { - var hasBorder = checkSelectionBorders(this, 'bottom'); - prepareBorder.call(this, this.getSelectedRange(), 'bottom', hasBorder); - } - }, { - key: 'borders:left', - name: function name() { - var label = 'Left'; - var hasBorder = checkSelectionBorders(this, 'left'); - if (hasBorder) { - label = markSelected(label); - } - - return label; - }, - callback: function callback() { - var hasBorder = checkSelectionBorders(this, 'left'); - prepareBorder.call(this, this.getSelectedRange(), 'left', hasBorder); - } - }, { - key: 'borders:no_borders', - name: 'Remove border(s)', - callback: function callback() { - prepareBorder.call(this, this.getSelectedRange(), 'noBorders'); - }, - disabled: function disabled() { - return !checkSelectionBorders(this); - } - }] - } - }); -}; - -_pluginHooks2.default.getSingleton().add('beforeInit', init); -_pluginHooks2.default.getSingleton().add('afterContextMenuDefaultOptions', addBordersOptionsToContextMenu); -_pluginHooks2.default.getSingleton().add('afterInit', function () { - var customBorders = this.getSettings().customBorders; - - if (customBorders) { - for (var i = 0; i < customBorders.length; i++) { - if (customBorders[i].range) { - prepareBorderFromCustomAddedRange.call(this, customBorders[i]); - } else { - prepareBorderFromCustomAdded.call(this, customBorders[i].row, customBorders[i].col, customBorders[i]); - } - } - - this.render(); - this.view.wt.draw(true); - } -}); - -/***/ }), -/* 282 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _plugins = __webpack_require__(5); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * @description - * Plugin used to scroll Handsontable by selecting a cell and dragging outside of the visible viewport. - * - * @private - * @class DragToScroll - * @plugin DragToScroll - */ -function DragToScroll() { - this.boundaries = null; - this.callback = null; -} - -/** - * @param boundaries {Object} compatible with getBoundingClientRect - */ -DragToScroll.prototype.setBoundaries = function (boundaries) { - this.boundaries = boundaries; -}; - -/** - * @param callback {Function} - */ -DragToScroll.prototype.setCallback = function (callback) { - this.callback = callback; -}; - -/** - * Check if mouse position (x, y) is outside of the viewport - * @param x - * @param y - */ -DragToScroll.prototype.check = function (x, y) { - var diffX = 0; - var diffY = 0; - - if (y < this.boundaries.top) { - // y is less than top - diffY = y - this.boundaries.top; - } else if (y > this.boundaries.bottom) { - // y is more than bottom - diffY = y - this.boundaries.bottom; - } - - if (x < this.boundaries.left) { - // x is less than left - diffX = x - this.boundaries.left; - } else if (x > this.boundaries.right) { - // x is more than right - diffX = x - this.boundaries.right; - } - - this.callback(diffX, diffY); -}; - -var dragToScroll; -var instance; - -var setupListening = function setupListening(instance) { - instance.dragToScrollListening = false; - var scrollHandler = instance.view.wt.wtTable.holder; // native scroll - dragToScroll = new DragToScroll(); - - if (scrollHandler === window) { - // not much we can do currently - return; - } - - dragToScroll.setBoundaries(scrollHandler.getBoundingClientRect()); - dragToScroll.setCallback(function (scrollX, scrollY) { - if (scrollX < 0) { - scrollHandler.scrollLeft -= 50; - } else if (scrollX > 0) { - scrollHandler.scrollLeft += 50; - } - - if (scrollY < 0) { - scrollHandler.scrollTop -= 20; - } else if (scrollY > 0) { - scrollHandler.scrollTop += 20; - } - }); - - instance.dragToScrollListening = true; -}; - -_pluginHooks2.default.getSingleton().add('afterInit', function () { - var instance = this; - var eventManager = new _eventManager2.default(this); - - eventManager.addEventListener(document, 'mouseup', function () { - instance.dragToScrollListening = false; - }); - - eventManager.addEventListener(document, 'mousemove', function (event) { - if (instance.dragToScrollListening) { - dragToScroll.check(event.clientX, event.clientY); - } - }); -}); - -_pluginHooks2.default.getSingleton().add('afterDestroy', function () { - new _eventManager2.default(this).clear(); -}); - -_pluginHooks2.default.getSingleton().add('afterOnCellMouseDown', function () { - setupListening(this); -}); - -_pluginHooks2.default.getSingleton().add('afterOnCellCornerMouseDown', function () { - setupListening(this); -}); - -exports.default = DragToScroll; - -/***/ }), -/* 283 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _plugins = __webpack_require__(5); - -var _array = __webpack_require__(2); - -var _freezeColumn = __webpack_require__(284); - -var _freezeColumn2 = _interopRequireDefault(_freezeColumn); - -var _unfreezeColumn = __webpack_require__(285); - -var _unfreezeColumn2 = _interopRequireDefault(_unfreezeColumn); - -__webpack_require__(286); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var privatePool = new WeakMap(); -/** - * This plugin allows to manually "freeze" and "unfreeze" a column using an entry in the Context Menu. - * You can turn it on by setting a `manualColumnFreeze` property to `true`. - * - * @plugin ManualColumnFreeze - * @dependencies ManualColumnMove - */ - -var ManualColumnFreeze = function (_BasePlugin) { - _inherits(ManualColumnFreeze, _BasePlugin); - - function ManualColumnFreeze(hotInstance) { - _classCallCheck(this, ManualColumnFreeze); - - var _this = _possibleConstructorReturn(this, (ManualColumnFreeze.__proto__ || Object.getPrototypeOf(ManualColumnFreeze)).call(this, hotInstance)); - - privatePool.set(_this, { - moveByFreeze: false, - afterFirstUse: false - }); - /** - * Original column positions - * - * @type {Array} - */ - _this.frozenColumnsBasePositions = []; - /** - * Reference to the `ManualColumnMove` plugin. - */ - _this.manualColumnMovePlugin = void 0; - return _this; - } - - /** - * Check if the plugin is enabled in the Handsontable settings. - * - * @returns {Boolean} - */ - - - _createClass(ManualColumnFreeze, [{ - key: 'isEnabled', - value: function isEnabled() { - return !!this.hot.getSettings().manualColumnFreeze; - } - - /** - * Enable plugin for this Handsontable instance. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this2 = this; - - if (this.enabled) { - return; - } - - this.addHook('afterContextMenuDefaultOptions', function (options) { - return _this2.addContextMenuEntry(options); - }); - this.addHook('afterInit', function () { - return _this2.onAfterInit(); - }); - this.addHook('beforeColumnMove', function (rows, target) { - return _this2.onBeforeColumnMove(rows, target); - }); - - _get(ManualColumnFreeze.prototype.__proto__ || Object.getPrototypeOf(ManualColumnFreeze.prototype), 'enablePlugin', this).call(this); - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - var priv = privatePool.get(this); - - priv.afterFirstUse = false; - priv.moveByFreeze = false; - - _get(ManualColumnFreeze.prototype.__proto__ || Object.getPrototypeOf(ManualColumnFreeze.prototype), 'disablePlugin', this).call(this); - } - - /** - * Updates the plugin to use the latest options you have specified. - */ - - }, { - key: 'updatePlugin', - value: function updatePlugin() { - this.disablePlugin(); - this.enablePlugin(); - - _get(ManualColumnFreeze.prototype.__proto__ || Object.getPrototypeOf(ManualColumnFreeze.prototype), 'updatePlugin', this).call(this); - } - - /** - * Freeze the given column (add it to fixed columns). - * - * @param {Number} column Visual column index. - */ - - }, { - key: 'freezeColumn', - value: function freezeColumn(column) { - var priv = privatePool.get(this); - var settings = this.hot.getSettings(); - - if (!priv.afterFirstUse) { - priv.afterFirstUse = true; - } - - if (settings.fixedColumnsLeft === this.hot.countCols() || column <= settings.fixedColumnsLeft - 1) { - return; // already fixed - } - - priv.moveByFreeze = true; - - if (column !== this.getMovePlugin().columnsMapper.getValueByIndex(column)) { - this.frozenColumnsBasePositions[settings.fixedColumnsLeft] = column; - } - - this.getMovePlugin().moveColumn(column, settings.fixedColumnsLeft++); - } - - /** - * Unfreeze the given column (remove it from fixed columns and bring to it's previous position). - * - * @param {Number} column Visual column index. - */ - - }, { - key: 'unfreezeColumn', - value: function unfreezeColumn(column) { - var priv = privatePool.get(this); - var settings = this.hot.getSettings(); - - if (!priv.afterFirstUse) { - priv.afterFirstUse = true; - } - - if (settings.fixedColumnsLeft <= 0 || column > settings.fixedColumnsLeft - 1) { - return; // not fixed - } - - var returnCol = this.getBestColumnReturnPosition(column); - - priv.moveByFreeze = true; - settings.fixedColumnsLeft--; - - this.getMovePlugin().moveColumn(column, returnCol + 1); - } - - /** - * Get the reference to the ManualColumnMove plugin. - * - * @private - * @returns {Object} - */ - - }, { - key: 'getMovePlugin', - value: function getMovePlugin() { - if (!this.manualColumnMovePlugin) { - this.manualColumnMovePlugin = this.hot.getPlugin('manualColumnMove'); - } - - return this.manualColumnMovePlugin; - } - - /** - * Estimates the most fitting return position for unfrozen column. - * - * @private - * @param {Number} column Visual column index. - */ - - }, { - key: 'getBestColumnReturnPosition', - value: function getBestColumnReturnPosition(column) { - var movePlugin = this.getMovePlugin(); - var settings = this.hot.getSettings(); - var i = settings.fixedColumnsLeft; - var j = movePlugin.columnsMapper.getValueByIndex(i); - var initialCol = void 0; - - if (this.frozenColumnsBasePositions[column] == null) { - initialCol = movePlugin.columnsMapper.getValueByIndex(column); - - while (j < initialCol) { - i++; - j = movePlugin.columnsMapper.getValueByIndex(i); - } - } else { - initialCol = this.frozenColumnsBasePositions[column]; - this.frozenColumnsBasePositions[column] = void 0; - - while (j <= initialCol) { - i++; - j = movePlugin.columnsMapper.getValueByIndex(i); - } - i = j; - } - - return i - 1; - } - /** - * Add the manualColumnFreeze context menu entries. - * - * @private - * @param {Object} options Context menu options. - */ - - }, { - key: 'addContextMenuEntry', - value: function addContextMenuEntry(options) { - options.items.push({ name: '---------' }, (0, _freezeColumn2.default)(this), (0, _unfreezeColumn2.default)(this)); - } - - /** - * Enabling `manualColumnMove` plugin on `afterInit` hook. - * - * @private - */ - - }, { - key: 'onAfterInit', - value: function onAfterInit() { - if (!this.getMovePlugin().isEnabled()) { - this.getMovePlugin().enablePlugin(); - } - } - - /** - * Prevent moving the rows from/to fixed area. - * - * @private - * @param {Array} rows - * @param {Number} target - */ - - }, { - key: 'onBeforeColumnMove', - value: function onBeforeColumnMove(rows, target) { - var priv = privatePool.get(this); - - if (priv.afterFirstUse && !priv.moveByFreeze) { - var frozenLen = this.hot.getSettings().fixedColumnsLeft; - var disallowMoving = target < frozenLen; - - if (!disallowMoving) { - (0, _array.arrayEach)(rows, function (value, index, array) { - if (value < frozenLen) { - disallowMoving = true; - return false; - } - }); - } - - if (disallowMoving) { - return false; - } - } - - if (priv.moveByFreeze) { - priv.moveByFreeze = false; - } - } - - /** - * Destroy plugin instance. - */ - - }, { - key: 'destroy', - value: function destroy() { - _get(ManualColumnFreeze.prototype.__proto__ || Object.getPrototypeOf(ManualColumnFreeze.prototype), 'destroy', this).call(this); - } - }]); - - return ManualColumnFreeze; -}(_base2.default); - -(0, _plugins.registerPlugin)('manualColumnFreeze', ManualColumnFreeze); - -exports.default = ManualColumnFreeze; - -/***/ }), -/* 284 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = freezeColumnItem; -function freezeColumnItem(manualColumnFreezePlugin) { - return { - key: 'freeze_column', - name: 'Freeze this column', - callback: function callback() { - var selectedColumn = this.getSelectedRange().from.col; - - manualColumnFreezePlugin.freezeColumn(selectedColumn); - - this.render(); - this.view.wt.wtOverlays.adjustElementsSize(true); - }, - hidden: function hidden() { - var selection = this.getSelectedRange(); - var hide = false; - - if (selection === void 0) { - hide = true; - } else if (selection.from.col !== selection.to.col || selection.from.col <= this.getSettings().fixedColumnsLeft - 1) { - hide = true; - } - - return hide; - } - }; -} - -/***/ }), -/* 285 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; -exports.default = unfreezeColumnItem; -function unfreezeColumnItem(manualColumnFreezePlugin) { - return { - key: 'unfreeze_column', - name: 'Unfreeze this column', - callback: function callback() { - var selectedColumn = this.getSelectedRange().from.col; - - manualColumnFreezePlugin.unfreezeColumn(selectedColumn); - - this.render(); - this.view.wt.wtOverlays.adjustElementsSize(true); - }, - hidden: function hidden() { - var selection = this.getSelectedRange(); - var hide = false; - - if (selection === void 0) { - hide = true; - } else if (selection.from.col !== selection.to.col || selection.from.col >= this.getSettings().fixedColumnsLeft) { - hide = true; - } - - return hide; - } - }; -} - -/***/ }), -/* 286 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 287 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _array = __webpack_require__(2); - -var _element = __webpack_require__(0); - -var _number = __webpack_require__(6); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _plugins = __webpack_require__(5); - -var _columnsMapper = __webpack_require__(288); - -var _columnsMapper2 = _interopRequireDefault(_columnsMapper); - -var _backlight = __webpack_require__(289); - -var _backlight2 = _interopRequireDefault(_backlight); - -var _guideline = __webpack_require__(290); - -var _guideline2 = _interopRequireDefault(_guideline); - -var _src = __webpack_require__(12); - -__webpack_require__(291); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -_pluginHooks2.default.getSingleton().register('beforeColumnMove'); -_pluginHooks2.default.getSingleton().register('afterColumnMove'); -_pluginHooks2.default.getSingleton().register('unmodifyCol'); - -var privatePool = new WeakMap(); -var CSS_PLUGIN = 'ht__manualColumnMove'; -var CSS_SHOW_UI = 'show-ui'; -var CSS_ON_MOVING = 'on-moving--columns'; -var CSS_AFTER_SELECTION = 'after-selection--columns'; - -/** - * @plugin ManualColumnMove - * - * @description - * This plugin allows to change columns order. - * - * API: - * - moveColumn - move single column to the new position. - * - moveColumns - move many columns (as an array of indexes) to the new position. - * - * If you want apply visual changes, you have to call manually the render() method on the instance of Handsontable. - * - * UI components: - * - backlight - highlight of selected columns. - * - guideline - line which shows where rows has been moved. - * - * @class ManualColumnMove - * @plugin ManualColumnMove - */ - -var ManualColumnMove = function (_BasePlugin) { - _inherits(ManualColumnMove, _BasePlugin); - - function ManualColumnMove(hotInstance) { - _classCallCheck(this, ManualColumnMove); - - /** - * Set up WeakMap of plugin to sharing private parameters; - */ - var _this = _possibleConstructorReturn(this, (ManualColumnMove.__proto__ || Object.getPrototypeOf(ManualColumnMove)).call(this, hotInstance)); - - privatePool.set(_this, { - columnsToMove: [], - countCols: 0, - fixedColumns: 0, - pressed: void 0, - disallowMoving: void 0, - target: { - eventPageX: void 0, - coords: void 0, - TD: void 0, - col: void 0 - } - }); - - /** - * List of last removed row indexes. - * - * @type {Array} - */ - _this.removedColumns = []; - /** - * Object containing visual row indexes mapped to data source indexes. - * - * @type {RowsMapper} - */ - _this.columnsMapper = new _columnsMapper2.default(_this); - /** - * Event Manager object. - * - * @type {Object} - */ - _this.eventManager = new _eventManager2.default(_this); - /** - * Backlight UI object. - * - * @type {Object} - */ - _this.backlight = new _backlight2.default(hotInstance); - /** - * Guideline UI object. - * - * @type {Object} - */ - _this.guideline = new _guideline2.default(hotInstance); - return _this; - } - - /** - * Check if plugin is enabled. - * - * @returns {Boolean} - */ - - - _createClass(ManualColumnMove, [{ - key: 'isEnabled', - value: function isEnabled() { - return !!this.hot.getSettings().manualColumnMove; - } - - /** - * Enable the plugin. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this2 = this; - - if (this.enabled) { - return; - } - - this.addHook('beforeOnCellMouseDown', function (event, coords, TD, blockCalculations) { - return _this2.onBeforeOnCellMouseDown(event, coords, TD, blockCalculations); - }); - this.addHook('beforeOnCellMouseOver', function (event, coords, TD, blockCalculations) { - return _this2.onBeforeOnCellMouseOver(event, coords, TD, blockCalculations); - }); - this.addHook('afterScrollVertically', function () { - return _this2.onAfterScrollVertically(); - }); - this.addHook('modifyCol', function (row, source) { - return _this2.onModifyCol(row, source); - }); - this.addHook('beforeRemoveCol', function (index, amount) { - return _this2.onBeforeRemoveCol(index, amount); - }); - this.addHook('afterRemoveCol', function () { - return _this2.onAfterRemoveCol(); - }); - this.addHook('afterCreateCol', function (index, amount) { - return _this2.onAfterCreateCol(index, amount); - }); - this.addHook('afterLoadData', function () { - return _this2.onAfterLoadData(); - }); - this.addHook('unmodifyCol', function (column) { - return _this2.onUnmodifyCol(column); - }); - - this.registerEvents(); - - // TODO: move adding plugin classname to BasePlugin. - (0, _element.addClass)(this.hot.rootElement, CSS_PLUGIN); - - _get(ManualColumnMove.prototype.__proto__ || Object.getPrototypeOf(ManualColumnMove.prototype), 'enablePlugin', this).call(this); - } - - /** - * Updates the plugin to use the latest options you have specified. - */ - - }, { - key: 'updatePlugin', - value: function updatePlugin() { - this.disablePlugin(); - this.enablePlugin(); - - this.onAfterPluginsInitialized(); - - _get(ManualColumnMove.prototype.__proto__ || Object.getPrototypeOf(ManualColumnMove.prototype), 'updatePlugin', this).call(this); - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - var pluginSettings = this.hot.getSettings().manualColumnMove; - - if (Array.isArray(pluginSettings)) { - this.columnsMapper.clearMap(); - } - - (0, _element.removeClass)(this.hot.rootElement, CSS_PLUGIN); - - this.unregisterEvents(); - this.backlight.destroy(); - this.guideline.destroy(); - - _get(ManualColumnMove.prototype.__proto__ || Object.getPrototypeOf(ManualColumnMove.prototype), 'disablePlugin', this).call(this); - } - - /** - * Move a single column. - * - * @param {Number} column Visual column index to be moved. - * @param {Number} target Visual column index being a target for the moved column. - */ - - }, { - key: 'moveColumn', - value: function moveColumn(column, target) { - this.moveColumns([column], target); - } - - /** - * Move multiple columns. - * - * @param {Array} columns Array of visual column indexes to be moved. - * @param {Number} target Visual column index being a target for the moved columns. - */ - - }, { - key: 'moveColumns', - value: function moveColumns(columns, target) { - var _this3 = this; - - var priv = privatePool.get(this); - var beforeColumnHook = this.hot.runHooks('beforeColumnMove', columns, target); - - priv.disallowMoving = !beforeColumnHook; - - if (beforeColumnHook !== false) { - // first we need to rewrite an visual indexes to physical for save reference after move - (0, _array.arrayEach)(columns, function (column, index, array) { - array[index] = _this3.columnsMapper.getValueByIndex(column); - }); - - // next, when we have got an physical indexes, we can move columns - (0, _array.arrayEach)(columns, function (column, index) { - var actualPosition = _this3.columnsMapper.getIndexByValue(column); - - if (actualPosition !== target) { - _this3.columnsMapper.moveColumn(actualPosition, target + index); - } - }); - - // after moving we have to clear columnsMapper from null entries - this.columnsMapper.clearNull(); - } - - this.hot.runHooks('afterColumnMove', columns, target); - } - - /** - * Correct the cell selection after the move action. Fired only when action was made with a mouse. - * That means that changing the column order using the API won't correct the selection. - * - * @private - * @param {Number} startColumn Visual column index for the start of the selection. - * @param {Number} endColumn Visual column index for the end of the selection. - */ - - }, { - key: 'changeSelection', - value: function changeSelection(startColumn, endColumn) { - var selection = this.hot.selection; - var lastRowIndex = this.hot.countRows() - 1; - - selection.setRangeStartOnly(new _src.CellCoords(0, startColumn)); - selection.setRangeEnd(new _src.CellCoords(lastRowIndex, endColumn), false); - } - - /** - * Get the sum of the widths of columns in the provided range. - * - * @private - * @param {Number} from Visual column index. - * @param {Number} to Visual column index. - * @returns {Number} - */ - - }, { - key: 'getColumnsWidth', - value: function getColumnsWidth(from, to) { - var width = 0; - - for (var i = from; i < to; i++) { - var columnWidth = 0; - - if (i < 0) { - columnWidth = this.hot.view.wt.wtViewport.getRowHeaderWidth() || 0; - } else { - columnWidth = this.hot.view.wt.wtTable.getStretchedColumnWidth(i) || 0; - } - - width += columnWidth; - } - - return width; - } - - /** - * Load initial settings when persistent state is saved or when plugin was initialized as an array. - * - * @private - */ - - }, { - key: 'initialSettings', - value: function initialSettings() { - var pluginSettings = this.hot.getSettings().manualColumnMove; - - if (Array.isArray(pluginSettings)) { - this.moveColumns(pluginSettings, 0); - } else if (pluginSettings !== void 0) { - this.persistentStateLoad(); - } - } - - /** - * Check if the provided column is in the fixedColumnsLeft section. - * - * @private - * @param {Number} column Visual column index to check. - * @returns {Boolean} - */ - - }, { - key: 'isFixedColumnsLeft', - value: function isFixedColumnsLeft(column) { - return column < this.hot.getSettings().fixedColumnsLeft; - } - - /** - * Save the manual column positions to the persistent state. - * - * @private - */ - - }, { - key: 'persistentStateSave', - value: function persistentStateSave() { - this.hot.runHooks('persistentStateSave', 'manualColumnMove', this.columnsMapper._arrayMap); - } - - /** - * Load the manual column positions from the persistent state. - * - * @private - */ - - }, { - key: 'persistentStateLoad', - value: function persistentStateLoad() { - var storedState = {}; - - this.hot.runHooks('persistentStateLoad', 'manualColumnMove', storedState); - - if (storedState.value) { - this.columnsMapper._arrayMap = storedState.value; - } - } - - /** - * Prepare array of indexes based on actual selection. - * - * @private - * @returns {Array} - */ - - }, { - key: 'prepareColumnsToMoving', - value: function prepareColumnsToMoving(start, end) { - var selectedColumns = []; - - (0, _number.rangeEach)(start, end, function (i) { - selectedColumns.push(i); - }); - - return selectedColumns; - } - - /** - * Update the UI visual position. - * - * @private - */ - - }, { - key: 'refreshPositions', - value: function refreshPositions() { - var priv = privatePool.get(this); - var firstVisible = this.hot.view.wt.wtTable.getFirstVisibleColumn(); - var lastVisible = this.hot.view.wt.wtTable.getLastVisibleColumn(); - var wtTable = this.hot.view.wt.wtTable; - var scrollableElement = this.hot.view.wt.wtOverlays.scrollableElement; - var scrollLeft = typeof scrollableElement.scrollX === 'number' ? scrollableElement.scrollX : scrollableElement.scrollLeft; - var tdOffsetLeft = this.hot.view.THEAD.offsetLeft + this.getColumnsWidth(0, priv.coordsColumn); - var mouseOffsetLeft = priv.target.eventPageX - (priv.rootElementOffset - (scrollableElement.scrollX === void 0 ? scrollLeft : 0)); - var hiderWidth = wtTable.hider.offsetWidth; - var tbodyOffsetLeft = wtTable.TBODY.offsetLeft; - var backlightElemMarginLeft = this.backlight.getOffset().left; - var backlightElemWidth = this.backlight.getSize().width; - var rowHeaderWidth = 0; - - if (priv.rootElementOffset + wtTable.holder.offsetWidth + scrollLeft < priv.target.eventPageX) { - if (priv.coordsColumn < priv.countCols) { - priv.coordsColumn++; - } - } - - if (priv.hasRowHeaders) { - rowHeaderWidth = this.hot.view.wt.wtOverlays.leftOverlay.clone.wtTable.getColumnHeader(-1).offsetWidth; - } - if (this.isFixedColumnsLeft(priv.coordsColumn)) { - tdOffsetLeft += scrollLeft; - } - tdOffsetLeft += rowHeaderWidth; - - if (priv.coordsColumn < 0) { - // if hover on rowHeader - if (priv.fixedColumns > 0) { - priv.target.col = 0; - } else { - priv.target.col = firstVisible > 0 ? firstVisible - 1 : firstVisible; - } - } else if (priv.target.TD.offsetWidth / 2 + tdOffsetLeft <= mouseOffsetLeft) { - var newCoordsCol = priv.coordsColumn >= priv.countCols ? priv.countCols - 1 : priv.coordsColumn; - // if hover on right part of TD - priv.target.col = newCoordsCol + 1; - // unfortunately first column is bigger than rest - tdOffsetLeft += priv.target.TD.offsetWidth; - - if (priv.target.col > lastVisible) { - this.hot.scrollViewportTo(void 0, lastVisible + 1, void 0, true); - } - } else { - // elsewhere on table - priv.target.col = priv.coordsColumn; - - if (priv.target.col <= firstVisible && priv.target.col >= priv.fixedColumns) { - this.hot.scrollViewportTo(void 0, firstVisible - 1); - } - } - - if (priv.target.col <= firstVisible && priv.target.col >= priv.fixedColumns) { - this.hot.scrollViewportTo(void 0, firstVisible - 1); - } - - var backlightLeft = mouseOffsetLeft; - var guidelineLeft = tdOffsetLeft; - - if (mouseOffsetLeft + backlightElemWidth + backlightElemMarginLeft >= hiderWidth) { - // prevent display backlight on the right side of the table - backlightLeft = hiderWidth - backlightElemWidth - backlightElemMarginLeft; - } else if (mouseOffsetLeft + backlightElemMarginLeft < tbodyOffsetLeft + rowHeaderWidth) { - // prevent display backlight on the left side of the table - backlightLeft = tbodyOffsetLeft + rowHeaderWidth + Math.abs(backlightElemMarginLeft); - } - - if (tdOffsetLeft >= hiderWidth - 1) { - // prevent display guideline outside the table - guidelineLeft = hiderWidth - 1; - } else if (guidelineLeft === 0) { - // guideline has got `margin-left: -1px` as default - guidelineLeft = 1; - } else if (scrollableElement.scrollX !== void 0 && priv.coordsColumn < priv.fixedColumns) { - guidelineLeft -= priv.rootElementOffset <= scrollableElement.scrollX ? priv.rootElementOffset : 0; - } - - this.backlight.setPosition(null, backlightLeft); - this.guideline.setPosition(null, guidelineLeft); - } - - /** - * This method checks arrayMap from columnsMapper and updates the columnsMapper if it's necessary. - * - * @private - */ - - }, { - key: 'updateColumnsMapper', - value: function updateColumnsMapper() { - var countCols = this.hot.countSourceCols(); - var columnsMapperLen = this.columnsMapper._arrayMap.length; - - if (columnsMapperLen === 0) { - this.columnsMapper.createMap(countCols || this.hot.getSettings().startCols); - } else if (columnsMapperLen < countCols) { - var diff = countCols - columnsMapperLen; - - this.columnsMapper.insertItems(columnsMapperLen, diff); - } else if (columnsMapperLen > countCols) { - var maxIndex = countCols - 1; - var columnsToRemove = []; - - (0, _array.arrayEach)(this.columnsMapper._arrayMap, function (value, index) { - if (value > maxIndex) { - columnsToRemove.push(index); - } - }); - - this.columnsMapper.removeItems(columnsToRemove); - } - } - - /** - * Bind the events used by the plugin. - * - * @private - */ - - }, { - key: 'registerEvents', - value: function registerEvents() { - var _this4 = this; - - this.eventManager.addEventListener(document.documentElement, 'mousemove', function (event) { - return _this4.onMouseMove(event); - }); - this.eventManager.addEventListener(document.documentElement, 'mouseup', function () { - return _this4.onMouseUp(); - }); - } - - /** - * Unbind the events used by the plugin. - * - * @private - */ - - }, { - key: 'unregisterEvents', - value: function unregisterEvents() { - this.eventManager.clear(); - } - - /** - * Change the behavior of selection / dragging. - * - * @private - * @param {MouseEvent} event `mousedown` event properties. - * @param {CellCoords} coords Visual cell coordinates where was fired event. - * @param {HTMLElement} TD Cell represented as HTMLElement. - * @param {Object} blockCalculations Object which contains information about blockCalculation for row, column or cells. - */ - - }, { - key: 'onBeforeOnCellMouseDown', - value: function onBeforeOnCellMouseDown(event, coords, TD, blockCalculations) { - var wtTable = this.hot.view.wt.wtTable; - var isHeaderSelection = this.hot.selection.selectedHeader.cols; - var selection = this.hot.getSelectedRange(); - var priv = privatePool.get(this); - var isSortingElement = event.realTarget.className.indexOf('columnSorting') > -1; - - if (!selection || !isHeaderSelection || priv.pressed || event.button !== 0 || isSortingElement) { - priv.pressed = false; - priv.columnsToMove.length = 0; - (0, _element.removeClass)(this.hot.rootElement, [CSS_ON_MOVING, CSS_SHOW_UI]); - return; - } - - var guidelineIsNotReady = this.guideline.isBuilt() && !this.guideline.isAppended(); - var backlightIsNotReady = this.backlight.isBuilt() && !this.backlight.isAppended(); - - if (guidelineIsNotReady && backlightIsNotReady) { - this.guideline.appendTo(wtTable.hider); - this.backlight.appendTo(wtTable.hider); - } - - var from = selection.from, - to = selection.to; - - var start = Math.min(from.col, to.col); - var end = Math.max(from.col, to.col); - - if (coords.row < 0 && coords.col >= start && coords.col <= end) { - blockCalculations.column = true; - priv.pressed = true; - priv.target.eventPageX = event.pageX; - priv.coordsColumn = coords.col; - priv.target.TD = TD; - priv.target.col = coords.col; - priv.columnsToMove = this.prepareColumnsToMoving(start, end); - priv.hasRowHeaders = !!this.hot.getSettings().rowHeaders; - priv.countCols = this.hot.countCols(); - priv.fixedColumns = this.hot.getSettings().fixedColumnsLeft; - priv.rootElementOffset = (0, _element.offset)(this.hot.rootElement).left; - - var countColumnsFrom = priv.hasRowHeaders ? -1 : 0; - var topPos = wtTable.holder.scrollTop + wtTable.getColumnHeaderHeight(0) + 1; - var fixedColumns = coords.col < priv.fixedColumns; - var scrollableElement = this.hot.view.wt.wtOverlays.scrollableElement; - var wrapperIsWindow = scrollableElement.scrollX ? scrollableElement.scrollX - priv.rootElementOffset : 0; - - var mouseOffset = event.layerX - (fixedColumns ? wrapperIsWindow : 0); - var leftOffset = Math.abs(this.getColumnsWidth(start, coords.col) + mouseOffset); - - this.backlight.setPosition(topPos, this.getColumnsWidth(countColumnsFrom, start) + leftOffset); - this.backlight.setSize(this.getColumnsWidth(start, end + 1), wtTable.hider.offsetHeight - topPos); - this.backlight.setOffset(null, leftOffset * -1); - - (0, _element.addClass)(this.hot.rootElement, CSS_ON_MOVING); - } else { - (0, _element.removeClass)(this.hot.rootElement, CSS_AFTER_SELECTION); - priv.pressed = false; - priv.columnsToMove.length = 0; - } - } - - /** - * 'mouseMove' event callback. Fired when pointer move on document.documentElement. - * - * @private - * @param {MouseEvent} event `mousemove` event properties. - */ - - }, { - key: 'onMouseMove', - value: function onMouseMove(event) { - var priv = privatePool.get(this); - - if (!priv.pressed) { - return; - } - - // callback for browser which doesn't supports CSS pointer-event: none - if (event.realTarget === this.backlight.element) { - var width = this.backlight.getSize().width; - this.backlight.setSize(0); - - setTimeout(function () { - this.backlight.setPosition(width); - }); - } - - priv.target.eventPageX = event.pageX; - this.refreshPositions(); - } - - /** - * 'beforeOnCellMouseOver' hook callback. Fired when pointer was over cell. - * - * @private - * @param {MouseEvent} event `mouseover` event properties. - * @param {CellCoords} coords Visual cell coordinates where was fired event. - * @param {HTMLElement} TD Cell represented as HTMLElement. - * @param {Object} blockCalculations Object which contains information about blockCalculation for row, column or cells. - */ - - }, { - key: 'onBeforeOnCellMouseOver', - value: function onBeforeOnCellMouseOver(event, coords, TD, blockCalculations) { - var selectedRange = this.hot.getSelectedRange(); - var priv = privatePool.get(this); - - if (!selectedRange || !priv.pressed) { - return; - } - - if (priv.columnsToMove.indexOf(coords.col) > -1) { - (0, _element.removeClass)(this.hot.rootElement, CSS_SHOW_UI); - } else { - (0, _element.addClass)(this.hot.rootElement, CSS_SHOW_UI); - } - - blockCalculations.row = true; - blockCalculations.column = true; - blockCalculations.cell = true; - priv.coordsColumn = coords.col; - priv.target.TD = TD; - } - - /** - * `onMouseUp` hook callback. - * - * @private - */ - - }, { - key: 'onMouseUp', - value: function onMouseUp() { - var priv = privatePool.get(this); - - priv.coordsColumn = void 0; - priv.pressed = false; - priv.backlightWidth = 0; - - (0, _element.removeClass)(this.hot.rootElement, [CSS_ON_MOVING, CSS_SHOW_UI, CSS_AFTER_SELECTION]); - - if (this.hot.selection.selectedHeader.cols) { - (0, _element.addClass)(this.hot.rootElement, CSS_AFTER_SELECTION); - } - if (priv.columnsToMove.length < 1 || priv.target.col === void 0 || priv.columnsToMove.indexOf(priv.target.col) > -1) { - return; - } - - this.moveColumns(priv.columnsToMove, priv.target.col); - this.persistentStateSave(); - this.hot.render(); - this.hot.view.wt.wtOverlays.adjustElementsSize(true); - - if (!priv.disallowMoving) { - var selectionStart = this.columnsMapper.getIndexByValue(priv.columnsToMove[0]); - var selectionEnd = this.columnsMapper.getIndexByValue(priv.columnsToMove[priv.columnsToMove.length - 1]); - this.changeSelection(selectionStart, selectionEnd); - } - - priv.columnsToMove.length = 0; - } - - /** - * `afterScrollHorizontally` hook callback. Fired the table was scrolled horizontally. - * - * @private - */ - - }, { - key: 'onAfterScrollVertically', - value: function onAfterScrollVertically() { - var wtTable = this.hot.view.wt.wtTable; - var headerHeight = wtTable.getColumnHeaderHeight(0) + 1; - var scrollTop = wtTable.holder.scrollTop; - var posTop = headerHeight + scrollTop; - - this.backlight.setPosition(posTop); - this.backlight.setSize(null, wtTable.hider.offsetHeight - posTop); - } - - /** - * `afterCreateCol` hook callback. - * - * @private - * @param {Number} index Visual index of the created column. - * @param {Number} amount Amount of created columns. - */ - - }, { - key: 'onAfterCreateCol', - value: function onAfterCreateCol(index, amount) { - this.columnsMapper.shiftItems(index, amount); - } - - /** - * On before remove column listener. - * - * @private - * @param {Number} index Visual column index. - * @param {Number} amount Defines how many columns removed. - */ - - }, { - key: 'onBeforeRemoveCol', - value: function onBeforeRemoveCol(index, amount) { - var _this5 = this; - - this.removedColumns.length = 0; - - if (index !== false) { - // Collect physical row index. - (0, _number.rangeEach)(index, index + amount - 1, function (removedIndex) { - _this5.removedColumns.push(_this5.hot.runHooks('modifyCol', removedIndex, _this5.pluginName)); - }); - } - } - - /** - * `afterRemoveCol` hook callback. - * - * @private - */ - - }, { - key: 'onAfterRemoveCol', - value: function onAfterRemoveCol() { - this.columnsMapper.unshiftItems(this.removedColumns); - } - - /** - * `afterLoadData` hook callback. - * - * @private - */ - - }, { - key: 'onAfterLoadData', - value: function onAfterLoadData() { - this.updateColumnsMapper(); - } - - /** - * 'modifyRow' hook callback. - * - * @private - * @param {Number} column Visual column index. - * @returns {Number} Physical column index. - */ - - }, { - key: 'onModifyCol', - value: function onModifyCol(column, source) { - if (source !== this.pluginName) { - // ugly fix for try to insert new, needed columns after pasting data - var columnInMapper = this.columnsMapper.getValueByIndex(column); - column = columnInMapper === null ? column : columnInMapper; - } - - return column; - } - - /** - * 'unmodifyCol' hook callback. - * - * @private - * @param {Number} column Physical column index. - * @returns {Number} Visual column index. - */ - - }, { - key: 'onUnmodifyCol', - value: function onUnmodifyCol(column) { - var indexInMapper = this.columnsMapper.getIndexByValue(column); - - return indexInMapper === null ? column : indexInMapper; - } - - /** - * `afterPluginsInitialized` hook callback. - * - * @private - */ - - }, { - key: 'onAfterPluginsInitialized', - value: function onAfterPluginsInitialized() { - this.updateColumnsMapper(); - this.initialSettings(); - this.backlight.build(); - this.guideline.build(); - } - - /** - * Destroy plugin instance. - */ - - }, { - key: 'destroy', - value: function destroy() { - this.backlight.destroy(); - this.guideline.destroy(); - - _get(ManualColumnMove.prototype.__proto__ || Object.getPrototypeOf(ManualColumnMove.prototype), 'destroy', this).call(this); - } - }]); - - return ManualColumnMove; -}(_base2.default); - -(0, _plugins.registerPlugin)('ManualColumnMove', ManualColumnMove); - -exports.default = ManualColumnMove; - -/***/ }), -/* 288 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _arrayMapper = __webpack_require__(176); - -var _arrayMapper2 = _interopRequireDefault(_arrayMapper); - -var _array = __webpack_require__(2); - -var _object = __webpack_require__(1); - -var _number = __webpack_require__(6); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class ColumnsMapper - * @plugin ManualColumnMove - */ -var ColumnsMapper = function () { - function ColumnsMapper(manualColumnMove) { - _classCallCheck(this, ColumnsMapper); - - /** - * Instance of ManualColumnMove plugin. - * - * @type {ManualColumnMove} - */ - this.manualColumnMove = manualColumnMove; - } - - /** - * Reset current map array and create new one. - * - * @param {Number} [length] Custom generated map length. - */ - - - _createClass(ColumnsMapper, [{ - key: 'createMap', - value: function createMap(length) { - var _this = this; - - var originLength = length === void 0 ? this._arrayMap.length : length; - - this._arrayMap.length = 0; - - (0, _number.rangeEach)(originLength - 1, function (itemIndex) { - _this._arrayMap[itemIndex] = itemIndex; - }); - } - - /** - * Destroy class. - */ - - }, { - key: 'destroy', - value: function destroy() { - this._arrayMap = null; - } - - /** - * Moving elements in columnsMapper. - * - * @param {Number} from Column index to move. - * @param {Number} to Target index. - */ - - }, { - key: 'moveColumn', - value: function moveColumn(from, to) { - var indexToMove = this._arrayMap[from]; - this._arrayMap[from] = null; - this._arrayMap.splice(to, 0, indexToMove); - } - - /** - * Clearing arrayMap from `null` entries. - */ - - }, { - key: 'clearNull', - value: function clearNull() { - this._arrayMap = (0, _array.arrayFilter)(this._arrayMap, function (i) { - return i !== null; - }); - } - }]); - - return ColumnsMapper; -}(); - -(0, _object.mixin)(ColumnsMapper, _arrayMapper2.default); - -exports.default = ColumnsMapper; - -/***/ }), -/* 289 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _base = __webpack_require__(177); - -var _base2 = _interopRequireDefault(_base); - -var _element = __webpack_require__(0); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var CSS_CLASSNAME = 'ht__manualColumnMove--backlight'; - -/** - * @class BacklightUI - * @util - */ - -var BacklightUI = function (_BaseUI) { - _inherits(BacklightUI, _BaseUI); - - function BacklightUI() { - _classCallCheck(this, BacklightUI); - - return _possibleConstructorReturn(this, (BacklightUI.__proto__ || Object.getPrototypeOf(BacklightUI)).apply(this, arguments)); - } - - _createClass(BacklightUI, [{ - key: 'build', - - /** - * Custom className on build process. - */ - value: function build() { - _get(BacklightUI.prototype.__proto__ || Object.getPrototypeOf(BacklightUI.prototype), 'build', this).call(this); - - (0, _element.addClass)(this._element, CSS_CLASSNAME); - } - }]); - - return BacklightUI; -}(_base2.default); - -exports.default = BacklightUI; - -/***/ }), -/* 290 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _base = __webpack_require__(177); - -var _base2 = _interopRequireDefault(_base); - -var _element = __webpack_require__(0); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var CSS_CLASSNAME = 'ht__manualColumnMove--guideline'; - -/** - * @class GuidelineUI - * @util - */ - -var GuidelineUI = function (_BaseUI) { - _inherits(GuidelineUI, _BaseUI); - - function GuidelineUI() { - _classCallCheck(this, GuidelineUI); - - return _possibleConstructorReturn(this, (GuidelineUI.__proto__ || Object.getPrototypeOf(GuidelineUI)).apply(this, arguments)); - } - - _createClass(GuidelineUI, [{ - key: 'build', - - /** - * Custom className on build process. - */ - value: function build() { - _get(GuidelineUI.prototype.__proto__ || Object.getPrototypeOf(GuidelineUI.prototype), 'build', this).call(this); - - (0, _element.addClass)(this._element, CSS_CLASSNAME); - } - }]); - - return GuidelineUI; -}(_base2.default); - -exports.default = GuidelineUI; - -/***/ }), -/* 291 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 292 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _element = __webpack_require__(0); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _event = __webpack_require__(8); - -var _array = __webpack_require__(2); - -var _number = __webpack_require__(6); - -var _plugins = __webpack_require__(5); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -// Developer note! Whenever you make a change in this file, make an analogous change in manualRowResize.js - -/** - * @description - * ManualColumnResize Plugin. - * - * Has 2 UI components: - * - handle - the draggable element that sets the desired width of the column. - * - guide - the helper guide that shows the desired width as a vertical guide. - * - * @plugin ManualColumnResize - */ -var ManualColumnResize = function (_BasePlugin) { - _inherits(ManualColumnResize, _BasePlugin); - - function ManualColumnResize(hotInstance) { - _classCallCheck(this, ManualColumnResize); - - var _this = _possibleConstructorReturn(this, (ManualColumnResize.__proto__ || Object.getPrototypeOf(ManualColumnResize)).call(this, hotInstance)); - - _this.currentTH = null; - _this.currentCol = null; - _this.selectedCols = []; - _this.currentWidth = null; - _this.newSize = null; - _this.startY = null; - _this.startWidth = null; - _this.startOffset = null; - _this.handle = document.createElement('DIV'); - _this.guide = document.createElement('DIV'); - _this.eventManager = new _eventManager2.default(_this); - _this.pressed = null; - _this.dblclick = 0; - _this.autoresizeTimeout = null; - _this.manualColumnWidths = []; - - (0, _element.addClass)(_this.handle, 'manualColumnResizer'); - (0, _element.addClass)(_this.guide, 'manualColumnResizerGuide'); - return _this; - } - - /** - * Check if the plugin is enabled in the handsontable settings. - * - * @returns {Boolean} - */ - - - _createClass(ManualColumnResize, [{ - key: 'isEnabled', - value: function isEnabled() { - return this.hot.getSettings().manualColumnResize; - } - - /** - * Enable plugin for this Handsontable instance. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this2 = this; - - if (this.enabled) { - return; - } - - this.manualColumnWidths = []; - var initialColumnWidth = this.hot.getSettings().manualColumnResize; - var loadedManualColumnWidths = this.loadManualColumnWidths(); - - this.addHook('modifyColWidth', function (width, col) { - return _this2.onModifyColWidth(width, col); - }); - this.addHook('beforeStretchingColumnWidth', function (stretchedWidth, column) { - return _this2.onBeforeStretchingColumnWidth(stretchedWidth, column); - }); - this.addHook('beforeColumnResize', function (currentColumn, newSize, isDoubleClick) { - return _this2.onBeforeColumnResize(currentColumn, newSize, isDoubleClick); - }); - - if (typeof loadedManualColumnWidths != 'undefined') { - this.manualColumnWidths = loadedManualColumnWidths; - } else if (Array.isArray(initialColumnWidth)) { - this.manualColumnWidths = initialColumnWidth; - } else { - this.manualColumnWidths = []; - } - - // Handsontable.hooks.register('beforeColumnResize'); - // Handsontable.hooks.register('afterColumnResize'); - - this.bindEvents(); - - _get(ManualColumnResize.prototype.__proto__ || Object.getPrototypeOf(ManualColumnResize.prototype), 'enablePlugin', this).call(this); - } - - /** - * Updates the plugin to use the latest options you have specified. - */ - - }, { - key: 'updatePlugin', - value: function updatePlugin() { - var initialColumnWidth = this.hot.getSettings().manualColumnResize; - - if (Array.isArray(initialColumnWidth)) { - this.manualColumnWidths = initialColumnWidth; - } else if (!initialColumnWidth) { - this.manualColumnWidths = []; - } - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - _get(ManualColumnResize.prototype.__proto__ || Object.getPrototypeOf(ManualColumnResize.prototype), 'disablePlugin', this).call(this); - } - - /** - * Save the current sizes using the persistentState plugin. - */ - - }, { - key: 'saveManualColumnWidths', - value: function saveManualColumnWidths() { - this.hot.runHooks('persistentStateSave', 'manualColumnWidths', this.manualColumnWidths); - } - - /** - * Load the previously saved sizes using the persistentState plugin. - * - * @returns {Array} - */ - - }, { - key: 'loadManualColumnWidths', - value: function loadManualColumnWidths() { - var storedState = {}; - - this.hot.runHooks('persistentStateLoad', 'manualColumnWidths', storedState); - - return storedState.value; - } - - /** - * Set the resize handle position. - * - * @param {HTMLCellElement} TH TH HTML element. - */ - - }, { - key: 'setupHandlePosition', - value: function setupHandlePosition(TH) { - var _this3 = this; - - if (!TH.parentNode) { - return false; - } - - this.currentTH = TH; - - var col = this.hot.view.wt.wtTable.getCoords(TH).col; // getCoords returns CellCoords - var headerHeight = (0, _element.outerHeight)(this.currentTH); - - if (col >= 0) { - // if not col header - var box = this.currentTH.getBoundingClientRect(); - - this.currentCol = col; - this.selectedCols = []; - - if (this.hot.selection.isSelected() && this.hot.selection.selectedHeader.cols) { - var _hot$getSelectedRange = this.hot.getSelectedRange(), - from = _hot$getSelectedRange.from, - to = _hot$getSelectedRange.to; - - var start = from.col; - var end = to.col; - - if (start >= end) { - start = to.col; - end = from.col; - } - - if (this.currentCol >= start && this.currentCol <= end) { - (0, _number.rangeEach)(start, end, function (i) { - return _this3.selectedCols.push(i); - }); - } else { - this.selectedCols.push(this.currentCol); - } - } else { - this.selectedCols.push(this.currentCol); - } - - this.startOffset = box.left - 6; - this.startWidth = parseInt(box.width, 10); - this.handle.style.top = box.top + 'px'; - this.handle.style.left = this.startOffset + this.startWidth + 'px'; - this.handle.style.height = headerHeight + 'px'; - this.hot.rootElement.appendChild(this.handle); - } - } - - /** - * Refresh the resize handle position. - */ - - }, { - key: 'refreshHandlePosition', - value: function refreshHandlePosition() { - this.handle.style.left = this.startOffset + this.currentWidth + 'px'; - } - - /** - * Set the resize guide position. - */ - - }, { - key: 'setupGuidePosition', - value: function setupGuidePosition() { - var handleHeight = parseInt((0, _element.outerHeight)(this.handle), 10); - var handleBottomPosition = parseInt(this.handle.style.top, 10) + handleHeight; - var maximumVisibleElementHeight = parseInt(this.hot.view.maximumVisibleElementHeight(0), 10); - - (0, _element.addClass)(this.handle, 'active'); - (0, _element.addClass)(this.guide, 'active'); - - this.guide.style.top = handleBottomPosition + 'px'; - this.guide.style.left = this.handle.style.left; - this.guide.style.height = maximumVisibleElementHeight - handleHeight + 'px'; - this.hot.rootElement.appendChild(this.guide); - } - - /** - * Refresh the resize guide position. - */ - - }, { - key: 'refreshGuidePosition', - value: function refreshGuidePosition() { - this.guide.style.left = this.handle.style.left; - } - - /** - * Hide both the resize handle and resize guide. - */ - - }, { - key: 'hideHandleAndGuide', - value: function hideHandleAndGuide() { - (0, _element.removeClass)(this.handle, 'active'); - (0, _element.removeClass)(this.guide, 'active'); - } - - /** - * Check if provided element is considered a column header. - * - * @param {HTMLElement} element HTML element. - * @returns {Boolean} - */ - - }, { - key: 'checkIfColumnHeader', - value: function checkIfColumnHeader(element) { - if (element != this.hot.rootElement) { - var parent = element.parentNode; - - if (parent.tagName === 'THEAD') { - return true; - } - - return this.checkIfColumnHeader(parent); - } - - return false; - } - - /** - * Get the TH element from the provided element. - * - * @param {HTMLElement} element HTML element. - * @returns {HTMLElement} - */ - - }, { - key: 'getTHFromTargetElement', - value: function getTHFromTargetElement(element) { - if (element.tagName != 'TABLE') { - if (element.tagName == 'TH') { - return element; - } - return this.getTHFromTargetElement(element.parentNode); - } - - return null; - } - - /** - * 'mouseover' event callback - set the handle position. - * - * @private - * @param {MouseEvent} event - */ - - }, { - key: 'onMouseOver', - value: function onMouseOver(event) { - if (this.checkIfColumnHeader(event.target)) { - var th = this.getTHFromTargetElement(event.target); - - if (!th) { - return; - } - - var colspan = th.getAttribute('colspan'); - - if (th && (colspan === null || colspan === 1)) { - if (!this.pressed) { - this.setupHandlePosition(th); - } - } - } - } - - /** - * Auto-size row after doubleclick - callback. - * - * @private - */ - - }, { - key: 'afterMouseDownTimeout', - value: function afterMouseDownTimeout() { - var _this4 = this; - - var render = function render() { - _this4.hot.forceFullRender = true; - _this4.hot.view.render(); // updates all - _this4.hot.view.wt.wtOverlays.adjustElementsSize(true); - }; - var resize = function resize(selectedCol, forceRender) { - var hookNewSize = _this4.hot.runHooks('beforeColumnResize', selectedCol, _this4.newSize, true); - - if (hookNewSize !== void 0) { - _this4.newSize = hookNewSize; - } - - if (_this4.hot.getSettings().stretchH === 'all') { - _this4.clearManualSize(selectedCol); - } else { - _this4.setManualSize(selectedCol, _this4.newSize); // double click sets by auto row size plugin - } - - if (forceRender) { - render(); - } - - _this4.saveManualColumnWidths(); - - _this4.hot.runHooks('afterColumnResize', selectedCol, _this4.newSize, true); - }; - - if (this.dblclick >= 2) { - var selectedColsLength = this.selectedCols.length; - - if (selectedColsLength > 1) { - (0, _array.arrayEach)(this.selectedCols, function (selectedCol) { - resize(selectedCol); - }); - render(); - } else { - (0, _array.arrayEach)(this.selectedCols, function (selectedCol) { - resize(selectedCol, true); - }); - } - } - this.dblclick = 0; - this.autoresizeTimeout = null; - } - - /** - * 'mousedown' event callback. - * - * @private - * @param {MouseEvent} e - */ - - }, { - key: 'onMouseDown', - value: function onMouseDown(event) { - var _this5 = this; - - if ((0, _element.hasClass)(event.target, 'manualColumnResizer')) { - this.setupGuidePosition(); - this.pressed = this.hot; - - if (this.autoresizeTimeout === null) { - this.autoresizeTimeout = setTimeout(function () { - return _this5.afterMouseDownTimeout(); - }, 500); - - this.hot._registerTimeout(this.autoresizeTimeout); - } - this.dblclick++; - - this.startX = (0, _event.pageX)(event); - this.newSize = this.startWidth; - } - } - - /** - * 'mousemove' event callback - refresh the handle and guide positions, cache the new column width. - * - * @private - * @param {MouseEvent} e - */ - - }, { - key: 'onMouseMove', - value: function onMouseMove(event) { - var _this6 = this; - - if (this.pressed) { - this.currentWidth = this.startWidth + ((0, _event.pageX)(event) - this.startX); - - (0, _array.arrayEach)(this.selectedCols, function (selectedCol) { - _this6.newSize = _this6.setManualSize(selectedCol, _this6.currentWidth); - }); - - this.refreshHandlePosition(); - this.refreshGuidePosition(); - } - } - - /** - * 'mouseup' event callback - apply the column resizing. - * - * @private - * @param {MouseEvent} e - */ - - }, { - key: 'onMouseUp', - value: function onMouseUp(event) { - var _this7 = this; - - var render = function render() { - _this7.hot.forceFullRender = true; - _this7.hot.view.render(); // updates all - _this7.hot.view.wt.wtOverlays.adjustElementsSize(true); - }; - var resize = function resize(selectedCol, forceRender) { - _this7.hot.runHooks('beforeColumnResize', selectedCol, _this7.newSize); - - if (forceRender) { - render(); - } - - _this7.saveManualColumnWidths(); - - _this7.hot.runHooks('afterColumnResize', selectedCol, _this7.newSize); - }; - - if (this.pressed) { - this.hideHandleAndGuide(); - this.pressed = false; - - if (this.newSize != this.startWidth) { - var selectedColsLength = this.selectedCols.length; - - if (selectedColsLength > 1) { - (0, _array.arrayEach)(this.selectedCols, function (selectedCol) { - resize(selectedCol); - }); - render(); - } else { - (0, _array.arrayEach)(this.selectedCols, function (selectedCol) { - resize(selectedCol, true); - }); - } - } - - this.setupHandlePosition(this.currentTH); - } - } - - /** - * Bind the mouse events. - * - * @private - */ - - }, { - key: 'bindEvents', - value: function bindEvents() { - var _this8 = this; - - this.eventManager.addEventListener(this.hot.rootElement, 'mouseover', function (e) { - return _this8.onMouseOver(e); - }); - this.eventManager.addEventListener(this.hot.rootElement, 'mousedown', function (e) { - return _this8.onMouseDown(e); - }); - this.eventManager.addEventListener(window, 'mousemove', function (e) { - return _this8.onMouseMove(e); - }); - this.eventManager.addEventListener(window, 'mouseup', function (e) { - return _this8.onMouseUp(e); - }); - } - - /** - * Cache the current column width. - * - * @param {Number} column Visual column index. - * @param {Number} width Column width. - * @returns {Number} - */ - - }, { - key: 'setManualSize', - value: function setManualSize(column, width) { - width = Math.max(width, 20); - - /** - * We need to run col through modifyCol hook, in case the order of displayed columns is different than the order - * in data source. For instance, this order can be modified by manualColumnMove plugin. - */ - column = this.hot.runHooks('modifyCol', column); - - this.manualColumnWidths[column] = width; - - return width; - } - - /** - * Clear cache for the current column index. - * - * @param {Number} column Visual column index. - */ - - }, { - key: 'clearManualSize', - value: function clearManualSize(column) { - column = this.hot.runHooks('modifyCol', column); - - this.manualColumnWidths[column] = void 0; - } - - /** - * Modify the provided column width, based on the plugin settings - * - * @private - * @param {Number} width Column width. - * @param {Number} column Visual column index. - * @returns {Number} - */ - - }, { - key: 'onModifyColWidth', - value: function onModifyColWidth(width, column) { - if (this.enabled) { - column = this.hot.runHooks('modifyCol', column); - - if (this.hot.getSettings().manualColumnResize && this.manualColumnWidths[column]) { - return this.manualColumnWidths[column]; - } - } - - return width; - } - - /** - * Modify the provided column stretched width. This hook decides if specified column should be stretched or not. - * - * @private - * @param {Number} stretchedWidth Stretched width. - * @param {Number} column Physical column index. - * @returns {Number} - */ - - }, { - key: 'onBeforeStretchingColumnWidth', - value: function onBeforeStretchingColumnWidth(stretchedWidth, column) { - var width = this.manualColumnWidths[column]; - - if (width === void 0) { - width = stretchedWidth; - } - - return width; - } - - /** - * `beforeColumnResize` hook callback. - * - * @private - * @param {Number} currentColumn Index of the resized column. - * @param {Number} newSize Calculated new column width. - * @param {Boolean} isDoubleClick Flag that determines whether there was a double-click. - */ - - }, { - key: 'onBeforeColumnResize', - value: function onBeforeColumnResize() { - // clear the header height cache information - this.hot.view.wt.wtViewport.hasOversizedColumnHeadersMarked = {}; - } - }]); - - return ManualColumnResize; -}(_base2.default); - -(0, _plugins.registerPlugin)('manualColumnResize', ManualColumnResize); - -exports.default = ManualColumnResize; - -/***/ }), -/* 293 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _array = __webpack_require__(2); - -var _element = __webpack_require__(0); - -var _number = __webpack_require__(6); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _plugins = __webpack_require__(5); - -var _rowsMapper = __webpack_require__(294); - -var _rowsMapper2 = _interopRequireDefault(_rowsMapper); - -var _backlight = __webpack_require__(295); - -var _backlight2 = _interopRequireDefault(_backlight); - -var _guideline = __webpack_require__(296); - -var _guideline2 = _interopRequireDefault(_guideline); - -var _src = __webpack_require__(12); - -__webpack_require__(297); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -_pluginHooks2.default.getSingleton().register('beforeRowMove'); -_pluginHooks2.default.getSingleton().register('afterRowMove'); -_pluginHooks2.default.getSingleton().register('unmodifyRow'); - -var privatePool = new WeakMap(); -var CSS_PLUGIN = 'ht__manualRowMove'; -var CSS_SHOW_UI = 'show-ui'; -var CSS_ON_MOVING = 'on-moving--rows'; -var CSS_AFTER_SELECTION = 'after-selection--rows'; - -/** - * @plugin ManualRowMove - * - * @description - * This plugin allows to change rows order. - * - * API: - * - moveRow - move single row to the new position. - * - moveRows - move many rows (as an array of indexes) to the new position. - * - * If you want apply visual changes, you have to call manually the render() method on the instance of handsontable. - * - * UI components: - * - backlight - highlight of selected rows. - * - guideline - line which shows where rows has been moved. - * - * @class ManualRowMove - * @plugin ManualRowMove - */ - -var ManualRowMove = function (_BasePlugin) { - _inherits(ManualRowMove, _BasePlugin); - - function ManualRowMove(hotInstance) { - _classCallCheck(this, ManualRowMove); - - /** - * Set up WeakMap of plugin to sharing private parameters; - */ - var _this = _possibleConstructorReturn(this, (ManualRowMove.__proto__ || Object.getPrototypeOf(ManualRowMove)).call(this, hotInstance)); - - privatePool.set(_this, { - rowsToMove: [], - pressed: void 0, - disallowMoving: void 0, - target: { - eventPageY: void 0, - coords: void 0, - TD: void 0, - row: void 0 - } - }); - - /** - * List of last removed row indexes. - * - * @type {Array} - */ - _this.removedRows = []; - /** - * Object containing visual row indexes mapped to data source indexes. - * - * @type {RowsMapper} - */ - _this.rowsMapper = new _rowsMapper2.default(_this); - /** - * Event Manager object. - * - * @type {Object} - */ - _this.eventManager = new _eventManager2.default(_this); - /** - * Backlight UI object. - * - * @type {Object} - */ - _this.backlight = new _backlight2.default(hotInstance); - /** - * Guideline UI object. - * - * @type {Object} - */ - _this.guideline = new _guideline2.default(hotInstance); - return _this; - } - - /** - * Check if plugin is enabled. - * - * @returns {Boolean} - */ - - - _createClass(ManualRowMove, [{ - key: 'isEnabled', - value: function isEnabled() { - return !!this.hot.getSettings().manualRowMove; - } - - /** - * Enable the plugin. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this2 = this; - - if (this.enabled) { - return; - } - - this.addHook('beforeOnCellMouseDown', function (event, coords, TD, blockCalculations) { - return _this2.onBeforeOnCellMouseDown(event, coords, TD, blockCalculations); - }); - this.addHook('beforeOnCellMouseOver', function (event, coords, TD, blockCalculations) { - return _this2.onBeforeOnCellMouseOver(event, coords, TD, blockCalculations); - }); - this.addHook('afterScrollHorizontally', function () { - return _this2.onAfterScrollHorizontally(); - }); - this.addHook('modifyRow', function (row, source) { - return _this2.onModifyRow(row, source); - }); - this.addHook('beforeRemoveRow', function (index, amount) { - return _this2.onBeforeRemoveRow(index, amount); - }); - this.addHook('afterRemoveRow', function () { - return _this2.onAfterRemoveRow(); - }); - this.addHook('afterCreateRow', function (index, amount) { - return _this2.onAfterCreateRow(index, amount); - }); - this.addHook('afterLoadData', function () { - return _this2.onAfterLoadData(); - }); - this.addHook('beforeColumnSort', function (column, order) { - return _this2.onBeforeColumnSort(column, order); - }); - this.addHook('unmodifyRow', function (row) { - return _this2.onUnmodifyRow(row); - }); - - this.registerEvents(); - - // TODO: move adding plugin classname to BasePlugin. - (0, _element.addClass)(this.hot.rootElement, CSS_PLUGIN); - - _get(ManualRowMove.prototype.__proto__ || Object.getPrototypeOf(ManualRowMove.prototype), 'enablePlugin', this).call(this); - } - - /** - * Updates the plugin to use the latest options you have specified. - */ - - }, { - key: 'updatePlugin', - value: function updatePlugin() { - this.disablePlugin(); - this.enablePlugin(); - - this.onAfterPluginsInitialized(); - - _get(ManualRowMove.prototype.__proto__ || Object.getPrototypeOf(ManualRowMove.prototype), 'updatePlugin', this).call(this); - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - var pluginSettings = this.hot.getSettings().manualRowMove; - - if (Array.isArray(pluginSettings)) { - this.rowsMapper.clearMap(); - } - - (0, _element.removeClass)(this.hot.rootElement, CSS_PLUGIN); - - this.unregisterEvents(); - this.backlight.destroy(); - this.guideline.destroy(); - - _get(ManualRowMove.prototype.__proto__ || Object.getPrototypeOf(ManualRowMove.prototype), 'disablePlugin', this).call(this); - } - - /** - * Move a single row. - * - * @param {Number} row Visual row index to be moved. - * @param {Number} target Visual row index being a target for the moved row. - */ - - }, { - key: 'moveRow', - value: function moveRow(row, target) { - this.moveRows([row], target); - } - - /** - * Move multiple rows. - * - * @param {Array} rows Array of visual row indexes to be moved. - * @param {Number} target Visual row index being a target for the moved rows. - */ - - }, { - key: 'moveRows', - value: function moveRows(rows, target) { - var _this3 = this; - - var priv = privatePool.get(this); - var beforeMoveHook = this.hot.runHooks('beforeRowMove', rows, target); - - priv.disallowMoving = beforeMoveHook === false; - - if (!priv.disallowMoving) { - // first we need to rewrite an visual indexes to physical for save reference after move - (0, _array.arrayEach)(rows, function (row, index, array) { - array[index] = _this3.rowsMapper.getValueByIndex(row); - }); - - // next, when we have got an physical indexes, we can move rows - (0, _array.arrayEach)(rows, function (row, index) { - var actualPosition = _this3.rowsMapper.getIndexByValue(row); - - if (actualPosition !== target) { - _this3.rowsMapper.moveRow(actualPosition, target + index); - } - }); - - // after moving we have to clear rowsMapper from null entries - this.rowsMapper.clearNull(); - } - - this.hot.runHooks('afterRowMove', rows, target); - } - - /** - * Correct the cell selection after the move action. Fired only when action was made with a mouse. - * That means that changing the row order using the API won't correct the selection. - * - * @private - * @param {Number} startRow Visual row index for the start of the selection. - * @param {Number} endRow Visual row index for the end of the selection. - */ - - }, { - key: 'changeSelection', - value: function changeSelection(startRow, endRow) { - var selection = this.hot.selection; - var lastColIndex = this.hot.countCols() - 1; - - selection.setRangeStartOnly(new _src.CellCoords(startRow, 0)); - selection.setRangeEnd(new _src.CellCoords(endRow, lastColIndex), false); - } - - /** - * Get the sum of the heights of rows in the provided range. - * - * @private - * @param {Number} from Visual row index. - * @param {Number} to Visual row index. - * @returns {Number} - */ - - }, { - key: 'getRowsHeight', - value: function getRowsHeight(from, to) { - var height = 0; - - for (var i = from; i < to; i++) { - var rowHeight = this.hot.view.wt.wtTable.getRowHeight(i) || 23; - - height += rowHeight; - } - - return height; - } - - /** - * Load initial settings when persistent state is saved or when plugin was initialized as an array. - * - * @private - */ - - }, { - key: 'initialSettings', - value: function initialSettings() { - var pluginSettings = this.hot.getSettings().manualRowMove; - - if (Array.isArray(pluginSettings)) { - this.moveRows(pluginSettings, 0); - } else if (pluginSettings !== void 0) { - var persistentState = this.persistentStateLoad(); - - if (persistentState.length) { - this.moveRows(persistentState, 0); - } - } - } - - /** - * Check if the provided row is in the fixedRowsTop section. - * - * @private - * @param {Number} row Visual row index to check. - * @returns {Boolean} - */ - - }, { - key: 'isFixedRowTop', - value: function isFixedRowTop(row) { - return row < this.hot.getSettings().fixedRowsTop; - } - - /** - * Check if the provided row is in the fixedRowsBottom section. - * - * @private - * @param {Number} row Visual row index to check. - * @returns {Boolean} - */ - - }, { - key: 'isFixedRowBottom', - value: function isFixedRowBottom(row) { - return row > this.hot.getSettings().fixedRowsBottom; - } - - /** - * Save the manual row positions to the persistent state. - * - * @private - */ - - }, { - key: 'persistentStateSave', - value: function persistentStateSave() { - this.hot.runHooks('persistentStateSave', 'manualRowMove', this.rowsMapper._arrayMap); - } - - /** - * Load the manual row positions from the persistent state. - * - * @private - * @returns {Array} Stored state. - */ - - }, { - key: 'persistentStateLoad', - value: function persistentStateLoad() { - var storedState = {}; - - this.hot.runHooks('persistentStateLoad', 'manualRowMove', storedState); - - return storedState.value ? storedState.value : []; - } - - /** - * Prepare array of indexes based on actual selection. - * - * @private - * @returns {Array} - */ - - }, { - key: 'prepareRowsToMoving', - value: function prepareRowsToMoving() { - var selection = this.hot.getSelectedRange(); - var selectedRows = []; - - if (!selection) { - return selectedRows; - } - - var from = selection.from, - to = selection.to; - - var start = Math.min(from.row, to.row); - var end = Math.max(from.row, to.row); - - (0, _number.rangeEach)(start, end, function (i) { - selectedRows.push(i); - }); - - return selectedRows; - } - - /** - * Update the UI visual position. - * - * @private - */ - - }, { - key: 'refreshPositions', - value: function refreshPositions() { - var priv = privatePool.get(this); - var coords = priv.target.coords; - var firstVisible = this.hot.view.wt.wtTable.getFirstVisibleRow(); - var lastVisible = this.hot.view.wt.wtTable.getLastVisibleRow(); - var fixedRows = this.hot.getSettings().fixedRowsTop; - var countRows = this.hot.countRows(); - - if (coords.row < fixedRows && firstVisible > 0) { - this.hot.scrollViewportTo(firstVisible - 1); - } - if (coords.row >= lastVisible && lastVisible < countRows) { - this.hot.scrollViewportTo(lastVisible + 1, undefined, true); - } - - var wtTable = this.hot.view.wt.wtTable; - var TD = priv.target.TD; - var rootElementOffset = (0, _element.offset)(this.hot.rootElement); - var tdOffsetTop = this.hot.view.THEAD.offsetHeight + this.getRowsHeight(0, coords.row); - var mouseOffsetTop = priv.target.eventPageY - rootElementOffset.top + wtTable.holder.scrollTop; - var hiderHeight = wtTable.hider.offsetHeight; - var tbodyOffsetTop = wtTable.TBODY.offsetTop; - var backlightElemMarginTop = this.backlight.getOffset().top; - var backlightElemHeight = this.backlight.getSize().height; - - if (this.isFixedRowTop(coords.row)) { - tdOffsetTop += wtTable.holder.scrollTop; - } - - // todo: fixedRowsBottom - // if (this.isFixedRowBottom(coords.row)) { - // - // } - - if (coords.row < 0) { - // if hover on colHeader - priv.target.row = firstVisible > 0 ? firstVisible - 1 : firstVisible; - } else if (TD.offsetHeight / 2 + tdOffsetTop <= mouseOffsetTop) { - // if hover on lower part of TD - priv.target.row = coords.row + 1; - // unfortunately first row is bigger than rest - tdOffsetTop += coords.row === 0 ? TD.offsetHeight - 1 : TD.offsetHeight; - } else { - // elsewhere on table - priv.target.row = coords.row; - } - - var backlightTop = mouseOffsetTop; - var guidelineTop = tdOffsetTop; - - if (mouseOffsetTop + backlightElemHeight + backlightElemMarginTop >= hiderHeight) { - // prevent display backlight below table - backlightTop = hiderHeight - backlightElemHeight - backlightElemMarginTop; - } else if (mouseOffsetTop + backlightElemMarginTop < tbodyOffsetTop) { - // prevent display above below table - backlightTop = tbodyOffsetTop + Math.abs(backlightElemMarginTop); - } - - if (tdOffsetTop >= hiderHeight - 1) { - // prevent display guideline below table - guidelineTop = hiderHeight - 1; - } - - var topOverlayHeight = 0; - if (this.hot.view.wt.wtOverlays.topOverlay) { - topOverlayHeight = this.hot.view.wt.wtOverlays.topOverlay.clone.wtTable.TABLE.offsetHeight; - } - - if (coords.row >= fixedRows && guidelineTop - wtTable.holder.scrollTop < topOverlayHeight) { - this.hot.scrollViewportTo(coords.row); - } - - this.backlight.setPosition(backlightTop); - this.guideline.setPosition(guidelineTop); - } - - /** - * This method checks arrayMap from rowsMapper and updates the rowsMapper if it's necessary. - * - * @private - */ - - }, { - key: 'updateRowsMapper', - value: function updateRowsMapper() { - var countRows = this.hot.countSourceRows(); - var rowsMapperLen = this.rowsMapper._arrayMap.length; - - if (rowsMapperLen === 0) { - this.rowsMapper.createMap(countRows || this.hot.getSettings().startRows); - } else if (rowsMapperLen < countRows) { - var diff = countRows - rowsMapperLen; - - this.rowsMapper.insertItems(rowsMapperLen, diff); - } else if (rowsMapperLen > countRows) { - var maxIndex = countRows - 1; - var rowsToRemove = []; - - (0, _array.arrayEach)(this.rowsMapper._arrayMap, function (value, index) { - if (value > maxIndex) { - rowsToRemove.push(index); - } - }); - - this.rowsMapper.removeItems(rowsToRemove); - } - } - - /** - * Bind the events used by the plugin. - * - * @private - */ - - }, { - key: 'registerEvents', - value: function registerEvents() { - var _this4 = this; - - this.eventManager.addEventListener(document.documentElement, 'mousemove', function (event) { - return _this4.onMouseMove(event); - }); - this.eventManager.addEventListener(document.documentElement, 'mouseup', function () { - return _this4.onMouseUp(); - }); - } - - /** - * Unbind the events used by the plugin. - * - * @private - */ - - }, { - key: 'unregisterEvents', - value: function unregisterEvents() { - this.eventManager.clear(); - } - - /** - * `beforeColumnSort` hook callback. If user uses the sorting, manual row moving is disabled. - * - * @private - * @param {Number} column Column index where soring is present - * @param {*} order State of sorting. ASC/DESC/None - */ - - }, { - key: 'onBeforeColumnSort', - value: function onBeforeColumnSort(column, order) { - var priv = privatePool.get(this); - - priv.disallowMoving = order !== void 0; - } - - /** - * Change the behavior of selection / dragging. - * - * @private - * @param {MouseEvent} event - * @param {CellCoords} coords Visual coordinates. - * @param {HTMLElement} TD - * @param {Object} blockCalculations - */ - - }, { - key: 'onBeforeOnCellMouseDown', - value: function onBeforeOnCellMouseDown(event, coords, TD, blockCalculations) { - var wtTable = this.hot.view.wt.wtTable; - var isHeaderSelection = this.hot.selection.selectedHeader.rows; - var selection = this.hot.getSelectedRange(); - var priv = privatePool.get(this); - - if (!selection || !isHeaderSelection || priv.pressed || event.button !== 0) { - priv.pressed = false; - priv.rowsToMove.length = 0; - (0, _element.removeClass)(this.hot.rootElement, [CSS_ON_MOVING, CSS_SHOW_UI]); - return; - } - - var guidelineIsNotReady = this.guideline.isBuilt() && !this.guideline.isAppended(); - var backlightIsNotReady = this.backlight.isBuilt() && !this.backlight.isAppended(); - - if (guidelineIsNotReady && backlightIsNotReady) { - this.guideline.appendTo(wtTable.hider); - this.backlight.appendTo(wtTable.hider); - } - - var from = selection.from, - to = selection.to; - - var start = Math.min(from.row, to.row); - var end = Math.max(from.row, to.row); - - if (coords.col < 0 && coords.row >= start && coords.row <= end) { - blockCalculations.row = true; - priv.pressed = true; - priv.target.eventPageY = event.pageY; - priv.target.coords = coords; - priv.target.TD = TD; - priv.rowsToMove = this.prepareRowsToMoving(); - - var leftPos = wtTable.holder.scrollLeft + this.hot.view.wt.wtViewport.getRowHeaderWidth(); - - this.backlight.setPosition(null, leftPos); - this.backlight.setSize(wtTable.hider.offsetWidth - leftPos, this.getRowsHeight(start, end + 1)); - this.backlight.setOffset((this.getRowsHeight(start, coords.row) + event.layerY) * -1, null); - - (0, _element.addClass)(this.hot.rootElement, CSS_ON_MOVING); - - this.refreshPositions(); - } else { - (0, _element.removeClass)(this.hot.rootElement, CSS_AFTER_SELECTION); - priv.pressed = false; - priv.rowsToMove.length = 0; - } - } - - /** - * 'mouseMove' event callback. Fired when pointer move on document.documentElement. - * - * @private - * @param {MouseEvent} event `mousemove` event properties. - */ - - }, { - key: 'onMouseMove', - value: function onMouseMove(event) { - var priv = privatePool.get(this); - - if (!priv.pressed) { - return; - } - - // callback for browser which doesn't supports CSS pointer-event: none - if (event.realTarget === this.backlight.element) { - var height = this.backlight.getSize().height; - this.backlight.setSize(null, 0); - - setTimeout(function () { - this.backlight.setPosition(null, height); - }); - } - - priv.target.eventPageY = event.pageY; - this.refreshPositions(); - } - - /** - * 'beforeOnCellMouseOver' hook callback. Fired when pointer was over cell. - * - * @private - * @param {MouseEvent} event `mouseover` event properties. - * @param {CellCoords} coords Visual cell coordinates where was fired event. - * @param {HTMLElement} TD Cell represented as HTMLElement. - * @param {Object} blockCalculations Object which contains information about blockCalculation for row, column or cells. - */ - - }, { - key: 'onBeforeOnCellMouseOver', - value: function onBeforeOnCellMouseOver(event, coords, TD, blockCalculations) { - var selectedRange = this.hot.getSelectedRange(); - var priv = privatePool.get(this); - - if (!selectedRange || !priv.pressed) { - return; - } - - if (priv.rowsToMove.indexOf(coords.row) > -1) { - (0, _element.removeClass)(this.hot.rootElement, CSS_SHOW_UI); - } else { - (0, _element.addClass)(this.hot.rootElement, CSS_SHOW_UI); - } - - blockCalculations.row = true; - blockCalculations.column = true; - blockCalculations.cell = true; - priv.target.coords = coords; - priv.target.TD = TD; - } - - /** - * `onMouseUp` hook callback. - * - * @private - */ - - }, { - key: 'onMouseUp', - value: function onMouseUp() { - var priv = privatePool.get(this); - var target = priv.target.row; - var rowsLen = priv.rowsToMove.length; - - priv.pressed = false; - priv.backlightHeight = 0; - - (0, _element.removeClass)(this.hot.rootElement, [CSS_ON_MOVING, CSS_SHOW_UI, CSS_AFTER_SELECTION]); - - if (this.hot.selection.selectedHeader.rows) { - (0, _element.addClass)(this.hot.rootElement, CSS_AFTER_SELECTION); - } - - if (rowsLen < 1 || target === void 0 || priv.rowsToMove.indexOf(target) > -1 || priv.rowsToMove[rowsLen - 1] === target - 1) { - return; - } - - this.moveRows(priv.rowsToMove, target); - - this.persistentStateSave(); - this.hot.render(); - - if (!priv.disallowMoving) { - var selectionStart = this.rowsMapper.getIndexByValue(priv.rowsToMove[0]); - var selectionEnd = this.rowsMapper.getIndexByValue(priv.rowsToMove[rowsLen - 1]); - this.changeSelection(selectionStart, selectionEnd); - } - - priv.rowsToMove.length = 0; - } - - /** - * `afterScrollHorizontally` hook callback. Fired the table was scrolled horizontally. - * - * @private - */ - - }, { - key: 'onAfterScrollHorizontally', - value: function onAfterScrollHorizontally() { - var wtTable = this.hot.view.wt.wtTable; - var headerWidth = this.hot.view.wt.wtViewport.getRowHeaderWidth(); - var scrollLeft = wtTable.holder.scrollLeft; - var posLeft = headerWidth + scrollLeft; - - this.backlight.setPosition(null, posLeft); - this.backlight.setSize(wtTable.hider.offsetWidth - posLeft); - } - - /** - * `afterCreateRow` hook callback. - * - * @private - * @param {Number} index Visual index of the created row. - * @param {Number} amount Amount of created rows. - */ - - }, { - key: 'onAfterCreateRow', - value: function onAfterCreateRow(index, amount) { - this.rowsMapper.shiftItems(index, amount); - } - - /** - * On before remove row listener. - * - * @private - * @param {Number} index Visual row index. - * @param {Number} amount Defines how many rows removed. - */ - - }, { - key: 'onBeforeRemoveRow', - value: function onBeforeRemoveRow(index, amount) { - var _this5 = this; - - this.removedRows.length = 0; - - if (index !== false) { - // Collect physical row index. - (0, _number.rangeEach)(index, index + amount - 1, function (removedIndex) { - _this5.removedRows.push(_this5.hot.runHooks('modifyRow', removedIndex, _this5.pluginName)); - }); - } - } - - /** - * `afterRemoveRow` hook callback. - * - * @private - */ - - }, { - key: 'onAfterRemoveRow', - value: function onAfterRemoveRow() { - this.rowsMapper.unshiftItems(this.removedRows); - } - - /** - * `afterLoadData` hook callback. - * - * @private - */ - - }, { - key: 'onAfterLoadData', - value: function onAfterLoadData() { - this.updateRowsMapper(); - } - - /** - * 'modifyRow' hook callback. - * - * @private - * @param {Number} row Visual Row index. - * @returns {Number} Physical row index. - */ - - }, { - key: 'onModifyRow', - value: function onModifyRow(row, source) { - if (source !== this.pluginName) { - var rowInMapper = this.rowsMapper.getValueByIndex(row); - row = rowInMapper === null ? row : rowInMapper; - } - - return row; - } - - /** - * 'unmodifyRow' hook callback. - * - * @private - * @param {Number} row Physical row index. - * @returns {Number} Visual row index. - */ - - }, { - key: 'onUnmodifyRow', - value: function onUnmodifyRow(row) { - var indexInMapper = this.rowsMapper.getIndexByValue(row); - - return indexInMapper === null ? row : indexInMapper; - } - - /** - * `afterPluginsInitialized` hook callback. - * - * @private - */ - - }, { - key: 'onAfterPluginsInitialized', - value: function onAfterPluginsInitialized() { - this.updateRowsMapper(); - this.initialSettings(); - this.backlight.build(); - this.guideline.build(); - } - - /** - * Destroy plugin instance. - */ - - }, { - key: 'destroy', - value: function destroy() { - this.backlight.destroy(); - this.guideline.destroy(); - - _get(ManualRowMove.prototype.__proto__ || Object.getPrototypeOf(ManualRowMove.prototype), 'destroy', this).call(this); - } - }]); - - return ManualRowMove; -}(_base2.default); - -(0, _plugins.registerPlugin)('ManualRowMove', ManualRowMove); - -exports.default = ManualRowMove; - -/***/ }), -/* 294 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _arrayMapper = __webpack_require__(176); - -var _arrayMapper2 = _interopRequireDefault(_arrayMapper); - -var _array = __webpack_require__(2); - -var _object = __webpack_require__(1); - -var _number = __webpack_require__(6); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class RowsMapper - * @plugin ManualRowMove - */ -var RowsMapper = function () { - function RowsMapper(manualRowMove) { - _classCallCheck(this, RowsMapper); - - /** - * Instance of ManualRowMove plugin. - * - * @type {ManualRowMove} - */ - this.manualRowMove = manualRowMove; - } - - /** - * Reset current map array and create new one. - * - * @param {Number} [length] Custom generated map length. - */ - - - _createClass(RowsMapper, [{ - key: 'createMap', - value: function createMap(length) { - var _this = this; - - var originLength = length === void 0 ? this._arrayMap.length : length; - - this._arrayMap.length = 0; - - (0, _number.rangeEach)(originLength - 1, function (itemIndex) { - _this._arrayMap[itemIndex] = itemIndex; - }); - } - - /** - * Destroy class. - */ - - }, { - key: 'destroy', - value: function destroy() { - this._arrayMap = null; - } - - /** - * Moving elements in rowsMapper. - * - * @param {Number} from Row index to move. - * @param {Number} to Target index. - */ - - }, { - key: 'moveRow', - value: function moveRow(from, to) { - var indexToMove = this._arrayMap[from]; - this._arrayMap[from] = null; - this._arrayMap.splice(to, 0, indexToMove); - } - - /** - * Clearing arrayMap from `null` entries. - */ - - }, { - key: 'clearNull', - value: function clearNull() { - this._arrayMap = (0, _array.arrayFilter)(this._arrayMap, function (i) { - return i !== null; - }); - } - }]); - - return RowsMapper; -}(); - -(0, _object.mixin)(RowsMapper, _arrayMapper2.default); - -exports.default = RowsMapper; - -/***/ }), -/* 295 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _base = __webpack_require__(178); - -var _base2 = _interopRequireDefault(_base); - -var _element = __webpack_require__(0); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var CSS_CLASSNAME = 'ht__manualRowMove--backlight'; - -/** - * @class BacklightUI - * @util - */ - -var BacklightUI = function (_BaseUI) { - _inherits(BacklightUI, _BaseUI); - - function BacklightUI() { - _classCallCheck(this, BacklightUI); - - return _possibleConstructorReturn(this, (BacklightUI.__proto__ || Object.getPrototypeOf(BacklightUI)).apply(this, arguments)); - } - - _createClass(BacklightUI, [{ - key: 'build', - - /** - * Custom className on build process. - */ - value: function build() { - _get(BacklightUI.prototype.__proto__ || Object.getPrototypeOf(BacklightUI.prototype), 'build', this).call(this); - - (0, _element.addClass)(this._element, CSS_CLASSNAME); - } - }]); - - return BacklightUI; -}(_base2.default); - -exports.default = BacklightUI; - -/***/ }), -/* 296 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _base = __webpack_require__(178); - -var _base2 = _interopRequireDefault(_base); - -var _element = __webpack_require__(0); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var CSS_CLASSNAME = 'ht__manualRowMove--guideline'; - -/** - * @class GuidelineUI - * @util - */ - -var GuidelineUI = function (_BaseUI) { - _inherits(GuidelineUI, _BaseUI); - - function GuidelineUI() { - _classCallCheck(this, GuidelineUI); - - return _possibleConstructorReturn(this, (GuidelineUI.__proto__ || Object.getPrototypeOf(GuidelineUI)).apply(this, arguments)); - } - - _createClass(GuidelineUI, [{ - key: 'build', - - /** - * Custom className on build process. - */ - value: function build() { - _get(GuidelineUI.prototype.__proto__ || Object.getPrototypeOf(GuidelineUI.prototype), 'build', this).call(this); - - (0, _element.addClass)(this._element, CSS_CLASSNAME); - } - }]); - - return GuidelineUI; -}(_base2.default); - -exports.default = GuidelineUI; - -/***/ }), -/* 297 */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), -/* 298 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _element = __webpack_require__(0); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _event = __webpack_require__(8); - -var _array = __webpack_require__(2); - -var _number = __webpack_require__(6); - -var _plugins = __webpack_require__(5); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -// Developer note! Whenever you make a change in this file, make an analogous change in manualRowResize.js - -/** - * @description - * ManualRowResize Plugin. - * - * Has 2 UI components: - * - handle - the draggable element that sets the desired height of the row. - * - guide - the helper guide that shows the desired height as a horizontal guide. - * - * @plugin ManualRowResize - */ -var ManualRowResize = function (_BasePlugin) { - _inherits(ManualRowResize, _BasePlugin); - - function ManualRowResize(hotInstance) { - _classCallCheck(this, ManualRowResize); - - var _this = _possibleConstructorReturn(this, (ManualRowResize.__proto__ || Object.getPrototypeOf(ManualRowResize)).call(this, hotInstance)); - - _this.currentTH = null; - _this.currentRow = null; - _this.selectedRows = []; - _this.currentHeight = null; - _this.newSize = null; - _this.startY = null; - _this.startHeight = null; - _this.startOffset = null; - _this.handle = document.createElement('DIV'); - _this.guide = document.createElement('DIV'); - _this.eventManager = new _eventManager2.default(_this); - _this.pressed = null; - _this.dblclick = 0; - _this.autoresizeTimeout = null; - _this.manualRowHeights = []; - - (0, _element.addClass)(_this.handle, 'manualRowResizer'); - (0, _element.addClass)(_this.guide, 'manualRowResizerGuide'); - return _this; - } - - /** - * Check if the plugin is enabled in the handsontable settings. - * - * @returns {Boolean} - */ - - - _createClass(ManualRowResize, [{ - key: 'isEnabled', - value: function isEnabled() { - return this.hot.getSettings().manualRowResize; - } - - /** - * Enable plugin for this Handsontable instance. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this2 = this; - - if (this.enabled) { - return; - } - - this.manualRowHeights = []; - - var initialRowHeights = this.hot.getSettings().manualRowResize; - var loadedManualRowHeights = this.loadManualRowHeights(); - - if (typeof loadedManualRowHeights != 'undefined') { - this.manualRowHeights = loadedManualRowHeights; - } else if (Array.isArray(initialRowHeights)) { - this.manualRowHeights = initialRowHeights; - } else { - this.manualRowHeights = []; - } - - this.addHook('modifyRowHeight', function (height, row) { - return _this2.onModifyRowHeight(height, row); - }); - - // Handsontable.hooks.register('beforeRowResize'); - // Handsontable.hooks.register('afterRowResize'); - - this.bindEvents(); - - _get(ManualRowResize.prototype.__proto__ || Object.getPrototypeOf(ManualRowResize.prototype), 'enablePlugin', this).call(this); - } - - /** - * Updates the plugin to use the latest options you have specified. - */ - - }, { - key: 'updatePlugin', - value: function updatePlugin() { - var initialRowHeights = this.hot.getSettings().manualRowResize; - - if (Array.isArray(initialRowHeights)) { - this.manualRowHeights = initialRowHeights; - } else if (!initialRowHeights) { - this.manualRowHeights = []; - } - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - _get(ManualRowResize.prototype.__proto__ || Object.getPrototypeOf(ManualRowResize.prototype), 'disablePlugin', this).call(this); - } - - /** - * Save the current sizes using the persistentState plugin. - */ - - }, { - key: 'saveManualRowHeights', - value: function saveManualRowHeights() { - this.hot.runHooks('persistentStateSave', 'manualRowHeights', this.manualRowHeights); - } - - /** - * Load the previously saved sizes using the persistentState plugin. - * - * @returns {Array} - */ - - }, { - key: 'loadManualRowHeights', - value: function loadManualRowHeights() { - var storedState = {}; - - this.hot.runHooks('persistentStateLoad', 'manualRowHeights', storedState); - - return storedState.value; - } - - /** - * Set the resize handle position. - * - * @param {HTMLCellElement} TH TH HTML element. - */ - - }, { - key: 'setupHandlePosition', - value: function setupHandlePosition(TH) { - var _this3 = this; - - this.currentTH = TH; - var row = this.hot.view.wt.wtTable.getCoords(TH).row; // getCoords returns CellCoords - var headerWidth = (0, _element.outerWidth)(this.currentTH); - - if (row >= 0) { - // if not col header - var box = this.currentTH.getBoundingClientRect(); - - this.currentRow = row; - this.selectedRows = []; - - if (this.hot.selection.isSelected() && this.hot.selection.selectedHeader.rows) { - var _hot$getSelectedRange = this.hot.getSelectedRange(), - from = _hot$getSelectedRange.from, - to = _hot$getSelectedRange.to; - - var start = from.row; - var end = to.row; - - if (start >= end) { - start = to.row; - end = from.row; - } - - if (this.currentRow >= start && this.currentRow <= end) { - (0, _number.rangeEach)(start, end, function (i) { - return _this3.selectedRows.push(i); - }); - } else { - this.selectedRows.push(this.currentRow); - } - } else { - this.selectedRows.push(this.currentRow); - } - - this.startOffset = box.top - 6; - this.startHeight = parseInt(box.height, 10); - this.handle.style.left = box.left + 'px'; - this.handle.style.top = this.startOffset + this.startHeight + 'px'; - this.handle.style.width = headerWidth + 'px'; - this.hot.rootElement.appendChild(this.handle); - } - } - - /** - * Refresh the resize handle position. - */ - - }, { - key: 'refreshHandlePosition', - value: function refreshHandlePosition() { - this.handle.style.top = this.startOffset + this.currentHeight + 'px'; - } - - /** - * Set the resize guide position. - */ - - }, { - key: 'setupGuidePosition', - value: function setupGuidePosition() { - var handleWidth = parseInt((0, _element.outerWidth)(this.handle), 10); - var handleRightPosition = parseInt(this.handle.style.left, 10) + handleWidth; - var maximumVisibleElementWidth = parseInt(this.hot.view.maximumVisibleElementWidth(0), 10); - (0, _element.addClass)(this.handle, 'active'); - (0, _element.addClass)(this.guide, 'active'); - - this.guide.style.top = this.handle.style.top; - this.guide.style.left = handleRightPosition + 'px'; - this.guide.style.width = maximumVisibleElementWidth - handleWidth + 'px'; - this.hot.rootElement.appendChild(this.guide); - } - - /** - * Refresh the resize guide position. - */ - - }, { - key: 'refreshGuidePosition', - value: function refreshGuidePosition() { - this.guide.style.top = this.handle.style.top; - } - - /** - * Hide both the resize handle and resize guide. - */ - - }, { - key: 'hideHandleAndGuide', - value: function hideHandleAndGuide() { - (0, _element.removeClass)(this.handle, 'active'); - (0, _element.removeClass)(this.guide, 'active'); - } - - /** - * Check if provided element is considered as a row header. - * - * @param {HTMLElement} element HTML element. - * @returns {Boolean} - */ - - }, { - key: 'checkIfRowHeader', - value: function checkIfRowHeader(element) { - if (element != this.hot.rootElement) { - var parent = element.parentNode; - - if (parent.tagName === 'TBODY') { - return true; - } - - return this.checkIfRowHeader(parent); - } - - return false; - } - - /** - * Get the TH element from the provided element. - * - * @param {HTMLElement} element HTML element. - * @returns {HTMLElement} - */ - - }, { - key: 'getTHFromTargetElement', - value: function getTHFromTargetElement(element) { - if (element.tagName != 'TABLE') { - if (element.tagName == 'TH') { - return element; - } - return this.getTHFromTargetElement(element.parentNode); - } - - return null; - } - - /** - * 'mouseover' event callback - set the handle position. - * - * @private - * @param {MouseEvent} event - */ - - }, { - key: 'onMouseOver', - value: function onMouseOver(event) { - if (this.checkIfRowHeader(event.target)) { - var th = this.getTHFromTargetElement(event.target); - - if (th) { - if (!this.pressed) { - this.setupHandlePosition(th); - } - } - } - } - - /** - * Auto-size row after doubleclick - callback. - * - * @private - */ - - }, { - key: 'afterMouseDownTimeout', - value: function afterMouseDownTimeout() { - var _this4 = this; - - var render = function render() { - _this4.hot.forceFullRender = true; - _this4.hot.view.render(); // updates all - _this4.hot.view.wt.wtOverlays.adjustElementsSize(true); - }; - var resize = function resize(selectedRow, forceRender) { - var hookNewSize = _this4.hot.runHooks('beforeRowResize', selectedRow, _this4.newSize, true); - - if (hookNewSize !== void 0) { - _this4.newSize = hookNewSize; - } - - _this4.setManualSize(selectedRow, _this4.newSize); // double click sets auto row size - - if (forceRender) { - render(); - } - - _this4.hot.runHooks('afterRowResize', selectedRow, _this4.newSize, true); - }; - - if (this.dblclick >= 2) { - var selectedRowsLength = this.selectedRows.length; - - if (selectedRowsLength > 1) { - (0, _array.arrayEach)(this.selectedRows, function (selectedRow) { - resize(selectedRow); - }); - render(); - } else { - (0, _array.arrayEach)(this.selectedRows, function (selectedRow) { - resize(selectedRow, true); - }); - } - } - this.dblclick = 0; - this.autoresizeTimeout = null; - } - - /** - * 'mousedown' event callback. - * - * @private - * @param {MouseEvent} event - */ - - }, { - key: 'onMouseDown', - value: function onMouseDown(event) { - var _this5 = this; - - if ((0, _element.hasClass)(event.target, 'manualRowResizer')) { - this.setupGuidePosition(); - this.pressed = this.hot; - - if (this.autoresizeTimeout == null) { - this.autoresizeTimeout = setTimeout(function () { - return _this5.afterMouseDownTimeout(); - }, 500); - - this.hot._registerTimeout(this.autoresizeTimeout); - } - this.dblclick++; - - this.startY = (0, _event.pageY)(event); - this.newSize = this.startHeight; - } - } - - /** - * 'mousemove' event callback - refresh the handle and guide positions, cache the new row height. - * - * @private - * @param {MouseEvent} event - */ - - }, { - key: 'onMouseMove', - value: function onMouseMove(event) { - var _this6 = this; - - if (this.pressed) { - this.currentHeight = this.startHeight + ((0, _event.pageY)(event) - this.startY); - - (0, _array.arrayEach)(this.selectedRows, function (selectedRow) { - _this6.newSize = _this6.setManualSize(selectedRow, _this6.currentHeight); - }); - - this.refreshHandlePosition(); - this.refreshGuidePosition(); - } - } - - /** - * 'mouseup' event callback - apply the row resizing. - * - * @private - * @param {MouseEvent} event - */ - - }, { - key: 'onMouseUp', - value: function onMouseUp(event) { - var _this7 = this; - - var render = function render() { - _this7.hot.forceFullRender = true; - _this7.hot.view.render(); // updates all - _this7.hot.view.wt.wtOverlays.adjustElementsSize(true); - }; - var runHooks = function runHooks(selectedRow, forceRender) { - _this7.hot.runHooks('beforeRowResize', selectedRow, _this7.newSize); - - if (forceRender) { - render(); - } - - _this7.saveManualRowHeights(); - - _this7.hot.runHooks('afterRowResize', selectedRow, _this7.newSize); - }; - if (this.pressed) { - this.hideHandleAndGuide(); - this.pressed = false; - - if (this.newSize != this.startHeight) { - var selectedRowsLength = this.selectedRows.length; - - if (selectedRowsLength > 1) { - (0, _array.arrayEach)(this.selectedRows, function (selectedRow) { - runHooks(selectedRow); - }); - render(); - } else { - (0, _array.arrayEach)(this.selectedRows, function (selectedRow) { - runHooks(selectedRow, true); - }); - } - } - - this.setupHandlePosition(this.currentTH); - } - } - - /** - * Bind the mouse events. - * - * @private - */ - - }, { - key: 'bindEvents', - value: function bindEvents() { - var _this8 = this; - - this.eventManager.addEventListener(this.hot.rootElement, 'mouseover', function (e) { - return _this8.onMouseOver(e); - }); - this.eventManager.addEventListener(this.hot.rootElement, 'mousedown', function (e) { - return _this8.onMouseDown(e); - }); - this.eventManager.addEventListener(window, 'mousemove', function (e) { - return _this8.onMouseMove(e); - }); - this.eventManager.addEventListener(window, 'mouseup', function (e) { - return _this8.onMouseUp(e); - }); - } - - /** - * Cache the current row height. - * - * @param {Number} row Visual row index. - * @param {Number} height Row height. - * @returns {Number} - */ - - }, { - key: 'setManualSize', - value: function setManualSize(row, height) { - row = this.hot.runHooks('modifyRow', row); - this.manualRowHeights[row] = height; - - return height; - } - - /** - * Modify the provided row height, based on the plugin settings. - * - * @private - * @param {Number} height Row height. - * @param {Number} row Visual row index. - * @returns {Number} - */ - - }, { - key: 'onModifyRowHeight', - value: function onModifyRowHeight(height, row) { - if (this.enabled) { - var autoRowSizePlugin = this.hot.getPlugin('autoRowSize'); - var autoRowHeightResult = autoRowSizePlugin ? autoRowSizePlugin.heights[row] : null; - - row = this.hot.runHooks('modifyRow', row); - - var manualRowHeight = this.manualRowHeights[row]; - - if (manualRowHeight !== void 0 && (manualRowHeight === autoRowHeightResult || manualRowHeight > (height || 0))) { - return manualRowHeight; - } - } - - return height; - } - }]); - - return ManualRowResize; -}(_base2.default); - -(0, _plugins.registerPlugin)('manualRowResize', ManualRowResize); - -exports.default = ManualRowResize; - -/***/ }), -/* 299 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _plugins = __webpack_require__(5); - -var _event = __webpack_require__(8); - -var _src = __webpack_require__(12); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function CellInfoCollection() { - var collection = []; - - collection.getInfo = function (row, col) { - for (var i = 0, ilen = this.length; i < ilen; i++) { - if (this[i].row <= row && this[i].row + this[i].rowspan - 1 >= row && this[i].col <= col && this[i].col + this[i].colspan - 1 >= col) { - return this[i]; - } - } - }; - - collection.setInfo = function (info) { - for (var i = 0, ilen = this.length; i < ilen; i++) { - if (this[i].row === info.row && this[i].col === info.col) { - this[i] = info; - return; - } - } - this.push(info); - }; - - collection.removeInfo = function (row, col) { - for (var i = 0, ilen = this.length; i < ilen; i++) { - if (this[i].row === row && this[i].col === col) { - this.splice(i, 1); - break; - } - } - }; - - return collection; -} - -/** - * Plugin used to merge cells in Handsontable. - * - * @private - * @plugin MergeCells - * @class MergeCells - */ -function MergeCells(mergeCellsSetting) { - this.mergedCellInfoCollection = new CellInfoCollection(); - - if (Array.isArray(mergeCellsSetting)) { - for (var i = 0, ilen = mergeCellsSetting.length; i < ilen; i++) { - this.mergedCellInfoCollection.setInfo(mergeCellsSetting[i]); - } - } -} - -/** - * @param cellRange (CellRange) - */ -MergeCells.prototype.canMergeRange = function (cellRange) { - // is more than one cell selected - return !cellRange.isSingle(); -}; - -MergeCells.prototype.mergeRange = function (cellRange) { - if (!this.canMergeRange(cellRange)) { - return; - } - - // normalize top left corner - var topLeft = cellRange.getTopLeftCorner(); - var bottomRight = cellRange.getBottomRightCorner(); - - var mergeParent = {}; - mergeParent.row = topLeft.row; - mergeParent.col = topLeft.col; - // TD has rowspan == 1 by default. rowspan == 2 means spread over 2 cells - mergeParent.rowspan = bottomRight.row - topLeft.row + 1; - mergeParent.colspan = bottomRight.col - topLeft.col + 1; - this.mergedCellInfoCollection.setInfo(mergeParent); -}; - -MergeCells.prototype.mergeOrUnmergeSelection = function (cellRange) { - var info = this.mergedCellInfoCollection.getInfo(cellRange.from.row, cellRange.from.col); - if (info) { - // unmerge - this.unmergeSelection(cellRange.from); - } else { - // merge - this.mergeSelection(cellRange); - } -}; - -MergeCells.prototype.mergeSelection = function (cellRange) { - this.mergeRange(cellRange); -}; - -MergeCells.prototype.unmergeSelection = function (cellRange) { - var info = this.mergedCellInfoCollection.getInfo(cellRange.row, cellRange.col); - this.mergedCellInfoCollection.removeInfo(info.row, info.col); -}; - -MergeCells.prototype.applySpanProperties = function (TD, row, col) { - var info = this.mergedCellInfoCollection.getInfo(row, col); - - if (info) { - if (info.row === row && info.col === col) { - TD.setAttribute('rowspan', info.rowspan); - TD.setAttribute('colspan', info.colspan); - } else { - TD.removeAttribute('rowspan'); - TD.removeAttribute('colspan'); - - TD.style.display = 'none'; - } - } else { - TD.removeAttribute('rowspan'); - TD.removeAttribute('colspan'); - } -}; - -MergeCells.prototype.modifyTransform = function (hook, currentSelectedRange, delta) { - var sameRowspan = function sameRowspan(merged, coords) { - if (coords.row >= merged.row && coords.row <= merged.row + merged.rowspan - 1) { - return true; - } - return false; - }, - sameColspan = function sameColspan(merged, coords) { - if (coords.col >= merged.col && coords.col <= merged.col + merged.colspan - 1) { - return true; - } - return false; - }, - getNextPosition = function getNextPosition(newDelta) { - return new _src.CellCoords(currentSelectedRange.to.row + newDelta.row, currentSelectedRange.to.col + newDelta.col); - }; - - var newDelta = { - row: delta.row, - col: delta.col - }; - - if (hook == 'modifyTransformStart') { - /* eslint-disable block-scoped-var */ - var nextPosition; - - if (!this.lastDesiredCoords) { - this.lastDesiredCoords = new _src.CellCoords(null, null); - } - var currentPosition = new _src.CellCoords(currentSelectedRange.highlight.row, currentSelectedRange.highlight.col), - - // if current position's parent is a merged range, returns it - mergedParent = this.mergedCellInfoCollection.getInfo(currentPosition.row, currentPosition.col), - currentRangeContainsMerge; // if current range contains a merged range - - for (var i = 0, mergesLength = this.mergedCellInfoCollection.length; i < mergesLength; i++) { - var range = this.mergedCellInfoCollection[i]; - range = new _src.CellCoords(range.row + range.rowspan - 1, range.col + range.colspan - 1); - if (currentSelectedRange.includes(range)) { - currentRangeContainsMerge = true; - break; - } - } - - if (mergedParent) { - // only merge selected - var mergeTopLeft = new _src.CellCoords(mergedParent.row, mergedParent.col); - var mergeBottomRight = new _src.CellCoords(mergedParent.row + mergedParent.rowspan - 1, mergedParent.col + mergedParent.colspan - 1); - var mergeRange = new _src.CellRange(mergeTopLeft, mergeTopLeft, mergeBottomRight); - - if (!mergeRange.includes(this.lastDesiredCoords)) { - this.lastDesiredCoords = new _src.CellCoords(null, null); // reset outdated version of lastDesiredCoords - } - - newDelta.row = this.lastDesiredCoords.row ? this.lastDesiredCoords.row - currentPosition.row : newDelta.row; - newDelta.col = this.lastDesiredCoords.col ? this.lastDesiredCoords.col - currentPosition.col : newDelta.col; - - if (delta.row > 0) { - // moving down - newDelta.row = mergedParent.row + mergedParent.rowspan - 1 - currentPosition.row + delta.row; - } else if (delta.row < 0) { - // moving up - newDelta.row = currentPosition.row - mergedParent.row + delta.row; - } - if (delta.col > 0) { - // moving right - newDelta.col = mergedParent.col + mergedParent.colspan - 1 - currentPosition.col + delta.col; - } else if (delta.col < 0) { - // moving left - newDelta.col = currentPosition.col - mergedParent.col + delta.col; - } - } - - nextPosition = new _src.CellCoords(currentSelectedRange.highlight.row + newDelta.row, currentSelectedRange.highlight.col + newDelta.col); - - var nextParentIsMerged = this.mergedCellInfoCollection.getInfo(nextPosition.row, nextPosition.col); - - if (nextParentIsMerged) { - // skipping the invisible cells in the merge range - this.lastDesiredCoords = nextPosition; - newDelta = { - row: nextParentIsMerged.row - currentPosition.row, - col: nextParentIsMerged.col - currentPosition.col - }; - } - } else if (hook == 'modifyTransformEnd') { - for (var _i = 0, _mergesLength = this.mergedCellInfoCollection.length; _i < _mergesLength; _i++) { - var currentMerge = this.mergedCellInfoCollection[_i]; - var _mergeTopLeft = new _src.CellCoords(currentMerge.row, currentMerge.col); - var _mergeBottomRight = new _src.CellCoords(currentMerge.row + currentMerge.rowspan - 1, currentMerge.col + currentMerge.colspan - 1); - var mergedRange = new _src.CellRange(_mergeTopLeft, _mergeTopLeft, _mergeBottomRight); - var sharedBorders = currentSelectedRange.getBordersSharedWith(mergedRange); - - if (mergedRange.isEqual(currentSelectedRange)) { - // only the merged range is selected - currentSelectedRange.setDirection('NW-SE'); - } else if (sharedBorders.length > 0) { - var mergeHighlighted = currentSelectedRange.highlight.isEqual(mergedRange.from); - - if (sharedBorders.indexOf('top') > -1) { - // if range shares a border with the merged section, change range direction accordingly - if (currentSelectedRange.to.isSouthEastOf(mergedRange.from) && mergeHighlighted) { - currentSelectedRange.setDirection('NW-SE'); - } else if (currentSelectedRange.to.isSouthWestOf(mergedRange.from) && mergeHighlighted) { - currentSelectedRange.setDirection('NE-SW'); - } - } else if (sharedBorders.indexOf('bottom') > -1) { - if (currentSelectedRange.to.isNorthEastOf(mergedRange.from) && mergeHighlighted) { - currentSelectedRange.setDirection('SW-NE'); - } else if (currentSelectedRange.to.isNorthWestOf(mergedRange.from) && mergeHighlighted) { - currentSelectedRange.setDirection('SE-NW'); - } - } - } - - nextPosition = getNextPosition(newDelta); - var withinRowspan = sameRowspan(currentMerge, nextPosition), - withinColspan = sameColspan(currentMerge, nextPosition); - - if (currentSelectedRange.includesRange(mergedRange) && (mergedRange.includes(nextPosition) || withinRowspan || withinColspan)) { - // if next step overlaps a merged range, jump past it - if (withinRowspan) { - if (newDelta.row < 0) { - newDelta.row -= currentMerge.rowspan - 1; - } else if (newDelta.row > 0) { - newDelta.row += currentMerge.rowspan - 1; - } - } - if (withinColspan) { - if (newDelta.col < 0) { - newDelta.col -= currentMerge.colspan - 1; - } else if (newDelta.col > 0) { - newDelta.col += currentMerge.colspan - 1; - } - } - } - } - } - - if (newDelta.row !== 0) { - delta.row = newDelta.row; - } - if (newDelta.col !== 0) { - delta.col = newDelta.col; - } -}; - -MergeCells.prototype.shiftCollection = function (direction, index, count) { - var shiftVector = [0, 0]; - - switch (direction) { - case 'right': - shiftVector[0] += 1; - - break; - case 'left': - shiftVector[0] -= 1; - - break; - case 'down': - shiftVector[1] += 1; - - break; - case 'up': - shiftVector[1] -= 1; - - break; - default: - break; - } - - for (var i = 0; i < this.mergedCellInfoCollection.length; i++) { - var currentMerge = this.mergedCellInfoCollection[i]; - - if (direction === 'right' || direction === 'left') { - if (index <= currentMerge.col) { - currentMerge.col += shiftVector[0]; - } - } else if (index <= currentMerge.row) { - currentMerge.row += shiftVector[1]; - } - } -}; - -var beforeInit = function beforeInit() { - var instance = this; - var mergeCellsSetting = instance.getSettings().mergeCells; - - if (mergeCellsSetting) { - if (!instance.mergeCells) { - instance.mergeCells = new MergeCells(mergeCellsSetting); - } - } -}; - -var afterInit = function afterInit() { - var instance = this; - if (instance.mergeCells) { - /** - * Monkey patch Table.prototype.getCell to return TD for merged cell parent if asked for TD of a cell that is - * invisible due to the merge. This is not the cleanest solution but there is a test case for it (merged cells scroll) so feel free to refactor it! - */ - instance.view.wt.wtTable.getCell = function (coords) { - if (instance.getSettings().mergeCells) { - var mergeParent = instance.mergeCells.mergedCellInfoCollection.getInfo(coords.row, coords.col); - if (mergeParent) { - coords = mergeParent; - } - } - return _src.Table.prototype.getCell.call(this, coords); - }; - } -}; - -var afterUpdateSettings = function afterUpdateSettings() { - var instance = this; - var mergeCellsSetting = instance.getSettings().mergeCells; - - if (mergeCellsSetting) { - if (instance.mergeCells) { - instance.mergeCells.mergedCellInfoCollection = new CellInfoCollection(); - - if (Array.isArray(mergeCellsSetting)) { - for (var i = 0, ilen = mergeCellsSetting.length; i < ilen; i++) { - instance.mergeCells.mergedCellInfoCollection.setInfo(mergeCellsSetting[i]); - } - } - } else { - instance.mergeCells = new MergeCells(mergeCellsSetting); - } - } else if (instance.mergeCells) { - // it doesn't actually turn off the plugin, just resets the settings. Need to refactor. - instance.mergeCells.mergedCellInfoCollection = new CellInfoCollection(); - } -}; - -var onBeforeKeyDown = function onBeforeKeyDown(event) { - if (!this.mergeCells) { - return; - } - - var ctrlDown = (event.ctrlKey || event.metaKey) && !event.altKey; - - if (ctrlDown) { - if (event.keyCode === 77) { - // CTRL + M - this.mergeCells.mergeOrUnmergeSelection(this.getSelectedRange()); - this.render(); - (0, _event.stopImmediatePropagation)(event); - } - } -}; - -var addMergeActionsToContextMenu = function addMergeActionsToContextMenu(defaultOptions) { - if (!this.getSettings().mergeCells) { - return; - } - - defaultOptions.items.push({ name: '---------' }); - defaultOptions.items.push({ - key: 'mergeCells', - name: function name() { - var sel = this.getSelected(); - var info = this.mergeCells.mergedCellInfoCollection.getInfo(sel[0], sel[1]); - if (info) { - return 'Unmerge cells'; - } - return 'Merge cells'; - }, - callback: function callback() { - this.mergeCells.mergeOrUnmergeSelection(this.getSelectedRange()); - this.render(); - }, - disabled: function disabled() { - return this.selection.selectedHeader.corner; - } - }); -}; - -var afterRenderer = function afterRenderer(TD, row, col, prop, value, cellProperties) { - if (this.mergeCells) { - this.mergeCells.applySpanProperties(TD, row, col); - } -}; - -var modifyTransformFactory = function modifyTransformFactory(hook) { - return function (delta) { - var mergeCellsSetting = this.getSettings().mergeCells; - if (mergeCellsSetting) { - var currentSelectedRange = this.getSelectedRange(); - this.mergeCells.modifyTransform(hook, currentSelectedRange, delta); - - if (hook === 'modifyTransformEnd') { - // sanitize "from" (core.js will sanitize to) - var totalRows = this.countRows(); - var totalCols = this.countCols(); - if (currentSelectedRange.from.row < 0) { - currentSelectedRange.from.row = 0; - } else if (currentSelectedRange.from.row > 0 && currentSelectedRange.from.row >= totalRows) { - currentSelectedRange.from.row = currentSelectedRange.from - 1; - } - - if (currentSelectedRange.from.col < 0) { - currentSelectedRange.from.col = 0; - } else if (currentSelectedRange.from.col > 0 && currentSelectedRange.from.col >= totalCols) { - currentSelectedRange.from.col = totalCols - 1; - } - } - } - }; -}; - -/** - * While selecting cells with keyboard or mouse, make sure that rectangular area is expanded to the extent of the merged cell - * @param coords - */ -var beforeSetRangeEnd = function beforeSetRangeEnd(coords) { - - this.lastDesiredCoords = null; // unset lastDesiredCoords when selection is changed with mouse - var mergeCellsSetting = this.getSettings().mergeCells; - if (mergeCellsSetting) { - var selRange = this.getSelectedRange(); - selRange.highlight = new _src.CellCoords(selRange.highlight.row, selRange.highlight.col); // clone in case we will modify its reference - selRange.to = coords; - - var rangeExpanded = false; - do { - rangeExpanded = false; - - for (var i = 0, ilen = this.mergeCells.mergedCellInfoCollection.length; i < ilen; i++) { - var cellInfo = this.mergeCells.mergedCellInfoCollection[i]; - var mergedCellTopLeft = new _src.CellCoords(cellInfo.row, cellInfo.col); - var mergedCellBottomRight = new _src.CellCoords(cellInfo.row + cellInfo.rowspan - 1, cellInfo.col + cellInfo.colspan - 1); - - var mergedCellRange = new _src.CellRange(mergedCellTopLeft, mergedCellTopLeft, mergedCellBottomRight); - if (selRange.expandByRange(mergedCellRange)) { - coords.row = selRange.to.row; - coords.col = selRange.to.col; - - rangeExpanded = true; - } - } - } while (rangeExpanded); - } -}; - -/** - * Returns correct coordinates for merged start / end cells in selection for area borders - * @param corners - * @param className - */ -var beforeDrawAreaBorders = function beforeDrawAreaBorders(corners, className) { - if (className && className == 'area') { - var mergeCellsSetting = this.getSettings().mergeCells; - if (mergeCellsSetting) { - var selRange = this.getSelectedRange(); - var startRange = new _src.CellRange(selRange.from, selRange.from, selRange.from); - var stopRange = new _src.CellRange(selRange.to, selRange.to, selRange.to); - - for (var i = 0, ilen = this.mergeCells.mergedCellInfoCollection.length; i < ilen; i++) { - var cellInfo = this.mergeCells.mergedCellInfoCollection[i]; - var mergedCellTopLeft = new _src.CellCoords(cellInfo.row, cellInfo.col); - var mergedCellBottomRight = new _src.CellCoords(cellInfo.row + cellInfo.rowspan - 1, cellInfo.col + cellInfo.colspan - 1); - var mergedCellRange = new _src.CellRange(mergedCellTopLeft, mergedCellTopLeft, mergedCellBottomRight); - - if (startRange.expandByRange(mergedCellRange)) { - corners[0] = startRange.from.row; - corners[1] = startRange.from.col; - } - - if (stopRange.expandByRange(mergedCellRange)) { - corners[2] = stopRange.from.row; - corners[3] = stopRange.from.col; - } - } - } - } -}; - -var afterGetCellMeta = function afterGetCellMeta(row, col, cellProperties) { - var mergeCellsSetting = this.getSettings().mergeCells; - if (mergeCellsSetting) { - var mergeParent = this.mergeCells.mergedCellInfoCollection.getInfo(row, col); - if (mergeParent && (mergeParent.row != row || mergeParent.col != col)) { - cellProperties.copyable = false; - } - } -}; - -var afterViewportRowCalculatorOverride = function afterViewportRowCalculatorOverride(calc) { - var mergeCellsSetting = this.getSettings().mergeCells; - if (mergeCellsSetting) { - var colCount = this.countCols(); - var mergeParent; - for (var c = 0; c < colCount; c++) { - mergeParent = this.mergeCells.mergedCellInfoCollection.getInfo(calc.startRow, c); - if (mergeParent) { - if (mergeParent.row < calc.startRow) { - calc.startRow = mergeParent.row; - return afterViewportRowCalculatorOverride.call(this, calc); // recursively search upwards - } - } - mergeParent = this.mergeCells.mergedCellInfoCollection.getInfo(calc.endRow, c); - if (mergeParent) { - var mergeEnd = mergeParent.row + mergeParent.rowspan - 1; - if (mergeEnd > calc.endRow) { - calc.endRow = mergeEnd; - return afterViewportRowCalculatorOverride.call(this, calc); // recursively search upwards - } - } - } - } -}; - -var afterViewportColumnCalculatorOverride = function afterViewportColumnCalculatorOverride(calc) { - var mergeCellsSetting = this.getSettings().mergeCells; - if (mergeCellsSetting) { - var rowCount = this.countRows(); - var mergeParent; - for (var r = 0; r < rowCount; r++) { - mergeParent = this.mergeCells.mergedCellInfoCollection.getInfo(r, calc.startColumn); - - if (mergeParent) { - if (mergeParent.col < calc.startColumn) { - calc.startColumn = mergeParent.col; - return afterViewportColumnCalculatorOverride.call(this, calc); // recursively search upwards - } - } - mergeParent = this.mergeCells.mergedCellInfoCollection.getInfo(r, calc.endColumn); - if (mergeParent) { - var mergeEnd = mergeParent.col + mergeParent.colspan - 1; - if (mergeEnd > calc.endColumn) { - calc.endColumn = mergeEnd; - return afterViewportColumnCalculatorOverride.call(this, calc); // recursively search upwards - } - } - } - } -}; - -var isMultipleSelection = function isMultipleSelection(isMultiple) { - if (isMultiple && this.mergeCells) { - var mergedCells = this.mergeCells.mergedCellInfoCollection, - selectionRange = this.getSelectedRange(); - - for (var group in mergedCells) { - if (selectionRange.highlight.row == mergedCells[group].row && selectionRange.highlight.col == mergedCells[group].col && selectionRange.to.row == mergedCells[group].row + mergedCells[group].rowspan - 1 && selectionRange.to.col == mergedCells[group].col + mergedCells[group].colspan - 1) { - return false; - } - } - } - return isMultiple; -}; - -function modifyAutofillRange(select, drag) { - var mergeCellsSetting = this.getSettings().mergeCells; - - if (!mergeCellsSetting || this.selection.isMultiple()) { - return; - } - var info = this.mergeCells.mergedCellInfoCollection.getInfo(select[0], select[1]); - - if (info) { - select[0] = info.row; - select[1] = info.col; - select[2] = info.row + info.rowspan - 1; - select[3] = info.col + info.colspan - 1; - } -} - -function onAfterCreateCol(col, count) { - if (this.mergeCells) { - this.mergeCells.shiftCollection('right', col, count); - } -} - -function onAfterRemoveCol(col, count) { - if (this.mergeCells) { - this.mergeCells.shiftCollection('left', col, count); - } -} - -function onAfterCreateRow(row, count) { - if (this.mergeCells) { - this.mergeCells.shiftCollection('down', row, count); - } -} - -function onAfterRemoveRow(row, count) { - if (this.mergeCells) { - this.mergeCells.shiftCollection('up', row, count); - } -} - -var hook = _pluginHooks2.default.getSingleton(); - -hook.add('beforeInit', beforeInit); -hook.add('afterInit', afterInit); -hook.add('afterUpdateSettings', afterUpdateSettings); -hook.add('beforeKeyDown', onBeforeKeyDown); -hook.add('modifyTransformStart', modifyTransformFactory('modifyTransformStart')); -hook.add('modifyTransformEnd', modifyTransformFactory('modifyTransformEnd')); -hook.add('beforeSetRangeEnd', beforeSetRangeEnd); -hook.add('beforeDrawBorders', beforeDrawAreaBorders); -hook.add('afterIsMultipleSelection', isMultipleSelection); -hook.add('afterRenderer', afterRenderer); -hook.add('afterContextMenuDefaultOptions', addMergeActionsToContextMenu); -hook.add('afterGetCellMeta', afterGetCellMeta); -hook.add('afterViewportRowCalculatorOverride', afterViewportRowCalculatorOverride); -hook.add('afterViewportColumnCalculatorOverride', afterViewportColumnCalculatorOverride); -hook.add('modifyAutofillRange', modifyAutofillRange); -hook.add('afterCreateCol', onAfterCreateCol); -hook.add('afterRemoveCol', onAfterRemoveCol); -hook.add('afterCreateRow', onAfterCreateRow); -hook.add('afterRemoveRow', onAfterRemoveRow); - -exports.default = MergeCells; - -/***/ }), -/* 300 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _element = __webpack_require__(0); - -var _browser = __webpack_require__(26); - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _eventManager = __webpack_require__(4); - -var _eventManager2 = _interopRequireDefault(_eventManager); - -var _plugins = __webpack_require__(5); - -var _src = __webpack_require__(12); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * @private - * @plugin MultipleSelectionHandles - */ -var MultipleSelectionHandles = function (_BasePlugin) { - _inherits(MultipleSelectionHandles, _BasePlugin); - - /** - * @param {Object} hotInstance - */ - function MultipleSelectionHandles(hotInstance) { - _classCallCheck(this, MultipleSelectionHandles); - - /** - * @type {Array} - */ - var _this2 = _possibleConstructorReturn(this, (MultipleSelectionHandles.__proto__ || Object.getPrototypeOf(MultipleSelectionHandles)).call(this, hotInstance)); - - _this2.dragged = []; - /** - * Instance of EventManager. - * - * @type {EventManager} - */ - _this2.eventManager = null; - /** - * @type {null} - */ - _this2.lastSetCell = null; - return _this2; - } - - /** - * Check if the plugin is enabled in the handsontable settings. - * - * @returns {Boolean} - */ - - - _createClass(MultipleSelectionHandles, [{ - key: 'isEnabled', - value: function isEnabled() { - return (0, _browser.isMobileBrowser)(); - } - - /** - * Enable plugin for this Handsontable instance. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - if (this.enabled) { - return; - } - if (!this.eventManager) { - this.eventManager = new _eventManager2.default(this); - } - this.registerListeners(); - _get(MultipleSelectionHandles.prototype.__proto__ || Object.getPrototypeOf(MultipleSelectionHandles.prototype), 'enablePlugin', this).call(this); - } - - /** - * Bind the touch events - * @private - */ - - }, { - key: 'registerListeners', - value: function registerListeners() { - var _this = this; - - function removeFromDragged(query) { - - if (_this.dragged.length === 1) { - // clear array - _this.dragged.splice(0, _this.dragged.length); - - return true; - } - - var entryPosition = _this.dragged.indexOf(query); - - if (entryPosition == -1) { - return false; - } else if (entryPosition === 0) { - _this.dragged = _this.dragged.slice(0, 1); - } else if (entryPosition == 1) { - _this.dragged = _this.dragged.slice(-1); - } - } - - this.eventManager.addEventListener(this.hot.rootElement, 'touchstart', function (event) { - var selectedRange = void 0; - - if ((0, _element.hasClass)(event.target, 'topLeftSelectionHandle-HitArea')) { - selectedRange = _this.hot.getSelectedRange(); - - _this.dragged.push('topLeft'); - - _this.touchStartRange = { - width: selectedRange.getWidth(), - height: selectedRange.getHeight(), - direction: selectedRange.getDirection() - }; - - event.preventDefault(); - return false; - } else if ((0, _element.hasClass)(event.target, 'bottomRightSelectionHandle-HitArea')) { - selectedRange = _this.hot.getSelectedRange(); - - _this.dragged.push('bottomRight'); - - _this.touchStartRange = { - width: selectedRange.getWidth(), - height: selectedRange.getHeight(), - direction: selectedRange.getDirection() - }; - - event.preventDefault(); - return false; - } - }); - - this.eventManager.addEventListener(this.hot.rootElement, 'touchend', function (event) { - if ((0, _element.hasClass)(event.target, 'topLeftSelectionHandle-HitArea')) { - removeFromDragged.call(_this, 'topLeft'); - - _this.touchStartRange = void 0; - - event.preventDefault(); - return false; - } else if ((0, _element.hasClass)(event.target, 'bottomRightSelectionHandle-HitArea')) { - removeFromDragged.call(_this, 'bottomRight'); - - _this.touchStartRange = void 0; - - event.preventDefault(); - return false; - } - }); - - this.eventManager.addEventListener(this.hot.rootElement, 'touchmove', function (event) { - var scrollTop = (0, _element.getWindowScrollTop)(), - scrollLeft = (0, _element.getWindowScrollLeft)(), - endTarget = void 0, - targetCoords = void 0, - selectedRange = void 0, - rangeWidth = void 0, - rangeHeight = void 0, - rangeDirection = void 0, - newRangeCoords = void 0; - - if (_this.dragged.length === 0) { - return; - } - - endTarget = document.elementFromPoint(event.touches[0].screenX - scrollLeft, event.touches[0].screenY - scrollTop); - - if (!endTarget || endTarget === _this.lastSetCell) { - return; - } - - if (endTarget.nodeName == 'TD' || endTarget.nodeName == 'TH') { - targetCoords = _this.hot.getCoords(endTarget); - - if (targetCoords.col == -1) { - targetCoords.col = 0; - } - - selectedRange = _this.hot.getSelectedRange(); - rangeWidth = selectedRange.getWidth(); - rangeHeight = selectedRange.getHeight(); - rangeDirection = selectedRange.getDirection(); - - if (rangeWidth == 1 && rangeHeight == 1) { - _this.hot.selection.setRangeEnd(targetCoords); - } - - newRangeCoords = _this.getCurrentRangeCoords(selectedRange, targetCoords, _this.touchStartRange.direction, rangeDirection, _this.dragged[0]); - - if (newRangeCoords.start !== null) { - _this.hot.selection.setRangeStart(newRangeCoords.start); - } - - _this.hot.selection.setRangeEnd(newRangeCoords.end); - - _this.lastSetCell = endTarget; - } - - event.preventDefault(); - }); - } - }, { - key: 'getCurrentRangeCoords', - value: function getCurrentRangeCoords(selectedRange, currentTouch, touchStartDirection, currentDirection, draggedHandle) { - var topLeftCorner = selectedRange.getTopLeftCorner(), - bottomRightCorner = selectedRange.getBottomRightCorner(), - bottomLeftCorner = selectedRange.getBottomLeftCorner(), - topRightCorner = selectedRange.getTopRightCorner(); - - var newCoords = { - start: null, - end: null - }; - - switch (touchStartDirection) { - case 'NE-SW': - switch (currentDirection) { - case 'NE-SW': - case 'NW-SE': - if (draggedHandle == 'topLeft') { - newCoords = { - start: new _src.CellCoords(currentTouch.row, selectedRange.highlight.col), - end: new _src.CellCoords(bottomLeftCorner.row, currentTouch.col) - }; - } else { - newCoords = { - start: new _src.CellCoords(selectedRange.highlight.row, currentTouch.col), - end: new _src.CellCoords(currentTouch.row, topLeftCorner.col) - }; - } - break; - case 'SE-NW': - if (draggedHandle == 'bottomRight') { - newCoords = { - start: new _src.CellCoords(bottomRightCorner.row, currentTouch.col), - end: new _src.CellCoords(currentTouch.row, topLeftCorner.col) - }; - } - break; - default: - break; - } - break; - case 'NW-SE': - switch (currentDirection) { - case 'NE-SW': - if (draggedHandle == 'topLeft') { - newCoords = { - start: currentTouch, - end: bottomLeftCorner - }; - } else { - newCoords.end = currentTouch; - } - break; - case 'NW-SE': - if (draggedHandle == 'topLeft') { - newCoords = { - start: currentTouch, - end: bottomRightCorner - }; - } else { - newCoords.end = currentTouch; - } - break; - case 'SE-NW': - if (draggedHandle == 'topLeft') { - newCoords = { - start: currentTouch, - end: topLeftCorner - }; - } else { - newCoords.end = currentTouch; - } - break; - case 'SW-NE': - if (draggedHandle == 'topLeft') { - newCoords = { - start: currentTouch, - end: topRightCorner - }; - } else { - newCoords.end = currentTouch; - } - break; - default: - break; - } - break; - case 'SW-NE': - switch (currentDirection) { - case 'NW-SE': - if (draggedHandle == 'bottomRight') { - newCoords = { - start: new _src.CellCoords(currentTouch.row, topLeftCorner.col), - end: new _src.CellCoords(bottomLeftCorner.row, currentTouch.col) - }; - } else { - newCoords = { - start: new _src.CellCoords(topLeftCorner.row, currentTouch.col), - end: new _src.CellCoords(currentTouch.row, bottomRightCorner.col) - }; - } - break; - // case 'NE-SW': - // - // break; - case 'SW-NE': - if (draggedHandle == 'topLeft') { - newCoords = { - start: new _src.CellCoords(selectedRange.highlight.row, currentTouch.col), - end: new _src.CellCoords(currentTouch.row, bottomRightCorner.col) - }; - } else { - newCoords = { - start: new _src.CellCoords(currentTouch.row, topLeftCorner.col), - end: new _src.CellCoords(topLeftCorner.row, currentTouch.col) - }; - } - break; - case 'SE-NW': - if (draggedHandle == 'bottomRight') { - newCoords = { - start: new _src.CellCoords(currentTouch.row, topRightCorner.col), - end: new _src.CellCoords(topLeftCorner.row, currentTouch.col) - }; - } else if (draggedHandle == 'topLeft') { - newCoords = { - start: bottomLeftCorner, - end: currentTouch - }; - } - break; - default: - break; - } - break; - case 'SE-NW': - switch (currentDirection) { - case 'NW-SE': - case 'NE-SW': - case 'SW-NE': - if (draggedHandle == 'topLeft') { - newCoords.end = currentTouch; - } - break; - case 'SE-NW': - if (draggedHandle == 'topLeft') { - newCoords.end = currentTouch; - } else { - newCoords = { - start: currentTouch, - end: topLeftCorner - }; - } - break; - default: - break; - } - break; - default: - break; - } - - return newCoords; - } - - /** - * Check if user is currently dragging the handle. - * - * @returns {boolean} Dragging state - */ - - }, { - key: 'isDragged', - value: function isDragged() { - return this.dragged.length > 0; - } - }]); - - return MultipleSelectionHandles; -}(_base2.default); - -(0, _plugins.registerPlugin)('multipleSelectionHandles', MultipleSelectionHandles); - -exports.default = MultipleSelectionHandles; - -/***/ }), -/* 301 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _jsonPatchDuplex = __webpack_require__(179); - -var _jsonPatchDuplex2 = _interopRequireDefault(_jsonPatchDuplex); - -var _dataObserver = __webpack_require__(302); - -var _dataObserver2 = _interopRequireDefault(_dataObserver); - -var _array = __webpack_require__(2); - -var _plugins = __webpack_require__(5); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -// Handsontable.hooks.register('afterChangesObserved'); - -/** - * @plugin ObserveChanges - * - * @description - * This plugin allows to observe data source changes. - * - * By default, the plugin is declared as `undefined`, which makes it disabled. - * Enabling this plugin switches the table into one-way data binding where changes are applied into the data source (outside from the table) - * will be automatically reflected in the table. - * - * ```js - * ... - * // as a boolean - * observeChanges: true, - * ... - * ``` - * - * To configure this plugin see {@link Options#observeChanges}. - */ -var ObserveChanges = function (_BasePlugin) { - _inherits(ObserveChanges, _BasePlugin); - - function ObserveChanges(hotInstance) { - _classCallCheck(this, ObserveChanges); - - /** - * Instance of {@link DataObserver}. - * - * @type {DataObserver} - */ - var _this = _possibleConstructorReturn(this, (ObserveChanges.__proto__ || Object.getPrototypeOf(ObserveChanges)).call(this, hotInstance)); - - _this.observer = null; - return _this; - } - - /** - * Check if the plugin is enabled in the handsontable settings. - * - * @returns {Boolean} - */ - - - _createClass(ObserveChanges, [{ - key: 'isEnabled', - value: function isEnabled() { - return this.hot.getSettings().observeChanges; - } - - /** - * Enable plugin for this Handsontable instance. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this2 = this; - - if (this.enabled) { - return; - } - if (!this.observer) { - this.observer = new _dataObserver2.default(this.hot.getSourceData()); - this._exposePublicApi(); - } - - this.observer.addLocalHook('change', function (patches) { - return _this2.onDataChange(patches); - }); - this.addHook('afterCreateRow', function () { - return _this2.onAfterTableAlter(); - }); - this.addHook('afterRemoveRow', function () { - return _this2.onAfterTableAlter(); - }); - this.addHook('afterCreateCol', function () { - return _this2.onAfterTableAlter(); - }); - this.addHook('afterRemoveCol', function () { - return _this2.onAfterTableAlter(); - }); - this.addHook('afterChange', function (changes, source) { - return _this2.onAfterTableAlter(source); - }); - this.addHook('afterLoadData', function (firstRun) { - return _this2.onAfterLoadData(firstRun); - }); - - _get(ObserveChanges.prototype.__proto__ || Object.getPrototypeOf(ObserveChanges.prototype), 'enablePlugin', this).call(this); - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - if (this.observer) { - this.observer.destroy(); - this.observer = null; - this._deletePublicApi(); - } - - _get(ObserveChanges.prototype.__proto__ || Object.getPrototypeOf(ObserveChanges.prototype), 'disablePlugin', this).call(this); - } - - /** - * Data change observer. - * - * @private - * @param {Array} patches An array of objects which every item defines coordinates where data was changed. - */ - - }, { - key: 'onDataChange', - value: function onDataChange(patches) { - var _this3 = this; - - if (!this.observer.isPaused()) { - var sourceName = this.pluginName + '.change'; - var actions = { - add: function add(patch) { - if (isNaN(patch.col)) { - _this3.hot.runHooks('afterCreateRow', patch.row, 1, sourceName); - } else { - _this3.hot.runHooks('afterCreateCol', patch.col, 1, sourceName); - } - }, - remove: function remove(patch) { - if (isNaN(patch.col)) { - _this3.hot.runHooks('afterRemoveRow', patch.row, 1, sourceName); - } else { - _this3.hot.runHooks('afterRemoveCol', patch.col, 1, sourceName); - } - }, - replace: function replace(patch) { - _this3.hot.runHooks('afterChange', [patch.row, patch.col, null, patch.value], sourceName); - } - }; - - (0, _array.arrayEach)(patches, function (patch) { - if (actions[patch.op]) { - actions[patch.op](patch); - } - }); - this.hot.render(); - } - - this.hot.runHooks('afterChangesObserved'); - } - - /** - * On after table alter listener. Prevents infinity loop between internal and external data changing. - * - * @private - * @param source - */ - - }, { - key: 'onAfterTableAlter', - value: function onAfterTableAlter(source) { - var _this4 = this; - - if (source !== 'loadData') { - this.observer.pause(); - this.hot.addHookOnce('afterChangesObserved', function () { - return _this4.observer.resume(); - }); - } - } - - /** - * On after load data listener. - * - * @private - * @param {Boolean} firstRun `true` if event was fired first time. - */ - - }, { - key: 'onAfterLoadData', - value: function onAfterLoadData(firstRun) { - if (!firstRun) { - this.observer.setObservedData(this.hot.getSourceData()); - } - } - - /** - * Destroy plugin instance. - */ - - }, { - key: 'destroy', - value: function destroy() { - if (this.observer) { - this.observer.destroy(); - this._deletePublicApi(); - } - _get(ObserveChanges.prototype.__proto__ || Object.getPrototypeOf(ObserveChanges.prototype), 'destroy', this).call(this); - } - - /** - * Expose plugins methods to the core. - * - * @private - */ - - }, { - key: '_exposePublicApi', - value: function _exposePublicApi() { - var _this5 = this; - - var hot = this.hot; - - hot.pauseObservingChanges = function () { - return _this5.observer.pause(); - }; - hot.resumeObservingChanges = function () { - return _this5.observer.resume(); - }; - hot.isPausedObservingChanges = function () { - return _this5.observer.isPaused(); - }; - } - - /** - * Delete all previously exposed methods. - * - * @private - */ - - }, { - key: '_deletePublicApi', - value: function _deletePublicApi() { - var hot = this.hot; - - delete hot.pauseObservingChanges; - delete hot.resumeObservingChanges; - delete hot.isPausedObservingChanges; - } - }]); - - return ObserveChanges; -}(_base2.default); - -exports.default = ObserveChanges; - - -(0, _plugins.registerPlugin)('observeChanges', ObserveChanges); - -/***/ }), -/* 302 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _jsonPatchDuplex = __webpack_require__(179); - -var _jsonPatchDuplex2 = _interopRequireDefault(_jsonPatchDuplex); - -var _localHooks = __webpack_require__(87); - -var _localHooks2 = _interopRequireDefault(_localHooks); - -var _object = __webpack_require__(1); - -var _utils = __webpack_require__(303); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * @class DataObserver - * @plugin ObserveChanges - */ -var DataObserver = function () { - function DataObserver(observedData) { - _classCallCheck(this, DataObserver); - - /** - * Observed source data. - * - * @type {Array} - */ - this.observedData = null; - /** - * JsonPatch observer. - * - * @type {Object} - */ - this.observer = null; - /** - * Flag which determines if observer is paused or not. Paused observer doesn't emit `change` hooks. - * - * @type {Boolean} - * @default false - */ - this.paused = false; - - this.setObservedData(observedData); - } - - /** - * Set data to observe. - * - * @param {*} observedData - */ - - - _createClass(DataObserver, [{ - key: 'setObservedData', - value: function setObservedData(observedData) { - var _this = this; - - if (this.observer) { - _jsonPatchDuplex2.default.unobserve(this.observedData, this.observer); - } - this.observedData = observedData; - this.observer = _jsonPatchDuplex2.default.observe(this.observedData, function (patches) { - return _this.onChange(patches); - }); - } - - /** - * Check if observer was paused. - * - * @returns {Boolean} - */ - - }, { - key: 'isPaused', - value: function isPaused() { - return this.paused; - } - - /** - * Pause observer (stop emitting all detected changes). - */ - - }, { - key: 'pause', - value: function pause() { - this.paused = true; - } - - /** - * Resume observer (emit all detected changes). - */ - - }, { - key: 'resume', - value: function resume() { - this.paused = false; - } - - /** - * JsonPatch on change listener. - * - * @private - * @param {Array} patches An array of object passed from jsonpatch. - */ - - }, { - key: 'onChange', - value: function onChange(patches) { - this.runLocalHooks('change', (0, _utils.cleanPatches)(patches)); - } - - /** - * Destroy observer instance. - */ - - }, { - key: 'destroy', - value: function destroy() { - _jsonPatchDuplex2.default.unobserve(this.observedData, this.observer); - this.observedData = null; - this.observer = null; - } - }]); - - return DataObserver; -}(); - -(0, _object.mixin)(DataObserver, _localHooks2.default); - -exports.default = DataObserver; - -/***/ }), -/* 303 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -exports.cleanPatches = cleanPatches; -exports.parsePath = parsePath; - -var _array = __webpack_require__(2); - -/** - * Clean and extend patches from jsonpatch observer. - * - * @param {Array} patches - * @returns {Array} - */ -function cleanPatches(patches) { - var newOrRemovedColumns = []; - - /** - * If observeChanges uses native Object.observe method, then it produces patches for length property. Filter them. - * If path can't be parsed. Filter it. - */ - patches = (0, _array.arrayFilter)(patches, function (patch) { - if (/[/]length/ig.test(patch.path)) { - return false; - } - if (!parsePath(patch.path)) { - return false; - } - - return true; - }); - /** - * Extend patches with changed cells coords - */ - patches = (0, _array.arrayMap)(patches, function (patch) { - var coords = parsePath(patch.path); - - patch.row = coords.row; - patch.col = coords.col; - - return patch; - }); - /** - * Removing or adding column will produce one patch for each table row. - * Leaves only one patch for each column add/remove operation. - */ - patches = (0, _array.arrayFilter)(patches, function (patch) { - if (['add', 'remove'].indexOf(patch.op) !== -1 && !isNaN(patch.col)) { - if (newOrRemovedColumns.indexOf(patch.col) !== -1) { - return false; - } - newOrRemovedColumns.push(patch.col); - } - - return true; - }); - newOrRemovedColumns.length = 0; - - return patches; -} - -/** - * Extract coordinates from path where data was changed. - * - * @param {String} path Path describing where data was changed. - * @returns {Object|null} Returns an object with `row` and `col` properties or `null` if path doesn't have necessary information. - */ -function parsePath(path) { - var match = path.match(/^\/(\d+)\/?(.*)?$/); - - if (!match) { - return null; - } - - var _match = _slicedToArray(match, 3), - row = _match[1], - column = _match[2]; - - return { - row: parseInt(row, 10), - col: /^\d*$/.test(column) ? parseInt(column, 10) : column - }; -} - -/***/ }), -/* 304 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _plugins = __webpack_require__(5); - -var _object = __webpack_require__(1); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function Storage(prefix) { - var savedKeys; - - var saveSavedKeys = function saveSavedKeys() { - window.localStorage[prefix + '__persistentStateKeys'] = JSON.stringify(savedKeys); - }; - - var loadSavedKeys = function loadSavedKeys() { - var keysJSON = window.localStorage[prefix + '__persistentStateKeys']; - var keys = typeof keysJSON == 'string' ? JSON.parse(keysJSON) : void 0; - savedKeys = keys ? keys : []; - }; - - var clearSavedKeys = function clearSavedKeys() { - savedKeys = []; - saveSavedKeys(); - }; - - loadSavedKeys(); - - this.saveValue = function (key, value) { - window.localStorage[prefix + '_' + key] = JSON.stringify(value); - if (savedKeys.indexOf(key) == -1) { - savedKeys.push(key); - saveSavedKeys(); - } - }; - - this.loadValue = function (key, defaultValue) { - - key = typeof key === 'undefined' ? defaultValue : key; - - var value = window.localStorage[prefix + '_' + key]; - - return typeof value == 'undefined' ? void 0 : JSON.parse(value); - }; - - this.reset = function (key) { - window.localStorage.removeItem(prefix + '_' + key); - }; - - this.resetAll = function () { - for (var index = 0; index < savedKeys.length; index++) { - window.localStorage.removeItem(prefix + '_' + savedKeys[index]); - } - - clearSavedKeys(); - }; -} - -/** - * @private - * @class PersistentState - * @plugin PersistentState - */ -function HandsontablePersistentState() { - var plugin = this; - - this.init = function () { - var instance = this, - pluginSettings = instance.getSettings().persistentState; - - plugin.enabled = !!pluginSettings; - - if (!plugin.enabled) { - removeHooks.call(instance); - return; - } - - if (!instance.storage) { - instance.storage = new Storage(instance.rootElement.id); - } - - instance.resetState = plugin.resetValue; - - addHooks.call(instance); - }; - - this.saveValue = function (key, value) { - var instance = this; - - instance.storage.saveValue(key, value); - }; - - this.loadValue = function (key, saveTo) { - var instance = this; - - saveTo.value = instance.storage.loadValue(key); - }; - - this.resetValue = function (key) { - var instance = this; - - if (typeof key === 'undefined') { - instance.storage.resetAll(); - } else { - instance.storage.reset(key); - } - }; - - var hooks = { - persistentStateSave: plugin.saveValue, - persistentStateLoad: plugin.loadValue, - persistentStateReset: plugin.resetValue - }; - - for (var hookName in hooks) { - if ((0, _object.hasOwnProperty)(hooks, hookName)) { - _pluginHooks2.default.getSingleton().register(hookName); - } - } - - function addHooks() { - var instance = this; - - for (var hookName in hooks) { - if ((0, _object.hasOwnProperty)(hooks, hookName)) { - instance.addHook(hookName, hooks[hookName]); - } - } - } - - function removeHooks() { - var instance = this; - - for (var hookName in hooks) { - if ((0, _object.hasOwnProperty)(hooks, hookName)) { - instance.removeHook(hookName, hooks[hookName]); - } - } - } -} - -var htPersistentState = new HandsontablePersistentState(); - -_pluginHooks2.default.getSingleton().add('beforeInit', htPersistentState.init); -_pluginHooks2.default.getSingleton().add('afterUpdateSettings', htPersistentState.init); - -exports.default = HandsontablePersistentState; - -/***/ }), -/* 305 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _element = __webpack_require__(0); - -var _renderers = __webpack_require__(9); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * @private - * @plugin Search - */ -function Search(instance) { - this.query = function (queryStr, callback, queryMethod) { - var rowCount = instance.countRows(); - var colCount = instance.countCols(); - var queryResult = []; - - if (!callback) { - callback = Search.global.getDefaultCallback(); - } - - if (!queryMethod) { - queryMethod = Search.global.getDefaultQueryMethod(); - } - - for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) { - for (var colIndex = 0; colIndex < colCount; colIndex++) { - var cellData = instance.getDataAtCell(rowIndex, colIndex); - var cellProperties = instance.getCellMeta(rowIndex, colIndex); - var cellCallback = cellProperties.search.callback || callback; - var cellQueryMethod = cellProperties.search.queryMethod || queryMethod; - var testResult = cellQueryMethod(queryStr, cellData); - - if (testResult) { - var singleResult = { - row: rowIndex, - col: colIndex, - data: cellData - }; - - queryResult.push(singleResult); - } - - if (cellCallback) { - cellCallback(instance, rowIndex, colIndex, cellData, testResult); - } - } - } - - return queryResult; - }; -}; - -Search.DEFAULT_CALLBACK = function (instance, row, col, data, testResult) { - instance.getCellMeta(row, col).isSearchResult = testResult; -}; - -Search.DEFAULT_QUERY_METHOD = function (query, value) { - if (typeof query == 'undefined' || query == null || !query.toLowerCase || query.length === 0) { - return false; - } - if (typeof value == 'undefined' || value == null) { - return false; - } - - return value.toString().toLowerCase().indexOf(query.toLowerCase()) != -1; -}; - -Search.DEFAULT_SEARCH_RESULT_CLASS = 'htSearchResult'; - -Search.global = function () { - - var defaultCallback = Search.DEFAULT_CALLBACK; - var defaultQueryMethod = Search.DEFAULT_QUERY_METHOD; - var defaultSearchResultClass = Search.DEFAULT_SEARCH_RESULT_CLASS; - - return { - getDefaultCallback: function getDefaultCallback() { - return defaultCallback; - }, - setDefaultCallback: function setDefaultCallback(newDefaultCallback) { - defaultCallback = newDefaultCallback; - }, - getDefaultQueryMethod: function getDefaultQueryMethod() { - return defaultQueryMethod; - }, - setDefaultQueryMethod: function setDefaultQueryMethod(newDefaultQueryMethod) { - defaultQueryMethod = newDefaultQueryMethod; - }, - getDefaultSearchResultClass: function getDefaultSearchResultClass() { - return defaultSearchResultClass; - }, - setDefaultSearchResultClass: function setDefaultSearchResultClass(newSearchResultClass) { - defaultSearchResultClass = newSearchResultClass; - } - }; -}(); - -function SearchCellDecorator(instance, TD, row, col, prop, value, cellProperties) { - var searchResultClass = cellProperties.search !== null && _typeof(cellProperties.search) == 'object' && cellProperties.search.searchResultClass || Search.global.getDefaultSearchResultClass(); - - if (cellProperties.isSearchResult) { - (0, _element.addClass)(TD, searchResultClass); - } else { - (0, _element.removeClass)(TD, searchResultClass); - } -}; - -var originalBaseRenderer = (0, _renderers.getRenderer)('base'); - -(0, _renderers.registerRenderer)('base', function (instance, TD, row, col, prop, value, cellProperties) { - originalBaseRenderer.apply(this, arguments); - SearchCellDecorator.apply(this, arguments); -}); - -function init() { - var instance = this; - - var pluginEnabled = !!instance.getSettings().search; - - if (pluginEnabled) { - instance.search = new Search(instance); - } else { - delete instance.search; - } -} - -_pluginHooks2.default.getSingleton().add('afterInit', init); -_pluginHooks2.default.getSingleton().add('afterUpdateSettings', init); - -exports.default = Search; - -/***/ }), -/* 306 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _element = __webpack_require__(0); - -var _array = __webpack_require__(2); - -var _base = __webpack_require__(13); - -var _base2 = _interopRequireDefault(_base); - -var _plugins = __webpack_require__(5); - -var _feature = __webpack_require__(34); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * @private - * @plugin TouchScroll - * @class TouchScroll - */ -var TouchScroll = function (_BasePlugin) { - _inherits(TouchScroll, _BasePlugin); - - function TouchScroll(hotInstance) { - _classCallCheck(this, TouchScroll); - - /** - * Collection of scrollbars to update. - * - * @type {Array} - */ - var _this = _possibleConstructorReturn(this, (TouchScroll.__proto__ || Object.getPrototypeOf(TouchScroll)).call(this, hotInstance)); - - _this.scrollbars = []; - /** - * Collection of overlays to update. - * - * @type {Array} - */ - _this.clones = []; - /** - * Flag which determines if collection of overlays should be refilled on every table render. - * - * @type {Boolean} - * @default false - */ - _this.lockedCollection = false; - /** - * Flag which determines if walkontable should freeze overlays while scrolling. - * - * @type {Boolean} - * @default false - */ - _this.freezeOverlays = false; - return _this; - } - - /** - * Check if plugin is enabled. - * - * @returns {Boolean} - */ - - - _createClass(TouchScroll, [{ - key: 'isEnabled', - value: function isEnabled() { - return (0, _feature.isTouchSupported)(); - } - - /** - * Enable the plugin. - */ - - }, { - key: 'enablePlugin', - value: function enablePlugin() { - var _this2 = this; - - if (this.enabled) { - return; - } - - this.addHook('afterRender', function () { - return _this2.onAfterRender(); - }); - this.registerEvents(); - - _get(TouchScroll.prototype.__proto__ || Object.getPrototypeOf(TouchScroll.prototype), 'enablePlugin', this).call(this); - } - - /** - * Updates the plugin to use the latest options you have specified. - */ - - }, { - key: 'updatePlugin', - value: function updatePlugin() { - this.lockedCollection = false; - - _get(TouchScroll.prototype.__proto__ || Object.getPrototypeOf(TouchScroll.prototype), 'updatePlugin', this).call(this); - } - - /** - * Disable plugin for this Handsontable instance. - */ - - }, { - key: 'disablePlugin', - value: function disablePlugin() { - _get(TouchScroll.prototype.__proto__ || Object.getPrototypeOf(TouchScroll.prototype), 'disablePlugin', this).call(this); - } - - /** - * Register all necessary events. - * - * @private - */ - - }, { - key: 'registerEvents', - value: function registerEvents() { - var _this3 = this; - - this.addHook('beforeTouchScroll', function () { - return _this3.onBeforeTouchScroll(); - }); - this.addHook('afterMomentumScroll', function () { - return _this3.onAfterMomentumScroll(); - }); - } - - /** - * After render listener. - * - * @private - */ - - }, { - key: 'onAfterRender', - value: function onAfterRender() { - if (this.lockedCollection) { - return; - } - - var _hot$view$wt$wtOverla = this.hot.view.wt.wtOverlays, - topOverlay = _hot$view$wt$wtOverla.topOverlay, - bottomOverlay = _hot$view$wt$wtOverla.bottomOverlay, - leftOverlay = _hot$view$wt$wtOverla.leftOverlay, - topLeftCornerOverlay = _hot$view$wt$wtOverla.topLeftCornerOverlay, - bottomLeftCornerOverlay = _hot$view$wt$wtOverla.bottomLeftCornerOverlay; - - - this.lockedCollection = true; - this.scrollbars.length = 0; - this.scrollbars.push(topOverlay); - - if (bottomOverlay.clone) { - this.scrollbars.push(bottomOverlay); - } - this.scrollbars.push(leftOverlay); - - if (topLeftCornerOverlay) { - this.scrollbars.push(topLeftCornerOverlay); - } - if (bottomLeftCornerOverlay && bottomLeftCornerOverlay.clone) { - this.scrollbars.push(bottomLeftCornerOverlay); - } - - this.clones.length = 0; - - if (topOverlay.needFullRender) { - this.clones.push(topOverlay.clone.wtTable.holder.parentNode); - } - if (bottomOverlay.needFullRender) { - this.clones.push(bottomOverlay.clone.wtTable.holder.parentNode); - } - if (leftOverlay.needFullRender) { - this.clones.push(leftOverlay.clone.wtTable.holder.parentNode); - } - if (topLeftCornerOverlay) { - this.clones.push(topLeftCornerOverlay.clone.wtTable.holder.parentNode); - } - if (bottomLeftCornerOverlay && bottomLeftCornerOverlay.clone) { - this.clones.push(bottomLeftCornerOverlay.clone.wtTable.holder.parentNode); - } - } - - /** - * Touch scroll listener. - * - * @private - */ - - }, { - key: 'onBeforeTouchScroll', - value: function onBeforeTouchScroll() { - this.freezeOverlays = true; - - (0, _array.arrayEach)(this.clones, function (clone) { - (0, _element.addClass)(clone, 'hide-tween'); - }); - } - - /** - * After momentum scroll listener. - * - * @private - */ - - }, { - key: 'onAfterMomentumScroll', - value: function onAfterMomentumScroll() { - var _this4 = this; - - this.freezeOverlays = false; - - (0, _array.arrayEach)(this.clones, function (clone) { - (0, _element.removeClass)(clone, 'hide-tween'); - (0, _element.addClass)(clone, 'show-tween'); - }); - - setTimeout(function () { - (0, _array.arrayEach)(_this4.clones, function (clone) { - (0, _element.removeClass)(clone, 'show-tween'); - }); - }, 400); - - (0, _array.arrayEach)(this.scrollbars, function (scrollbar) { - scrollbar.refresh(); - scrollbar.resetFixedPosition(); - }); - - this.hot.view.wt.wtOverlays.syncScrollWithMaster(); - } - }]); - - return TouchScroll; -}(_base2.default); - -(0, _plugins.registerPlugin)('touchScroll', TouchScroll); - -exports.default = TouchScroll; - -/***/ }), -/* 307 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _pluginHooks = __webpack_require__(7); - -var _pluginHooks2 = _interopRequireDefault(_pluginHooks); - -var _array = __webpack_require__(2); - -var _number = __webpack_require__(6); - -var _object = __webpack_require__(1); - -var _event = __webpack_require__(8); - -var _src = __webpack_require__(12); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * @description - * Handsontable UndoRedo plugin. It allows to undo and redo certain actions done in the table. - * Please note, that not all actions are currently undo-able. - * - * @example - * ```js - * ... - * undo: true - * ... - * ``` - * @class UndoRedo - * @plugin UndoRedo - */ -/** - * Handsontable UndoRedo class - */ -function UndoRedo(instance) { - var plugin = this; - this.instance = instance; - this.doneActions = []; - this.undoneActions = []; - this.ignoreNewActions = false; - - instance.addHook('afterChange', function (changes, source) { - if (changes && source !== 'UndoRedo.undo' && source !== 'UndoRedo.redo') { - plugin.done(new UndoRedo.ChangeAction(changes)); - } - }); - - instance.addHook('afterCreateRow', function (index, amount, source) { - if (source === 'UndoRedo.undo' || source === 'UndoRedo.undo' || source === 'auto') { - return; - } - - var action = new UndoRedo.CreateRowAction(index, amount); - plugin.done(action); - }); - - instance.addHook('beforeRemoveRow', function (index, amount, logicRows, source) { - if (source === 'UndoRedo.undo' || source === 'UndoRedo.redo' || source === 'auto') { - return; - } - - var originalData = plugin.instance.getSourceDataArray(); - - index = (originalData.length + index) % originalData.length; - - var removedData = (0, _object.deepClone)(originalData.slice(index, index + amount)); - - plugin.done(new UndoRedo.RemoveRowAction(index, removedData)); - }); - - instance.addHook('afterCreateCol', function (index, amount, source) { - if (source === 'UndoRedo.undo' || source === 'UndoRedo.redo' || source === 'auto') { - return; - } - - plugin.done(new UndoRedo.CreateColumnAction(index, amount)); - }); - - instance.addHook('beforeRemoveCol', function (index, amount, logicColumns, source) { - if (source === 'UndoRedo.undo' || source === 'UndoRedo.redo' || source === 'auto') { - return; - } - - var originalData = plugin.instance.getSourceDataArray(); - - index = (plugin.instance.countCols() + index) % plugin.instance.countCols(); - - var removedData = []; - var headers = []; - var indexes = []; - - (0, _number.rangeEach)(originalData.length - 1, function (i) { - var column = []; - var origRow = originalData[i]; - - (0, _number.rangeEach)(index, index + (amount - 1), function (j) { - column.push(origRow[instance.runHooks('modifyCol', j)]); - }); - removedData.push(column); - }); - - (0, _number.rangeEach)(amount - 1, function (i) { - indexes.push(instance.runHooks('modifyCol', index + i)); - }); - - if (Array.isArray(instance.getSettings().colHeaders)) { - (0, _number.rangeEach)(amount - 1, function (i) { - headers.push(instance.getSettings().colHeaders[instance.runHooks('modifyCol', index + i)] || null); - }); - } - - var manualColumnMovePlugin = plugin.instance.getPlugin('manualColumnMove'); - - var columnsMap = manualColumnMovePlugin.isEnabled() ? manualColumnMovePlugin.columnsMapper.__arrayMap : []; - var action = new UndoRedo.RemoveColumnAction(index, indexes, removedData, headers, columnsMap); - - plugin.done(action); - }); - - instance.addHook('beforeCellAlignment', function (stateBefore, range, type, alignment) { - var action = new UndoRedo.CellAlignmentAction(stateBefore, range, type, alignment); - plugin.done(action); - }); - - instance.addHook('beforeFilter', function (conditionsStack) { - plugin.done(new UndoRedo.FiltersAction(conditionsStack)); - }); - - instance.addHook('beforeRowMove', function (movedRows, target) { - if (movedRows === false) { - return; - } - - plugin.done(new UndoRedo.RowMoveAction(movedRows, target)); - }); -}; - -UndoRedo.prototype.done = function (action) { - if (!this.ignoreNewActions) { - this.doneActions.push(action); - this.undoneActions.length = 0; - } -}; - -/** - * Undo last edit. - * - * @function undo - * @memberof UndoRedo# - */ -UndoRedo.prototype.undo = function () { - if (this.isUndoAvailable()) { - var action = this.doneActions.pop(); - var actionClone = (0, _object.deepClone)(action); - var instance = this.instance; - - var continueAction = instance.runHooks('beforeUndo', actionClone); - - if (continueAction === false) { - return; - } - - this.ignoreNewActions = true; - var that = this; - action.undo(this.instance, function () { - that.ignoreNewActions = false; - that.undoneActions.push(action); - }); - - instance.runHooks('afterUndo', actionClone); - } -}; - -/** - * Redo edit (used to reverse an undo). - * - * @function redo - * @memberof UndoRedo# - */ -UndoRedo.prototype.redo = function () { - if (this.isRedoAvailable()) { - var action = this.undoneActions.pop(); - var actionClone = (0, _object.deepClone)(action); - var instance = this.instance; - - var continueAction = instance.runHooks('beforeRedo', actionClone); - - if (continueAction === false) { - return; - } - - this.ignoreNewActions = true; - var that = this; - action.redo(this.instance, function () { - that.ignoreNewActions = false; - that.doneActions.push(action); - }); - - instance.runHooks('afterRedo', actionClone); - } -}; - -/** - * Check if undo action is available. - * - * @function isUndoAvailable - * @memberof UndoRedo# - * @return {Boolean} Return `true` if undo can be performed, `false` otherwise - */ -UndoRedo.prototype.isUndoAvailable = function () { - return this.doneActions.length > 0; -}; - -/** - * Check if redo action is available. - * - * @function isRedoAvailable - * @memberof UndoRedo# - * @return {Boolean} Return `true` if redo can be performed, `false` otherwise. - */ -UndoRedo.prototype.isRedoAvailable = function () { - return this.undoneActions.length > 0; -}; - -/** - * Clears undo history. - * - * @function clear - * @memberof UndoRedo# - */ -UndoRedo.prototype.clear = function () { - this.doneActions.length = 0; - this.undoneActions.length = 0; -}; - -UndoRedo.Action = function () {}; -UndoRedo.Action.prototype.undo = function () {}; -UndoRedo.Action.prototype.redo = function () {}; - -/** - * Change action. - */ -UndoRedo.ChangeAction = function (changes) { - this.changes = changes; - this.actionType = 'change'; -}; -(0, _object.inherit)(UndoRedo.ChangeAction, UndoRedo.Action); - -UndoRedo.ChangeAction.prototype.undo = function (instance, undoneCallback) { - var data = (0, _object.deepClone)(this.changes), - emptyRowsAtTheEnd = instance.countEmptyRows(true), - emptyColsAtTheEnd = instance.countEmptyCols(true); - - for (var i = 0, len = data.length; i < len; i++) { - data[i].splice(3, 1); - } - - instance.addHookOnce('afterChange', undoneCallback); - - instance.setDataAtRowProp(data, null, null, 'UndoRedo.undo'); - - for (var _i = 0, _len = data.length; _i < _len; _i++) { - if (instance.getSettings().minSpareRows && data[_i][0] + 1 + instance.getSettings().minSpareRows === instance.countRows() && emptyRowsAtTheEnd == instance.getSettings().minSpareRows) { - - instance.alter('remove_row', parseInt(data[_i][0] + 1, 10), instance.getSettings().minSpareRows); - instance.undoRedo.doneActions.pop(); - } - - if (instance.getSettings().minSpareCols && data[_i][1] + 1 + instance.getSettings().minSpareCols === instance.countCols() && emptyColsAtTheEnd == instance.getSettings().minSpareCols) { - - instance.alter('remove_col', parseInt(data[_i][1] + 1, 10), instance.getSettings().minSpareCols); - instance.undoRedo.doneActions.pop(); - } - } -}; -UndoRedo.ChangeAction.prototype.redo = function (instance, onFinishCallback) { - var data = (0, _object.deepClone)(this.changes); - - for (var i = 0, len = data.length; i < len; i++) { - data[i].splice(2, 1); - } - - instance.addHookOnce('afterChange', onFinishCallback); - instance.setDataAtRowProp(data, null, null, 'UndoRedo.redo'); -}; - -/** - * Create row action. - */ -UndoRedo.CreateRowAction = function (index, amount) { - this.index = index; - this.amount = amount; - this.actionType = 'insert_row'; -}; -(0, _object.inherit)(UndoRedo.CreateRowAction, UndoRedo.Action); - -UndoRedo.CreateRowAction.prototype.undo = function (instance, undoneCallback) { - var rowCount = instance.countRows(), - minSpareRows = instance.getSettings().minSpareRows; - - if (this.index >= rowCount && this.index - minSpareRows < rowCount) { - this.index -= minSpareRows; // work around the situation where the needed row was removed due to an 'undo' of a made change - } - - instance.addHookOnce('afterRemoveRow', undoneCallback); - instance.alter('remove_row', this.index, this.amount, 'UndoRedo.undo'); -}; -UndoRedo.CreateRowAction.prototype.redo = function (instance, redoneCallback) { - instance.addHookOnce('afterCreateRow', redoneCallback); - instance.alter('insert_row', this.index, this.amount, 'UndoRedo.redo'); -}; - -/** - * Remove row action. - */ -UndoRedo.RemoveRowAction = function (index, data) { - this.index = index; - this.data = data; - this.actionType = 'remove_row'; -}; -(0, _object.inherit)(UndoRedo.RemoveRowAction, UndoRedo.Action); - -UndoRedo.RemoveRowAction.prototype.undo = function (instance, undoneCallback) { - instance.alter('insert_row', this.index, this.data.length, 'UndoRedo.undo'); - instance.addHookOnce('afterRender', undoneCallback); - instance.populateFromArray(this.index, 0, this.data, void 0, void 0, 'UndoRedo.undo'); -}; -UndoRedo.RemoveRowAction.prototype.redo = function (instance, redoneCallback) { - instance.addHookOnce('afterRemoveRow', redoneCallback); - instance.alter('remove_row', this.index, this.data.length, 'UndoRedo.redo'); -}; - -/** - * Create column action. - */ -UndoRedo.CreateColumnAction = function (index, amount) { - this.index = index; - this.amount = amount; - this.actionType = 'insert_col'; -}; -(0, _object.inherit)(UndoRedo.CreateColumnAction, UndoRedo.Action); - -UndoRedo.CreateColumnAction.prototype.undo = function (instance, undoneCallback) { - instance.addHookOnce('afterRemoveCol', undoneCallback); - instance.alter('remove_col', this.index, this.amount, 'UndoRedo.undo'); -}; -UndoRedo.CreateColumnAction.prototype.redo = function (instance, redoneCallback) { - instance.addHookOnce('afterCreateCol', redoneCallback); - instance.alter('insert_col', this.index, this.amount, 'UndoRedo.redo'); -}; - -/** - * Remove column action. - */ -UndoRedo.RemoveColumnAction = function (index, indexes, data, headers, columnPositions) { - this.index = index; - this.indexes = indexes; - this.data = data; - this.amount = this.data[0].length; - this.headers = headers; - this.columnPositions = columnPositions.slice(0); - this.actionType = 'remove_col'; -}; -(0, _object.inherit)(UndoRedo.RemoveColumnAction, UndoRedo.Action); - -UndoRedo.RemoveColumnAction.prototype.undo = function (instance, undoneCallback) { - var _this = this; - - var row = void 0; - var ascendingIndexes = this.indexes.slice(0).sort(); - var sortByIndexes = function sortByIndexes(elem, j, arr) { - return arr[_this.indexes.indexOf(ascendingIndexes[j])]; - }; - - var sortedData = []; - (0, _number.rangeEach)(this.data.length - 1, function (i) { - sortedData[i] = (0, _array.arrayMap)(_this.data[i], sortByIndexes); - }); - - var sortedHeaders = []; - sortedHeaders = (0, _array.arrayMap)(this.headers, sortByIndexes); - - var changes = []; - - // TODO: Temporary hook for undo/redo mess - instance.runHooks('beforeCreateCol', this.indexes[0], this.indexes[this.indexes.length - 1], 'UndoRedo.undo'); - - (0, _number.rangeEach)(this.data.length - 1, function (i) { - row = instance.getSourceDataAtRow(i); - - (0, _number.rangeEach)(ascendingIndexes.length - 1, function (j) { - row.splice(ascendingIndexes[j], 0, sortedData[i][j]); - changes.push([i, ascendingIndexes[j], null, sortedData[i][j]]); - }); - }); - - // TODO: Temporary hook for undo/redo mess - if (instance.getPlugin('formulas')) { - instance.getPlugin('formulas').onAfterSetDataAtCell(changes); - } - - if (typeof this.headers !== 'undefined') { - (0, _number.rangeEach)(sortedHeaders.length - 1, function (j) { - instance.getSettings().colHeaders.splice(ascendingIndexes[j], 0, sortedHeaders[j]); - }); - } - - if (instance.getPlugin('manualColumnMove')) { - instance.getPlugin('manualColumnMove').columnsMapper.__arrayMap = this.columnPositions; - } - - instance.addHookOnce('afterRender', undoneCallback); - - // TODO: Temporary hook for undo/redo mess - instance.runHooks('afterCreateCol', this.indexes[0], this.indexes[this.indexes.length - 1], 'UndoRedo.undo'); - - if (instance.getPlugin('formulas')) { - instance.getPlugin('formulas').recalculateFull(); - } - - instance.render(); -}; - -UndoRedo.RemoveColumnAction.prototype.redo = function (instance, redoneCallback) { - instance.addHookOnce('afterRemoveCol', redoneCallback); - instance.alter('remove_col', this.index, this.amount, 'UndoRedo.redo'); -}; - -/** - * Cell alignment action. - */ -UndoRedo.CellAlignmentAction = function (stateBefore, range, type, alignment) { - this.stateBefore = stateBefore; - this.range = range; - this.type = type; - this.alignment = alignment; -}; -UndoRedo.CellAlignmentAction.prototype.undo = function (instance, undoneCallback) { - if (!instance.getPlugin('contextMenu').isEnabled()) { - return; - } - for (var row = this.range.from.row; row <= this.range.to.row; row++) { - for (var col = this.range.from.col; col <= this.range.to.col; col++) { - instance.setCellMeta(row, col, 'className', this.stateBefore[row][col] || ' htLeft'); - } - } - - instance.addHookOnce('afterRender', undoneCallback); - instance.render(); -}; -UndoRedo.CellAlignmentAction.prototype.redo = function (instance, undoneCallback) { - if (!instance.getPlugin('contextMenu').isEnabled()) { - return; - } - instance.selectCell(this.range.from.row, this.range.from.col, this.range.to.row, this.range.to.col); - instance.getPlugin('contextMenu').executeCommand('alignment:' + this.alignment.replace('ht', '').toLowerCase()); - - instance.addHookOnce('afterRender', undoneCallback); - instance.render(); -}; - -/** - * Filters action. - */ -UndoRedo.FiltersAction = function (conditionsStack) { - this.conditionsStack = conditionsStack; - this.actionType = 'filter'; -}; -(0, _object.inherit)(UndoRedo.FiltersAction, UndoRedo.Action); - -UndoRedo.FiltersAction.prototype.undo = function (instance, undoneCallback) { - var filters = instance.getPlugin('filters'); - - instance.addHookOnce('afterRender', undoneCallback); - - filters.conditionCollection.importAllConditions(this.conditionsStack.slice(0, this.conditionsStack.length - 1)); - filters.filter(); -}; -UndoRedo.FiltersAction.prototype.redo = function (instance, redoneCallback) { - var filters = instance.getPlugin('filters'); - - instance.addHookOnce('afterRender', redoneCallback); - - filters.conditionCollection.importAllConditions(this.conditionsStack); - filters.filter(); -}; - -/** - * ManualRowMove action. - * @TODO: removeRow undo should works on logical index - */ -UndoRedo.RowMoveAction = function (movedRows, target) { - this.rows = movedRows.slice(); - this.target = target; -}; -(0, _object.inherit)(UndoRedo.RowMoveAction, UndoRedo.Action); - -UndoRedo.RowMoveAction.prototype.undo = function (instance, undoneCallback) { - var manualRowMove = instance.getPlugin('manualRowMove'); - - instance.addHookOnce('afterRender', undoneCallback); - var mod = this.rows[0] < this.target ? -1 * this.rows.length : 0; - var newTarget = this.rows[0] > this.target ? this.rows[0] + this.rows.length : this.rows[0]; - var newRows = []; - var rowsLen = this.rows.length + mod; - - for (var i = mod; i < rowsLen; i++) { - newRows.push(this.target + i); - } - manualRowMove.moveRows(newRows.slice(), newTarget); - instance.render(); - - instance.selection.setRangeStartOnly(new _src.CellCoords(this.rows[0], 0)); - instance.selection.setRangeEnd(new _src.CellCoords(this.rows[this.rows.length - 1], instance.countCols() - 1)); -}; -UndoRedo.RowMoveAction.prototype.redo = function (instance, redoneCallback) { - var manualRowMove = instance.getPlugin('manualRowMove'); - - instance.addHookOnce('afterRender', redoneCallback); - manualRowMove.moveRows(this.rows.slice(), this.target); - instance.render(); - var startSelection = this.rows[0] < this.target ? this.target - this.rows.length : this.target; - instance.selection.setRangeStartOnly(new _src.CellCoords(startSelection, 0)); - instance.selection.setRangeEnd(new _src.CellCoords(startSelection + this.rows.length - 1, instance.countCols() - 1)); -}; - -function init() { - var instance = this; - var pluginEnabled = typeof instance.getSettings().undo == 'undefined' || instance.getSettings().undo; - - if (pluginEnabled) { - if (!instance.undoRedo) { - /** - * Instance of Handsontable.UndoRedo Plugin {@link Handsontable.UndoRedo} - * - * @alias undoRedo - * @memberof! Handsontable.Core# - * @type {UndoRedo} - */ - instance.undoRedo = new UndoRedo(instance); - - exposeUndoRedoMethods(instance); - - instance.addHook('beforeKeyDown', onBeforeKeyDown); - instance.addHook('afterChange', onAfterChange); - } - } else if (instance.undoRedo) { - delete instance.undoRedo; - - removeExposedUndoRedoMethods(instance); - - instance.removeHook('beforeKeyDown', onBeforeKeyDown); - instance.removeHook('afterChange', onAfterChange); - } -} - -function onBeforeKeyDown(event) { - var instance = this; - - var ctrlDown = (event.ctrlKey || event.metaKey) && !event.altKey; - - if (ctrlDown) { - if (event.keyCode === 89 || event.shiftKey && event.keyCode === 90) { - // CTRL + Y or CTRL + SHIFT + Z - instance.undoRedo.redo(); - (0, _event.stopImmediatePropagation)(event); - } else if (event.keyCode === 90) { - // CTRL + Z - instance.undoRedo.undo(); - (0, _event.stopImmediatePropagation)(event); - } - } -} - -function onAfterChange(changes, source) { - var instance = this; - if (source === 'loadData') { - return instance.undoRedo.clear(); - } -} - -function exposeUndoRedoMethods(instance) { - /** - * {@link UndoRedo#undo} - * @alias undo - * @memberof! Handsontable.Core# - */ - instance.undo = function () { - return instance.undoRedo.undo(); - }; - - /** - * {@link UndoRedo#redo} - * @alias redo - * @memberof! Handsontable.Core# - */ - instance.redo = function () { - return instance.undoRedo.redo(); - }; - - /** - * {@link UndoRedo#isUndoAvailable} - * @alias isUndoAvailable - * @memberof! Handsontable.Core# - */ - instance.isUndoAvailable = function () { - return instance.undoRedo.isUndoAvailable(); - }; - - /** - * {@link UndoRedo#isRedoAvailable} - * @alias isRedoAvailable - * @memberof! Handsontable.Core# - */ - instance.isRedoAvailable = function () { - return instance.undoRedo.isRedoAvailable(); - }; - - /** - * {@link UndoRedo#clear} - * @alias clearUndo - * @memberof! Handsontable.Core# - */ - instance.clearUndo = function () { - return instance.undoRedo.clear(); - }; -} - -function removeExposedUndoRedoMethods(instance) { - delete instance.undo; - delete instance.redo; - delete instance.isUndoAvailable; - delete instance.isRedoAvailable; - delete instance.clearUndo; -} - -var hook = _pluginHooks2.default.getSingleton(); - -hook.add('afterInit', init); -hook.add('afterUpdateSettings', init); - -hook.register('beforeUndo'); -hook.register('afterUndo'); -hook.register('beforeRedo'); -hook.register('afterRedo'); - -/***/ }) -/******/ ])["default"]; -}); -//# sourceMappingURL=handsontable.js.map - -/***/ }), -/* 124 */ -/***/ (function(module, exports, __webpack_require__) { - -var map = { - "./af": 4, - "./af.js": 4, - "./ar": 11, - "./ar-dz": 5, - "./ar-dz.js": 5, - "./ar-kw": 6, - "./ar-kw.js": 6, - "./ar-ly": 7, - "./ar-ly.js": 7, - "./ar-ma": 8, - "./ar-ma.js": 8, - "./ar-sa": 9, - "./ar-sa.js": 9, - "./ar-tn": 10, - "./ar-tn.js": 10, - "./ar.js": 11, - "./az": 12, - "./az.js": 12, - "./be": 13, - "./be.js": 13, - "./bg": 14, - "./bg.js": 14, - "./bn": 15, - "./bn.js": 15, - "./bo": 16, - "./bo.js": 16, - "./br": 17, - "./br.js": 17, - "./bs": 18, - "./bs.js": 18, - "./ca": 19, - "./ca.js": 19, - "./cs": 20, - "./cs.js": 20, - "./cv": 21, - "./cv.js": 21, - "./cy": 22, - "./cy.js": 22, - "./da": 23, - "./da.js": 23, - "./de": 26, - "./de-at": 24, - "./de-at.js": 24, - "./de-ch": 25, - "./de-ch.js": 25, - "./de.js": 26, - "./dv": 27, - "./dv.js": 27, - "./el": 28, - "./el.js": 28, - "./en-au": 29, - "./en-au.js": 29, - "./en-ca": 30, - "./en-ca.js": 30, - "./en-gb": 31, - "./en-gb.js": 31, - "./en-ie": 32, - "./en-ie.js": 32, - "./en-nz": 33, - "./en-nz.js": 33, - "./eo": 34, - "./eo.js": 34, - "./es": 36, - "./es-do": 35, - "./es-do.js": 35, - "./es.js": 36, - "./et": 37, - "./et.js": 37, - "./eu": 38, - "./eu.js": 38, - "./fa": 39, - "./fa.js": 39, - "./fi": 40, - "./fi.js": 40, - "./fo": 41, - "./fo.js": 41, - "./fr": 44, - "./fr-ca": 42, - "./fr-ca.js": 42, - "./fr-ch": 43, - "./fr-ch.js": 43, - "./fr.js": 44, - "./fy": 45, - "./fy.js": 45, - "./gd": 46, - "./gd.js": 46, - "./gl": 47, - "./gl.js": 47, - "./gom-latn": 48, - "./gom-latn.js": 48, - "./he": 49, - "./he.js": 49, - "./hi": 50, - "./hi.js": 50, - "./hr": 51, - "./hr.js": 51, - "./hu": 52, - "./hu.js": 52, - "./hy-am": 53, - "./hy-am.js": 53, - "./id": 54, - "./id.js": 54, - "./is": 55, - "./is.js": 55, - "./it": 56, - "./it.js": 56, - "./ja": 57, - "./ja.js": 57, - "./jv": 58, - "./jv.js": 58, - "./ka": 59, - "./ka.js": 59, - "./kk": 60, - "./kk.js": 60, - "./km": 61, - "./km.js": 61, - "./kn": 62, - "./kn.js": 62, - "./ko": 63, - "./ko.js": 63, - "./ky": 64, - "./ky.js": 64, - "./lb": 65, - "./lb.js": 65, - "./lo": 66, - "./lo.js": 66, - "./lt": 67, - "./lt.js": 67, - "./lv": 68, - "./lv.js": 68, - "./me": 69, - "./me.js": 69, - "./mi": 70, - "./mi.js": 70, - "./mk": 71, - "./mk.js": 71, - "./ml": 72, - "./ml.js": 72, - "./mr": 73, - "./mr.js": 73, - "./ms": 75, - "./ms-my": 74, - "./ms-my.js": 74, - "./ms.js": 75, - "./my": 76, - "./my.js": 76, - "./nb": 77, - "./nb.js": 77, - "./ne": 78, - "./ne.js": 78, - "./nl": 80, - "./nl-be": 79, - "./nl-be.js": 79, - "./nl.js": 80, - "./nn": 81, - "./nn.js": 81, - "./pa-in": 82, - "./pa-in.js": 82, - "./pl": 83, - "./pl.js": 83, - "./pt": 85, - "./pt-br": 84, - "./pt-br.js": 84, - "./pt.js": 85, - "./ro": 86, - "./ro.js": 86, - "./ru": 87, - "./ru.js": 87, - "./sd": 88, - "./sd.js": 88, - "./se": 89, - "./se.js": 89, - "./si": 90, - "./si.js": 90, - "./sk": 91, - "./sk.js": 91, - "./sl": 92, - "./sl.js": 92, - "./sq": 93, - "./sq.js": 93, - "./sr": 95, - "./sr-cyrl": 94, - "./sr-cyrl.js": 94, - "./sr.js": 95, - "./ss": 96, - "./ss.js": 96, - "./sv": 97, - "./sv.js": 97, - "./sw": 98, - "./sw.js": 98, - "./ta": 99, - "./ta.js": 99, - "./te": 100, - "./te.js": 100, - "./tet": 101, - "./tet.js": 101, - "./th": 102, - "./th.js": 102, - "./tl-ph": 103, - "./tl-ph.js": 103, - "./tlh": 104, - "./tlh.js": 104, - "./tr": 105, - "./tr.js": 105, - "./tzl": 106, - "./tzl.js": 106, - "./tzm": 108, - "./tzm-latn": 107, - "./tzm-latn.js": 107, - "./tzm.js": 108, - "./uk": 109, - "./uk.js": 109, - "./ur": 110, - "./ur.js": 110, - "./uz": 112, - "./uz-latn": 111, - "./uz-latn.js": 111, - "./uz.js": 112, - "./vi": 113, - "./vi.js": 113, - "./x-pseudo": 114, - "./x-pseudo.js": 114, - "./yo": 115, - "./yo.js": 115, - "./zh-cn": 116, - "./zh-cn.js": 116, - "./zh-hk": 117, - "./zh-hk.js": 117, - "./zh-tw": 118, - "./zh-tw.js": 118 -}; -function webpackContext(req) { - return __webpack_require__(webpackContextResolve(req)); -}; -function webpackContextResolve(req) { - var id = map[req]; - if(!(id + 1)) // check for number or string - throw new Error("Cannot find module '" + req + "'."); - return id; -}; -webpackContext.keys = function webpackContextKeys() { - return Object.keys(map); -}; -webpackContext.resolve = webpackContextResolve; -module.exports = webpackContext; -webpackContext.id = 124; - -/***/ }), -/* 125 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Bulgarian - * author : Tim McIntosh (StayinFront NZ) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'bg', - cultureCode: 'bg', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 'И', - million: 'А', - billion: 'M', - trillion: 'T' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: 'лв.' - } - }; - - // Node - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - this.numbro.culture('bg', language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 126 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Czech - * locale: Czech Republic - * author : Jan Pesa : https://github.com/smajl (based on work from Anatoli Papirovski : https://github.com/apapirovski) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'cs-CZ', - cultureCode: 'cs-CZ', - delimiters: { - thousands: '\u00a0', - decimal: ',' - }, - abbreviations: { - thousand: 'tis.', - million: 'mil.', - billion: 'mld.', - trillion: 'bil.' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: 'Kč', - position: 'postfix', - spaceSeparated: true - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 127 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Danish - * locale: Denmark - * author : Michael Storgaard : https://github.com/mstorgaard - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'da-DK', - cultureCode: 'da-DK', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'k', - million: 'mio', - billion: 'mia', - trillion: 'b' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: 'kr', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 128 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : German - * locale: Austria - * author : Tim McIntosh (StayinFront NZ) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'de-AT', - cultureCode: 'de-AT', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: '€' - } - }; - - // Node - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 129 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : German - * locale: Switzerland - * author : Michael Piefel : https://github.com/piefel (based on work from Marco Krage : https://github.com/sinky) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'de-CH', - cultureCode: 'de-CH', - delimiters: { - thousands: '\'', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: 'CHF', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 130 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : German - * locale: Germany - * author : Marco Krage : https://github.com/sinky - * - * Generally useful in Germany, Austria, Luxembourg, Belgium - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'de-DE', - cultureCode: 'de-DE', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: '€', - position: 'postfix', - spaceSeparated: true - }, - defaults: { - currencyFormat: ',4' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 131 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : German - * locale: Liechtenstein - * author : Michael Piefel : https://github.com/piefel (based on work from Marco Krage : https://github.com/sinky) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'de-LI', - cultureCode: 'de-LI', - delimiters: { - thousands: '\'', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: 'CHF', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 132 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Greek (el) - * author : Tim McIntosh (StayinFront NZ) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'el', - cultureCode: 'el', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'χ', - million: 'ε', - billion: 'δ', - trillion: 'τ' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: '€' - } - }; - - // Node - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture('el', language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 133 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : English - * locale: Australia - * author : Benedikt Huss : https://github.com/ben305 - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'en-AU', - cultureCode: 'en-AU', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (~~ (number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - }, - currency: { - symbol: '$', - position: 'prefix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: '$ ,0.00', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: '$ ,0' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 134 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : English - * locale: United Kingdom of Great Britain and Northern Ireland - * author : Dan Ristic : https://github.com/dristic - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'en-GB', - cultureCode: 'en-GB', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (~~ (number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - }, - currency: { - symbol: '£', - position: 'prefix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: '$ ,0.00', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: '$ ,0' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 135 */ -/***/ (function(module, exports) { - -/*! -+ * numbro.js language configuration - * language : English - * locale: Ireland - * author : Tim McIntosh (StayinFront NZ) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'en-IE', - cultureCode: 'en-IE', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - }, - currency: { - symbol: '€' - } - }; - - // Node - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture('en-gb', language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 136 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : English - * locale: New Zealand - * author : Benedikt Huss : https://github.com/ben305 - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'en-NZ', - cultureCode: 'en-NZ', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (~~ (number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - }, - currency: { - symbol: '$', - position: 'prefix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: '$ ,0.00', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: '$ ,0' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 137 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : English - * locale: South Africa - * author : Stewart Scott https://github.com/stewart42 - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'en-ZA', - cultureCode: 'en-ZA', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (~~ (number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - }, - currency: { - symbol: 'R', - position: 'prefix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: '$ ,0.00', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: '$ ,0' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 138 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Spanish - * locale: Argentina - * author : Hernan Garcia : https://github.com/hgarcia - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'es-AR', - cultureCode: 'es-AR', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'k', - million: 'mm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (b === 1 || b === 3) ? 'er' : - (b === 2) ? 'do' : - (b === 7 || b === 0) ? 'mo' : - (b === 8) ? 'vo' : - (b === 9) ? 'no' : 'to'; - }, - currency: { - symbol: '$', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 139 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Spanish - * locale: Chile - * author : Gwyn Judd : https://github.com/gwynjudd - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'es-CL', - cultureCode: 'es-CL', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'k', - million: 'mm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (b === 1 || b === 3) ? 'er' : - (b === 2) ? 'do' : - (b === 7 || b === 0) ? 'mo' : - (b === 8) ? 'vo' : - (b === 9) ? 'no' : 'to'; - }, - currency: { - symbol: '$', - position: 'prefix' - }, - defaults: { - currencyFormat: '$0,0' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 140 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Spanish - * locale: Colombia - * author : Gwyn Judd : https://github.com/gwynjudd - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'es-CO', - cultureCode: 'es-CO', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'k', - million: 'mm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (b === 1 || b === 3) ? 'er' : - (b === 2) ? 'do' : - (b === 7 || b === 0) ? 'mo' : - (b === 8) ? 'vo' : - (b === 9) ? 'no' : 'to'; - }, - currency: { - symbol: '€', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 141 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Spanish - * locale: Costa Rica - * author : Gwyn Judd : https://github.com/gwynjudd - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'es-CR', - cultureCode: 'es-CR', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 'k', - million: 'mm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (b === 1 || b === 3) ? 'er' : - (b === 2) ? 'do' : - (b === 7 || b === 0) ? 'mo' : - (b === 8) ? 'vo' : - (b === 9) ? 'no' : 'to'; - }, - currency: { - symbol: '₡', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 142 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Spanish - * locale: Spain - * author : Hernan Garcia : https://github.com/hgarcia - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'es-ES', - cultureCode: 'es-ES', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'k', - million: 'mm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (b === 1 || b === 3) ? 'er' : - (b === 2) ? 'do' : - (b === 7 || b === 0) ? 'mo' : - (b === 8) ? 'vo' : - (b === 9) ? 'no' : 'to'; - }, - currency: { - symbol: '€', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 143 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Spanish - * locale: Nicaragua - * author : Gwyn Judd : https://github.com/gwynjudd - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'es-NI', - cultureCode: 'es-NI', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'mm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (b === 1 || b === 3) ? 'er' : - (b === 2) ? 'do' : - (b === 7 || b === 0) ? 'mo' : - (b === 8) ? 'vo' : - (b === 9) ? 'no' : 'to'; - }, - currency: { - symbol: 'C$', - position: 'prefix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 144 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Spanish - * locale: Peru - * author : Gwyn Judd : https://github.com/gwynjudd - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'es-PE', - cultureCode: 'es-PE', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'mm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (b === 1 || b === 3) ? 'er' : - (b === 2) ? 'do' : - (b === 7 || b === 0) ? 'mo' : - (b === 8) ? 'vo' : - (b === 9) ? 'no' : 'to'; - }, - currency: { - symbol: 'S/.', - position: 'prefix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 145 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Spanish - * locale: Puerto Rico - * author : Gwyn Judd : https://github.com/gwynjudd - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'es-PR', - cultureCode: 'es-PR', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'mm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (b === 1 || b === 3) ? 'er' : - (b === 2) ? 'do' : - (b === 7 || b === 0) ? 'mo' : - (b === 8) ? 'vo' : - (b === 9) ? 'no' : 'to'; - }, - currency: { - symbol: '$', - position: 'prefix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 146 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Spanish - * locale: El Salvador - * author : Gwyn Judd : https://github.com/gwynjudd - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'es-SV', - cultureCode: 'es-SV', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'mm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (b === 1 || b === 3) ? 'er' : - (b === 2) ? 'do' : - (b === 7 || b === 0) ? 'mo' : - (b === 8) ? 'vo' : - (b === 9) ? 'no' : 'to'; - }, - currency: { - symbol: '$', - position: 'prefix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 147 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Estonian - * locale: Estonia - * author : Illimar Tambek : https://github.com/ragulka - * - * Note: in Estonian, abbreviations are always separated - * from numbers with a space - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'et-EE', - cultureCode: 'et-EE', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: ' tuh', - million: ' mln', - billion: ' mld', - trillion: ' trl' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: '€', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 148 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Farsi - * locale: Iran - * author : neo13 : https://github.com/neo13 - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'fa-IR', - cultureCode: 'fa-IR', - delimiters: { - thousands: '،', - decimal: '.' - }, - abbreviations: { - thousand: 'هزار', - million: 'میلیون', - billion: 'میلیارد', - trillion: 'تریلیون' - }, - ordinal: function () { - return 'ام'; - }, - currency: { - symbol: '﷼' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 149 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Finnish - * locale: Finland - * author : Sami Saada : https://github.com/samitheberber - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'fi-FI', - cultureCode: 'fi-FI', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 'k', - million: 'M', - billion: 'G', - trillion: 'T' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: '€', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 150 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Filipino (Pilipino) - * locale: Philippines - * author : Michael Abadilla : https://github.com/mjmaix - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'fil-PH', - cultureCode: 'fil-PH', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal: function (number) { - var b = number % 10; - return (~~ (number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - }, - currency: { - symbol: '₱' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 151 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : French - * locale: Canada - * author : Léo Renaud-Allaire : https://github.com/renaudleo - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'fr-CA', - cultureCode: 'fr-CA', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 'k', - million: 'M', - billion: 'G', - trillion: 'T' - }, - ordinal : function (number) { - return number === 1 ? 'er' : 'ème'; - }, - currency: { - symbol: '$', - position: 'postfix', - spaceSeparated : true - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: '$ ,0.00', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: '$ ,0' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 152 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : French - * locale: Switzerland - * author : Adam Draper : https://github.com/adamwdraper - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'fr-CH', - cultureCode: 'fr-CH', - delimiters: { - thousands: ' ', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal : function (number) { - return number === 1 ? 'er' : 'ème'; - }, - currency: { - symbol: 'CHF', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 153 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : French - * locale: France - * author : Adam Draper : https://github.com/adamwdraper - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'fr-FR', - cultureCode: 'fr-FR', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal : function (number) { - return number === 1 ? 'er' : 'ème'; - }, - currency: { - symbol: '€', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 154 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Hebrew - * locale : IL - * author : Eli Zehavi : https://github.com/eli-zehavi - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'he-IL', - cultureCode: 'he-IL', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'אלף', - million: 'מליון', - billion: 'בליון', - trillion: 'טריליון' - }, - currency: { - symbol: '₪', - position: 'prefix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: '₪ ,0.00', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: '₪ ,0' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - - -/***/ }), -/* 155 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Hungarian - * locale: Hungary - * author : Peter Bakondy : https://github.com/pbakondy - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'hu-HU', - cultureCode: 'hu-HU', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 'E', // ezer - million: 'M', // millió - billion: 'Mrd', // milliárd - trillion: 'T' // trillió - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: ' Ft', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 156 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Indonesian - * author : Tim McIntosh (StayinFront NZ) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'id', - cultureCode: 'id', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'r', - million: 'j', - billion: 'm', - trillion: 't' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: 'Rp' - } - }; - - // Node - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture('id', language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 157 */ -/***/ (function(module, exports, __webpack_require__) { - -/* jshint sub: true */ -exports['bg'] = __webpack_require__(125); -exports['cs-CZ'] = __webpack_require__(126); -exports['da-DK'] = __webpack_require__(127); -exports['de-AT'] = __webpack_require__(128); -exports['de-CH'] = __webpack_require__(129); -exports['de-DE'] = __webpack_require__(130); -exports['de-LI'] = __webpack_require__(131); -exports['el'] = __webpack_require__(132); -exports['en-AU'] = __webpack_require__(133); -exports['en-GB'] = __webpack_require__(134); -exports['en-IE'] = __webpack_require__(135); -exports['en-NZ'] = __webpack_require__(136); -exports['en-ZA'] = __webpack_require__(137); -exports['es-AR'] = __webpack_require__(138); -exports['es-CL'] = __webpack_require__(139); -exports['es-CO'] = __webpack_require__(140); -exports['es-CR'] = __webpack_require__(141); -exports['es-ES'] = __webpack_require__(142); -exports['es-NI'] = __webpack_require__(143); -exports['es-PE'] = __webpack_require__(144); -exports['es-PR'] = __webpack_require__(145); -exports['es-SV'] = __webpack_require__(146); -exports['et-EE'] = __webpack_require__(147); -exports['fa-IR'] = __webpack_require__(148); -exports['fi-FI'] = __webpack_require__(149); -exports['fil-PH'] = __webpack_require__(150); -exports['fr-CA'] = __webpack_require__(151); -exports['fr-CH'] = __webpack_require__(152); -exports['fr-FR'] = __webpack_require__(153); -exports['he-IL'] = __webpack_require__(154); -exports['hu-HU'] = __webpack_require__(155); -exports['id'] = __webpack_require__(156); -exports['it-CH'] = __webpack_require__(158); -exports['it-IT'] = __webpack_require__(159); -exports['ja-JP'] = __webpack_require__(160); -exports['ko-KR'] = __webpack_require__(161); -exports['lv-LV'] = __webpack_require__(162); -exports['nb-NO'] = __webpack_require__(163); -exports['nb'] = __webpack_require__(164); -exports['nl-BE'] = __webpack_require__(165); -exports['nl-NL'] = __webpack_require__(166); -exports['nn'] = __webpack_require__(167); -exports['pl-PL'] = __webpack_require__(168); -exports['pt-BR'] = __webpack_require__(169); -exports['pt-PT'] = __webpack_require__(170); -exports['ro-RO'] = __webpack_require__(171); -exports['ro'] = __webpack_require__(172); -exports['ru-RU'] = __webpack_require__(173); -exports['ru-UA'] = __webpack_require__(174); -exports['sk-SK'] = __webpack_require__(175); -exports['sl'] = __webpack_require__(176); -exports['sr-Cyrl-RS'] = __webpack_require__(177); -exports['sv-SE'] = __webpack_require__(178); -exports['th-TH'] = __webpack_require__(179); -exports['tr-TR'] = __webpack_require__(180); -exports['uk-UA'] = __webpack_require__(181); -exports['zh-CN'] = __webpack_require__(182); -exports['zh-MO'] = __webpack_require__(183); -exports['zh-SG'] = __webpack_require__(184); -exports['zh-TW'] = __webpack_require__(185); - -/***/ }), -/* 158 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Italian - * locale: Switzerland - * author : Tim McIntosh (StayinFront NZ) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'it-CH', - cultureCode: 'it-CH', - delimiters: { - thousands: '\'', - decimal: '.' - }, - abbreviations: { - thousand: 'mila', - million: 'mil', - billion: 'b', - trillion: 't' - }, - ordinal: function () { - return '°'; - }, - currency: { - symbol: 'CHF' - } - }; - - // Node - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture('it-CH', language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 159 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Italian - * locale: Italy - * author : Giacomo Trombi : http://cinquepunti.it - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'it-IT', - cultureCode: 'it-IT', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'mila', - million: 'mil', - billion: 'b', - trillion: 't' - }, - ordinal: function () { - return 'º'; - }, - currency: { - symbol: '€', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 160 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Japanese - * locale: Japan - * author : teppeis : https://github.com/teppeis - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'ja-JP', - cultureCode: 'ja-JP', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: '千', - million: '百万', - billion: '十億', - trillion: '兆' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: '¥', - position: 'prefix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: '$ ,0.00', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: '$ ,0' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 161 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Korean - * author (numbro.js Version): Randy Wilander : https://github.com/rocketedaway - * author (numeral.js Version) : Rich Daley : https://github.com/pedantic-git - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'ko-KR', - cultureCode: 'ko-KR', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: '천', - million: '백만', - billion: '십억', - trillion: '일조' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: '₩' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 162 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Latvian - * locale: Latvia - * author : Lauris Bukšis-Haberkorns : https://github.com/Lafriks - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'lv-LV', - cultureCode: 'lv-LV', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: ' tūkst.', - million: ' milj.', - billion: ' mljrd.', - trillion: ' trilj.' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: '€', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 163 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language: Norwegian Bokmål - * locale: Norway - * author : Benjamin Van Ryseghem - */ -(function() { - 'use strict'; - - var language = { - langLocaleCode: 'nb-NO', - cultureCode: 'nb-NO', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 't', - million: 'M', - billion: 'md', - trillion: 't' - }, - currency: { - symbol: 'kr', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 164 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Norwegian Bokmål (nb) - * author : Tim McIntosh (StayinFront NZ) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'nb', - cultureCode: 'nb', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 't', - million: 'mil', - billion: 'mia', - trillion: 'b' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: 'kr' - } - }; - - // Node - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture('nb', language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 165 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Dutch - * locale: Belgium - * author : Dieter Luypaert : https://github.com/moeriki - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'nl-BE', - cultureCode: 'nl-BE', - delimiters: { - thousands: ' ', - decimal : ',' - }, - abbreviations: { - thousand : 'k', - million : 'mln', - billion : 'mld', - trillion : 'bln' - }, - ordinal : function (number) { - var remainder = number % 100; - return (number !== 0 && remainder <= 1 || remainder === 8 || remainder >= 20) ? 'ste' : 'de'; - }, - currency: { - symbol: '€', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 166 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Dutch - * locale: Netherlands - * author : Dave Clayton : https://github.com/davedx - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'nl-NL', - cultureCode: 'nl-NL', - delimiters: { - thousands: '.', - decimal : ',' - }, - abbreviations: { - thousand : 'k', - million : 'mln', - billion : 'mrd', - trillion : 'bln' - }, - ordinal : function (number) { - var remainder = number % 100; - return (number !== 0 && remainder <= 1 || remainder === 8 || remainder >= 20) ? 'ste' : 'de'; - }, - currency: { - symbol: '€', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 167 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Norwegian Nynorsk (nn) - * author : Tim McIntosh (StayinFront NZ) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'nn', - cultureCode: 'nn', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 't', - million: 'mil', - billion: 'mia', - trillion: 'b' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: 'kr' - } - }; - - // Node - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.language) { - window.numbro.language('nn', language); - } -}()); - - -/***/ }), -/* 168 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Polish - * locale : Poland - * author : Dominik Bulaj : https://github.com/dominikbulaj - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'pl-PL', - cultureCode: 'pl-PL', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 'tys.', - million: 'mln', - billion: 'mld', - trillion: 'bln' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: ' zł', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 169 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Portuguese - * locale : Brazil - * author : Ramiro Varandas Jr : https://github.com/ramirovjr - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'pt-BR', - cultureCode: 'pt-BR', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'mil', - million: 'milhões', - billion: 'b', - trillion: 't' - }, - ordinal: function () { - return 'º'; - }, - currency: { - symbol: 'R$', - position: 'prefix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 170 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Portuguese - * locale : Portugal - * author : Diogo Resende : https://github.com/dresende - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'pt-PT', - cultureCode: 'pt-PT', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal : function () { - return 'º'; - }, - currency: { - symbol: '€', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 171 */ -/***/ (function(module, exports) { - -/*! - * numeral.js language configuration - * language : Romanian - * author : Andrei Alecu https://github.com/andreialecu - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'ro-RO', - cultureCode: 'ro-RO', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'mii', - million: 'mil', - billion: 'mld', - trillion: 'bln' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: ' lei', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 172 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Romanian (ro) - * author : Tim McIntosh (StayinFront NZ) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'ro', - cultureCode: 'ro', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'mie', - million: 'mln', - billion: 'mld', - trillion: 't' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: 'RON' - } - }; - - // Node - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture('ro', language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 173 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Russian - * locale : Russsia - * author : Anatoli Papirovski : https://github.com/apapirovski - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'ru-RU', - cultureCode: 'ru-RU', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 'тыс.', - million: 'млн', - billion: 'b', - trillion: 't' - }, - ordinal: function () { - // not ideal, but since in Russian it can taken on - // different forms (masculine, feminine, neuter) - // this is all we can do - return '.'; - }, - currency: { - symbol: 'руб.', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 174 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Russian - * locale : Ukraine - * author : Anatoli Papirovski : https://github.com/apapirovski - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'ru-UA', - cultureCode: 'ru-UA', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 'тыс.', - million: 'млн', - billion: 'b', - trillion: 't' - }, - ordinal: function () { - // not ideal, but since in Russian it can taken on - // different forms (masculine, feminine, neuter) - // this is all we can do - return '.'; - }, - currency: { - symbol: '\u20B4', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 175 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Slovak - * locale : Slovakia - * author : Jan Pesa : https://github.com/smajl (based on work from Ahmed Al Hafoudh : http://www.freevision.sk) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'sk-SK', - cultureCode: 'sk-SK', - delimiters: { - thousands: '\u00a0', - decimal: ',' - }, - abbreviations: { - thousand: 'tis.', - million: 'mil.', - billion: 'mld.', - trillion: 'bil.' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: '€', - position: 'postfix', - spaceSeparated: true - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 176 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Slovene - * locale: Slovenia - * author : Tim McIntosh (StayinFront NZ) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'sl', - cultureCode: 'sl', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'tis.', - million: 'mil.', - billion: 'b', - trillion: 't' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: '€' - } - }; - - // Node - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture('sl', language); - } -}()); - - -/***/ }), -/* 177 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Serbian (sr) - * country : Serbia (Cyrillic) - * author : Tim McIntosh (StayinFront NZ) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'sr-Cyrl-RS', - cultureCode: 'sr-Cyrl-RS', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'тыс.', - million: 'млн', - billion: 'b', - trillion: 't' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: 'RSD' - } - }; - - // Node - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture('sr-Cyrl-RS', language); - } -}()); - - -/***/ }), -/* 178 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Swedish - * locale : Sweden - * author : Benjamin Van Ryseghem (benjamin.vanryseghem.com) - */ -(function() { - 'use strict'; - - var language = { - langLocaleCode: 'sv-SE', - cultureCode: 'sv-SE', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 't', - million: 'M', - billion: 'md', - trillion: 'tmd' - }, - currency: { - symbol: 'kr', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 179 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Thai - * locale : Thailand - * author : Sathit Jittanupat : https://github.com/jojosati - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'th-TH', - cultureCode: 'th-TH', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'พัน', - million: 'ล้าน', - billion: 'พันล้าน', - trillion: 'ล้านล้าน' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: '฿', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 180 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Turkish - * locale : Turkey - * author : Ecmel Ercan : https://github.com/ecmel, - * Erhan Gundogan : https://github.com/erhangundogan, - * Burak Yiğit Kaya: https://github.com/BYK - */ -(function() { - 'use strict'; - - var suffixes = { - 1: '\'inci', - 5: '\'inci', - 8: '\'inci', - 70: '\'inci', - 80: '\'inci', - - 2: '\'nci', - 7: '\'nci', - 20: '\'nci', - 50: '\'nci', - - 3: '\'üncü', - 4: '\'üncü', - 100: '\'üncü', - - 6: '\'ncı', - - 9: '\'uncu', - 10: '\'uncu', - 30: '\'uncu', - - 60: '\'ıncı', - 90: '\'ıncı' - }, - language = { - langLocaleCode: 'tr-TR', - cultureCode: 'tr-TR', - delimiters: { - thousands: '.', - decimal: ',' - }, - abbreviations: { - thousand: 'bin', - million: 'milyon', - billion: 'milyar', - trillion: 'trilyon' - }, - ordinal: function(number) { - if (number === 0) { // special case for zero - return '\'ıncı'; - } - - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - - return suffixes[a] || suffixes[b] || suffixes[c]; - }, - currency: { - symbol: '\u20BA', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 181 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Ukrainian - * locale : Ukraine - * author : Michael Piefel : https://github.com/piefel (with help from Tetyana Kuzmenko) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'uk-UA', - cultureCode: 'uk-UA', - delimiters: { - thousands: ' ', - decimal: ',' - }, - abbreviations: { - thousand: 'тис.', - million: 'млн', - billion: 'млрд', - trillion: 'блн' - }, - ordinal: function () { - // not ideal, but since in Ukrainian it can taken on - // different forms (masculine, feminine, neuter) - // this is all we can do - return ''; - }, - currency: { - symbol: '\u20B4', - position: 'postfix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: ',0.00 $', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: ',0 $' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 182 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : simplified chinese - * locale : China - * author : badplum : https://github.com/badplum - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'zh-CN', - cultureCode: 'zh-CN', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: '千', - million: '百万', - billion: '十亿', - trillion: '兆' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: '¥', - position: 'prefix' - }, - defaults: { - currencyFormat: ',4 a' - }, - formats: { - fourDigits: '4 a', - fullWithTwoDecimals: '$ ,0.00', - fullWithTwoDecimalsNoCurrency: ',0.00', - fullWithNoDecimals: '$ ,0' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 183 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Chinese traditional - * locale: Macau - * author : Tim McIntosh (StayinFront NZ) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'zh-MO', - cultureCode: 'zh-MO', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: '千', - million: '百萬', - billion: '十億', - trillion: '兆' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: 'MOP' - } - }; - - // Node - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture('zh-MO', language); - } -}()); - - -/***/ }), -/* 184 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Chinese simplified - * locale: Singapore - * author : Tim McIntosh (StayinFront NZ) - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'zh-SG', - cultureCode: 'zh-SG', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: '千', - million: '百万', - billion: '十亿', - trillion: '兆' - }, - ordinal: function () { - return '.'; - }, - currency: { - symbol: '$' - } - }; - - // Node - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture('zh-SG', language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 185 */ -/***/ (function(module, exports) { - -/*! - * numbro.js language configuration - * language : Chinese (Taiwan) - * author (numbro.js Version): Randy Wilander : https://github.com/rocketedaway - * author (numeral.js Version) : Rich Daley : https://github.com/pedantic-git - */ -(function () { - 'use strict'; - - var language = { - langLocaleCode: 'zh-TW', - cultureCode: 'zh-TW', - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: '千', - million: '百萬', - billion: '十億', - trillion: '兆' - }, - ordinal: function () { - return '第'; - }, - currency: { - symbol: 'NT$' - } - }; - - // CommonJS - if (typeof module !== 'undefined' && module.exports) { - module.exports = language; - } - // Browser - if (typeof window !== 'undefined' && window.numbro && window.numbro.culture) { - window.numbro.culture(language.cultureCode, language); - } -}.call(typeof window === 'undefined' ? this : window)); - - -/***/ }), -/* 186 */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(process) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - * numbro.js - * version : 1.11.0 - * author : Företagsplatsen AB - * license : MIT - * http://www.foretagsplatsen.se - */ - -(function () { - 'use strict'; - - /************************************ - Constants - ************************************/ - - var numbro, - VERSION = '1.11.0', - binarySuffixes = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'], - decimalSuffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], - bytes = { - general: { scale: 1024, suffixes: decimalSuffixes, marker: 'bd' }, - binary: { scale: 1024, suffixes: binarySuffixes, marker: 'b' }, - decimal: { scale: 1000, suffixes: decimalSuffixes, marker: 'd' } - }, - // general must be before the others because it reuses their characters! - byteFormatOrder = [ bytes.general, bytes.binary, bytes.decimal ], - // internal storage for culture config files - cultures = {}, - // Todo: Remove in 2.0.0 - languages = cultures, - currentCulture = 'en-US', - zeroFormat = null, - defaultFormat = '0,0', - defaultCurrencyFormat = '0$', - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module.exports), - // default culture - enUS = { - delimiters: { - thousands: ',', - decimal: '.' - }, - abbreviations: { - thousand: 'k', - million: 'm', - billion: 'b', - trillion: 't' - }, - ordinal: function(number) { - var b = number % 10; - return (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - }, - currency: { - symbol: '$', - position: 'prefix' - }, - defaults: { - currencyFormat: ',0000 a' - }, - formats: { - fourDigits: '0000 a', - fullWithTwoDecimals: '$ ,0.00', - fullWithTwoDecimalsNoCurrency: ',0.00' - } - }; - - /************************************ - Constructors - ************************************/ - - - // Numbro prototype object - function Numbro(number) { - this._value = number; - } - - function numberLength(number) { - if (number === 0) { return 1; } - return Math.floor(Math.log(Math.abs(number)) / Math.LN10) + 1; - } - - function zeroes(count) { - var i, ret = ''; - - for (i = 0; i < count; i++) { - ret += '0'; - } - - return ret; - } - /** - * Implementation of toFixed() for numbers with exponents - * This function may return negative representations for zero values e.g. "-0.0" - */ - function toFixedLargeSmall(value, precision) { - var mantissa, - beforeDec, - afterDec, - exponent, - prefix, - endStr, - zerosStr, - str; - - str = value.toString(); - - mantissa = str.split('e')[0]; - exponent = str.split('e')[1]; - - beforeDec = mantissa.split('.')[0]; - afterDec = mantissa.split('.')[1] || ''; - - if (+exponent > 0) { - // exponent is positive - add zeros after the numbers - str = beforeDec + afterDec + zeroes(exponent - afterDec.length); - } else { - // exponent is negative - - if (+beforeDec < 0) { - prefix = '-0'; - } else { - prefix = '0'; - } - - // tack on the decimal point if needed - if (precision > 0) { - prefix += '.'; - } - - zerosStr = zeroes((-1 * exponent) - 1); - // substring off the end to satisfy the precision - endStr = (zerosStr + Math.abs(beforeDec) + afterDec).substr(0, precision); - str = prefix + endStr; - } - - // only add percision 0's if the exponent is positive - if (+exponent > 0 && precision > 0) { - str += '.' + zeroes(precision); - } - - return str; - } - - /** - * Implementation of toFixed() that treats floats more like decimals - * - * Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61') that present - * problems for accounting- and finance-related software. - * - * Also removes negative signs for zero-formatted numbers. e.g. -0.01 w/ precision 1 -> 0.0 - */ - function toFixed(value, precision, roundingFunction, optionals) { - var power = Math.pow(10, precision), - optionalsRegExp, - output; - - if (value.toString().indexOf('e') > -1) { - // toFixed returns scientific notation for numbers above 1e21 and below 1e-7 - output = toFixedLargeSmall(value, precision); - // remove the leading negative sign if it exists and should not be present (e.g. -0.00) - if (output.charAt(0) === '-' && +output >= 0) { - output = output.substr(1); // chop off the '-' - } - } - else { - // Multiply up by precision, round accurately, then divide and use native toFixed(): - output = (roundingFunction(value + 'e+' + precision) / power).toFixed(precision); - } - - if (optionals) { - optionalsRegExp = new RegExp('0{1,' + optionals + '}$'); - output = output.replace(optionalsRegExp, ''); - } - - return output; - } - - /************************************ - Formatting - ************************************/ - - // determine what type of formatting we need to do - function formatNumbro(n, format, roundingFunction) { - var output, - escapedFormat = format.replace(/\{[^\{\}]*\}/g, ''); - - // figure out what kind of format we are dealing with - if (escapedFormat.indexOf('$') > -1) { // currency!!!!! - output = formatCurrency(n, cultures[currentCulture].currency.symbol, format, roundingFunction); - } else if (escapedFormat.indexOf('%') > -1) { // percentage - output = formatPercentage(n, format, roundingFunction); - } else if (escapedFormat.indexOf(':') > -1) { // time - output = formatTime(n, format); - } else { // plain ol' numbers or bytes - output = formatNumber(n._value, format, roundingFunction); - } - - // return string - return output; - } - - // revert to number - function unformatNumbro(n, string) { - var stringOriginal = string, - thousandRegExp, - millionRegExp, - billionRegExp, - trillionRegExp, - bytesMultiplier = false, - power; - - if (string.indexOf(':') > -1) { - n._value = unformatTime(string); - } else { - if (string === zeroFormat) { - n._value = 0; - } else { - if (cultures[currentCulture].delimiters.decimal !== '.') { - string = string.replace(/\./g, '').replace(cultures[currentCulture].delimiters.decimal, '.'); - } - - // see if abbreviations are there so that we can multiply to the correct number - thousandRegExp = new RegExp('[^a-zA-Z]' + cultures[currentCulture].abbreviations.thousand + - '(?:\\)|(\\' + cultures[currentCulture].currency.symbol + ')?(?:\\))?)?$'); - millionRegExp = new RegExp('[^a-zA-Z]' + cultures[currentCulture].abbreviations.million + - '(?:\\)|(\\' + cultures[currentCulture].currency.symbol + ')?(?:\\))?)?$'); - billionRegExp = new RegExp('[^a-zA-Z]' + cultures[currentCulture].abbreviations.billion + - '(?:\\)|(\\' + cultures[currentCulture].currency.symbol + ')?(?:\\))?)?$'); - trillionRegExp = new RegExp('[^a-zA-Z]' + cultures[currentCulture].abbreviations.trillion + - '(?:\\)|(\\' + cultures[currentCulture].currency.symbol + ')?(?:\\))?)?$'); - - // see if bytes are there so that we can multiply to the correct number - for (power = 1; power < binarySuffixes.length && !bytesMultiplier; ++power) { - if (string.indexOf(binarySuffixes[power]) > -1) { - bytesMultiplier = Math.pow(1024, power); - } else if (string.indexOf(decimalSuffixes[power]) > -1) { - bytesMultiplier = Math.pow(1000, power); - } - } - - var str = string.replace(/[^0-9\.]+/g, ''); - if (str === '') { - // An empty string is not a number. - n._value = NaN; - - } else { - // do some math to create our number - n._value = ((bytesMultiplier) ? bytesMultiplier : 1) * - ((stringOriginal.match(thousandRegExp)) ? Math.pow(10, 3) : 1) * - ((stringOriginal.match(millionRegExp)) ? Math.pow(10, 6) : 1) * - ((stringOriginal.match(billionRegExp)) ? Math.pow(10, 9) : 1) * - ((stringOriginal.match(trillionRegExp)) ? Math.pow(10, 12) : 1) * - ((string.indexOf('%') > -1) ? 0.01 : 1) * - (((string.split('-').length + - Math.min(string.split('(').length - 1, string.split(')').length - 1)) % 2) ? 1 : -1) * - Number(str); - - // round if we are talking about bytes - n._value = (bytesMultiplier) ? Math.ceil(n._value) : n._value; - } - } - } - return n._value; - } - - function formatCurrency(n, currencySymbol, originalFormat, roundingFunction) { - var format = originalFormat, - symbolIndex = format.indexOf('$'), - openParenIndex = format.indexOf('('), - plusSignIndex = format.indexOf('+'), - minusSignIndex = format.indexOf('-'), - space = '', - decimalSeparator = '', - spliceIndex, - output; - - if(format.indexOf('$') === -1){ - // Use defaults instead of the format provided - if (cultures[currentCulture].currency.position === 'infix') { - decimalSeparator = currencySymbol; - if (cultures[currentCulture].currency.spaceSeparated) { - decimalSeparator = ' ' + decimalSeparator + ' '; - } - } else if (cultures[currentCulture].currency.spaceSeparated) { - space = ' '; - } - } else { - // check for space before or after currency - if (format.indexOf(' $') > -1) { - space = ' '; - format = format.replace(' $', ''); - } else if (format.indexOf('$ ') > -1) { - space = ' '; - format = format.replace('$ ', ''); - } else { - format = format.replace('$', ''); - } - } - - // Format The Number - output = formatNumber(n._value, format, roundingFunction, decimalSeparator); - - if (originalFormat.indexOf('$') === -1) { - // Use defaults instead of the format provided - switch (cultures[currentCulture].currency.position) { - case 'postfix': - if (output.indexOf(')') > -1) { - output = output.split(''); - output.splice(-1, 0, space + currencySymbol); - output = output.join(''); - } else { - output = output + space + currencySymbol; - } - break; - case 'infix': - break; - case 'prefix': - if (output.indexOf('(') > -1 || output.indexOf('-') > -1) { - output = output.split(''); - spliceIndex = Math.max(openParenIndex, minusSignIndex) + 1; - - output.splice(spliceIndex, 0, currencySymbol + space); - output = output.join(''); - } else { - output = currencySymbol + space + output; - } - break; - default: - throw Error('Currency position should be among ["prefix", "infix", "postfix"]'); - } - } else { - // position the symbol - if (symbolIndex <= 1) { - if (output.indexOf('(') > -1 || output.indexOf('+') > -1 || output.indexOf('-') > -1) { - output = output.split(''); - spliceIndex = 1; - if (symbolIndex < openParenIndex || symbolIndex < plusSignIndex || symbolIndex < minusSignIndex) { - // the symbol appears before the "(", "+" or "-" - spliceIndex = 0; - } - output.splice(spliceIndex, 0, currencySymbol + space); - output = output.join(''); - } else { - output = currencySymbol + space + output; - } - } else { - if (output.indexOf(')') > -1) { - output = output.split(''); - output.splice(-1, 0, space + currencySymbol); - output = output.join(''); - } else { - output = output + space + currencySymbol; - } - } - } - - return output; - } - - function formatForeignCurrency(n, foreignCurrencySymbol, originalFormat, roundingFunction) { - return formatCurrency(n, foreignCurrencySymbol, originalFormat, roundingFunction); - } - - function formatPercentage(n, format, roundingFunction) { - var space = '', - output, - value = n._value * 100; - - // check for space before % - if (format.indexOf(' %') > -1) { - space = ' '; - format = format.replace(' %', ''); - } else { - format = format.replace('%', ''); - } - - output = formatNumber(value, format, roundingFunction); - - if (output.indexOf(')') > -1) { - output = output.split(''); - output.splice(-1, 0, space + '%'); - output = output.join(''); - } else { - output = output + space + '%'; - } - - return output; - } - - function formatTime(n) { - var hours = Math.floor(n._value / 60 / 60), - minutes = Math.floor((n._value - (hours * 60 * 60)) / 60), - seconds = Math.round(n._value - (hours * 60 * 60) - (minutes * 60)); - return hours + ':' + - ((minutes < 10) ? '0' + minutes : minutes) + ':' + - ((seconds < 10) ? '0' + seconds : seconds); - } - - function unformatTime(string) { - var timeArray = string.split(':'), - seconds = 0; - // turn hours and minutes into seconds and add them all up - if (timeArray.length === 3) { - // hours - seconds = seconds + (Number(timeArray[0]) * 60 * 60); - // minutes - seconds = seconds + (Number(timeArray[1]) * 60); - // seconds - seconds = seconds + Number(timeArray[2]); - } else if (timeArray.length === 2) { - // minutes - seconds = seconds + (Number(timeArray[0]) * 60); - // seconds - seconds = seconds + Number(timeArray[1]); - } - return Number(seconds); - } - - function formatByteUnits (value, suffixes, scale) { - var suffix = suffixes[0], - power, - min, - max, - abs = Math.abs(value); - - if (abs >= scale) { - for (power = 1; power < suffixes.length; ++power) { - min = Math.pow(scale, power); - max = Math.pow(scale, power + 1); - - if (abs >= min && abs < max) { - suffix = suffixes[power]; - value = value / min; - break; - } - } - - // values greater than or equal to [scale] YB never set the suffix - if (suffix === suffixes[0]) { - value = value / Math.pow(scale, suffixes.length - 1); - suffix = suffixes[suffixes.length - 1]; - } - } - - return { value: value, suffix: suffix }; - } - - function formatNumber (value, format, roundingFunction, sep) { - var negP = false, - signed = false, - optDec = false, - abbr = '', - abbrK = false, // force abbreviation to thousands - abbrM = false, // force abbreviation to millions - abbrB = false, // force abbreviation to billions - abbrT = false, // force abbreviation to trillions - abbrForce = false, // force abbreviation - bytes = '', - byteFormat, - units, - ord = '', - abs = Math.abs(value), - totalLength, - length, - minimumPrecision, - pow, - w, - intPrecision, - precision, - prefix, - postfix, - thousands, - d = '', - forcedNeg = false, - neg = false, - indexOpenP, - indexMinus, - paren = '', - minlen, - i; - - // check if number is zero and a custom zero format has been set - if (value === 0 && zeroFormat !== null) { - return zeroFormat; - } - - if (!isFinite(value)) { - return '' + value; - } - - if (format.indexOf('{') === 0) { - var end = format.indexOf('}'); - if (end === -1) { - throw Error('Format should also contain a "}"'); - } - prefix = format.slice(1, end); - format = format.slice(end + 1); - } else { - prefix = ''; - } - - if (format.indexOf('}') === format.length - 1 && format.length) { - var start = format.indexOf('{'); - if (start === -1) { - throw Error('Format should also contain a "{"'); - } - postfix = format.slice(start + 1, -1); - format = format.slice(0, start + 1); - } else { - postfix = ''; - } - - // check for min length - var info; - if (format.indexOf('.') === -1) { - info = format.match(/([0-9]+).*/); - } else { - info = format.match(/([0-9]+)\..*/); - } - minlen = info === null ? -1 : info[1].length; - - // see if we should use parentheses for negative number or if we should prefix with a sign - // if both are present we default to parentheses - if (format.indexOf('-') !== -1) { - forcedNeg = true; - } - if (format.indexOf('(') > -1) { - negP = true; - format = format.slice(1, -1); - } else if (format.indexOf('+') > -1) { - signed = true; - format = format.replace(/\+/g, ''); - } - - // see if abbreviation is wanted - if (format.indexOf('a') > -1) { - intPrecision = format.split('.')[0].match(/[0-9]+/g) || ['0']; - intPrecision = parseInt(intPrecision[0], 10); - - // check if abbreviation is specified - abbrK = format.indexOf('aK') >= 0; - abbrM = format.indexOf('aM') >= 0; - abbrB = format.indexOf('aB') >= 0; - abbrT = format.indexOf('aT') >= 0; - abbrForce = abbrK || abbrM || abbrB || abbrT; - - // check for space before abbreviation - if (format.indexOf(' a') > -1) { - abbr = ' '; - format = format.replace(' a', ''); - } else { - format = format.replace('a', ''); - } - - totalLength = numberLength(value); - minimumPrecision = totalLength % 3; - minimumPrecision = minimumPrecision === 0 ? 3 : minimumPrecision; - - if (intPrecision && abs !== 0) { - pow = 3 * ~~((Math.min(intPrecision, totalLength) - minimumPrecision) / 3); - abs = abs / Math.pow(10, pow); - } - - if (totalLength !== intPrecision) { - if (abs >= Math.pow(10, 12) && !abbrForce || abbrT) { - // trillion - abbr = abbr + cultures[currentCulture].abbreviations.trillion; - value = value / Math.pow(10, 12); - } else if (abs < Math.pow(10, 12) && abs >= Math.pow(10, 9) && !abbrForce || abbrB) { - // billion - abbr = abbr + cultures[currentCulture].abbreviations.billion; - value = value / Math.pow(10, 9); - } else if (abs < Math.pow(10, 9) && abs >= Math.pow(10, 6) && !abbrForce || abbrM) { - // million - abbr = abbr + cultures[currentCulture].abbreviations.million; - value = value / Math.pow(10, 6); - } else if (abs < Math.pow(10, 6) && abs >= Math.pow(10, 3) && !abbrForce || abbrK) { - // thousand - abbr = abbr + cultures[currentCulture].abbreviations.thousand; - value = value / Math.pow(10, 3); - } - } - - length = numberLength(value); - if (intPrecision && length < intPrecision && format.indexOf('.') === -1) { - format += '[.]'; - format += zeroes(intPrecision - length); - } - } - - // see if we are formatting - // binary-decimal bytes (1024 MB), binary bytes (1024 MiB), or decimal bytes (1000 MB) - for (i = 0; i < byteFormatOrder.length; ++i) { - byteFormat = byteFormatOrder[i]; - - if (format.indexOf(byteFormat.marker) > -1) { - // check for space before - if (format.indexOf(' ' + byteFormat.marker) >-1) { - bytes = ' '; - } - - // remove the marker (with the space if it had one) - format = format.replace(bytes + byteFormat.marker, ''); - - units = formatByteUnits(value, byteFormat.suffixes, byteFormat.scale); - - value = units.value; - bytes = bytes + units.suffix; - - break; - } - } - - // see if ordinal is wanted - if (format.indexOf('o') > -1) { - // check for space before - if (format.indexOf(' o') > -1) { - ord = ' '; - format = format.replace(' o', ''); - } else { - format = format.replace('o', ''); - } - - if (cultures[currentCulture].ordinal) { - ord = ord + cultures[currentCulture].ordinal(value); - } - } - - if (format.indexOf('[.]') > -1) { - optDec = true; - format = format.replace('[.]', '.'); - } - - precision = format.split('.')[1]; - thousands = format.indexOf(','); - - if (precision) { - var dSplit = []; - - if (precision.indexOf('*') !== -1) { - d = value.toString(); - dSplit = d.split('.'); - if (dSplit.length > 1) { - d = toFixed(value, dSplit[1].length, roundingFunction); - } - } else { - if (precision.indexOf('[') > -1) { - precision = precision.replace(']', ''); - precision = precision.split('['); - d = toFixed(value, (precision[0].length + precision[1].length), roundingFunction, - precision[1].length); - } else { - d = toFixed(value, precision.length, roundingFunction); - } - } - - dSplit = d.split('.'); - w = dSplit[0]; - - if (dSplit.length > 1 && dSplit[1].length) { - var p = sep ? abbr + sep : cultures[currentCulture].delimiters.decimal; - d = p + dSplit[1]; - } else { - d = ''; - } - - if (optDec && Number(d.slice(1)) === 0) { - d = ''; - } - } else { - w = toFixed(value, 0, roundingFunction); - } - - // format number - if (w.indexOf('-') > -1) { - w = w.slice(1); - neg = true; - } - - if (w.length < minlen) { - w = zeroes(minlen - w.length) + w; - } - - if (thousands > -1) { - w = w.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + - cultures[currentCulture].delimiters.thousands); - } - - if (format.indexOf('.') === 0) { - w = ''; - } - - indexOpenP = format.indexOf('('); - indexMinus = format.indexOf('-'); - - if (indexOpenP < indexMinus) { - paren = ((negP && neg) ? '(' : '') + (((forcedNeg && neg) || (!negP && neg)) ? '-' : ''); - } else { - paren = (((forcedNeg && neg) || (!negP && neg)) ? '-' : '') + ((negP && neg) ? '(' : ''); - } - - return prefix + - paren + ((!neg && signed && value !== 0) ? '+' : '') + - w + d + - ((ord) ? ord : '') + - ((abbr && !sep) ? abbr : '') + - ((bytes) ? bytes : '') + - ((negP && neg) ? ')' : '') + - postfix; - } - - /************************************ - Top Level Functions - ************************************/ - - numbro = function(input) { - if (numbro.isNumbro(input)) { - input = input.value(); - } else if (typeof input === 'string' || typeof input === 'number') { - input = numbro.fn.unformat(input); - } else { - input = NaN; - } - - return new Numbro(Number(input)); - }; - - // version number - numbro.version = VERSION; - - // compare numbro object - numbro.isNumbro = function(obj) { - return obj instanceof Numbro; - }; - - /** - * This function allow the user to set a new language with a fallback if - * the language does not exist. If no fallback language is provided, - * it fallbacks to english. - * - * @deprecated Since in version 1.6.0. It will be deleted in version 2.0 - * `setCulture` should be used instead. - */ - numbro.setLanguage = function(newLanguage, fallbackLanguage) { - console.warn('`setLanguage` is deprecated since version 1.6.0. Use `setCulture` instead'); - var key = newLanguage, - prefix = newLanguage.split('-')[0], - matchingLanguage = null; - if (!languages[key]) { - Object.keys(languages).forEach(function(language) { - if (!matchingLanguage && language.split('-')[0] === prefix) { - matchingLanguage = language; - } - }); - key = matchingLanguage || fallbackLanguage || 'en-US'; - } - chooseCulture(key); - }; - - /** - * This function allow the user to set a new culture with a fallback if - * the culture does not exist. If no fallback culture is provided, - * it falls back to "en-US". - */ - numbro.setCulture = function(newCulture, fallbackCulture) { - var key = newCulture, - suffix = newCulture.split('-')[1], - matchingCulture = null; - if (!cultures[key]) { - if (suffix) { - Object.keys(cultures).forEach(function(language) { - if (!matchingCulture && language.split('-')[1] === suffix) { - matchingCulture = language; - } - }); - } - - key = matchingCulture || fallbackCulture || 'en-US'; - } - chooseCulture(key); - }; - - /** - * This function will load languages and then set the global language. If - * no arguments are passed in, it will simply return the current global - * language key. - * - * @deprecated Since in version 1.6.0. It will be deleted in version 2.0 - * `culture` should be used instead. - */ - numbro.language = function(key, values) { - console.warn('`language` is deprecated since version 1.6.0. Use `culture` instead'); - - if (!key) { - return currentCulture; - } - - if (key && !values) { - if (!languages[key]) { - throw new Error('Unknown language : ' + key); - } - chooseCulture(key); - } - - if (values || !languages[key]) { - setCulture(key, values); - } - - return numbro; - }; - - /** - * This function will load cultures and then set the global culture. If - * no arguments are passed in, it will simply return the current global - * culture code. - */ - numbro.culture = function(code, values) { - if (!code) { - return currentCulture; - } - - if (code && !values) { - if (!cultures[code]) { - throw new Error('Unknown culture : ' + code); - } - chooseCulture(code); - } - - if (values || !cultures[code]) { - setCulture(code, values); - } - - return numbro; - }; - - /** - * This function provides access to the loaded language data. If - * no arguments are passed in, it will simply return the current - * global language object. - * - * @deprecated Since in version 1.6.0. It will be deleted in version 2.0 - * `culture` should be used instead. - */ - numbro.languageData = function(key) { - console.warn('`languageData` is deprecated since version 1.6.0. Use `cultureData` instead'); - - if (!key) { - return languages[currentCulture]; - } - - if (!languages[key]) { - throw new Error('Unknown language : ' + key); - } - - return languages[key]; - }; - - /** - * This function provides access to the loaded culture data. If - * no arguments are passed in, it will simply return the current - * global culture object. - */ - numbro.cultureData = function(code) { - if (!code) { - return cultures[currentCulture]; - } - - if (!cultures[code]) { - throw new Error('Unknown culture : ' + code); - } - - return cultures[code]; - }; - - numbro.culture('en-US', enUS); - - /** - * @deprecated Since in version 1.6.0. It will be deleted in version 2.0 - * `cultures` should be used instead. - */ - numbro.languages = function() { - console.warn('`languages` is deprecated since version 1.6.0. Use `cultures` instead'); - - return languages; - }; - - numbro.cultures = function() { - return cultures; - }; - - numbro.zeroFormat = function(format) { - zeroFormat = typeof(format) === 'string' ? format : null; - }; - - numbro.defaultFormat = function(format) { - defaultFormat = typeof(format) === 'string' ? format : '0.0'; - }; - - numbro.defaultCurrencyFormat = function (format) { - defaultCurrencyFormat = typeof(format) === 'string' ? format : '0$'; - }; - - numbro.validate = function(val, culture) { - - var _decimalSep, - _thousandSep, - _currSymbol, - _valArray, - _abbrObj, - _thousandRegEx, - cultureData, - temp; - - //coerce val to string - if (typeof val !== 'string') { - val += ''; - if (console.warn) { - console.warn('Numbro.js: Value is not string. It has been co-erced to: ', val); - } - } - - //trim whitespaces from either sides - val = val.trim(); - - //replace the initial '+' or '-' sign if present - val = val.replace(/^[+-]?/, ''); - - //if val is just digits return true - if ( !! val.match(/^\d+$/)) { - return true; - } - - //if val is empty return false - if (val === '') { - return false; - } - - //get the decimal and thousands separator from numbro.cultureData - try { - //check if the culture is understood by numbro. if not, default it to current culture - cultureData = numbro.cultureData(culture); - } catch (e) { - cultureData = numbro.cultureData(numbro.culture()); - } - - //setup the delimiters and currency symbol based on culture - _currSymbol = cultureData.currency.symbol; - _abbrObj = cultureData.abbreviations; - _decimalSep = cultureData.delimiters.decimal; - if (cultureData.delimiters.thousands === '.') { - _thousandSep = '\\.'; - } else { - _thousandSep = cultureData.delimiters.thousands; - } - - // validating currency symbol - temp = val.match(/^[^\d\.\,]+/); - if (temp !== null) { - val = val.substr(1); - if (temp[0] !== _currSymbol) { - return false; - } - } - - //validating abbreviation symbol - temp = val.match(/[^\d]+$/); - if (temp !== null) { - val = val.slice(0, -1); - if (temp[0] !== _abbrObj.thousand && temp[0] !== _abbrObj.million && - temp[0] !== _abbrObj.billion && temp[0] !== _abbrObj.trillion) { - return false; - } - } - - _thousandRegEx = new RegExp(_thousandSep + '{2}'); - - if (!val.match(/[^\d.,]/g)) { - _valArray = val.split(_decimalSep); - if (_valArray.length > 2) { - return false; - } else { - if (_valArray.length < 2) { - return ( !! _valArray[0].match(/^\d+.*\d$/) && !_valArray[0].match(_thousandRegEx)); - } else { - if (_valArray[0] === '') { - // for values without leading zero eg. .984 - return (!_valArray[0].match(_thousandRegEx) && - !!_valArray[1].match(/^\d+$/)); - - } else if (_valArray[0].length === 1) { - return ( !! _valArray[0].match(/^\d+$/) && - !_valArray[0].match(_thousandRegEx) && - !! _valArray[1].match(/^\d+$/)); - } else { - return ( !! _valArray[0].match(/^\d+.*\d$/) && - !_valArray[0].match(_thousandRegEx) && - !! _valArray[1].match(/^\d+$/)); - } - } - } - } - - return false; - }; - - /** - * * @deprecated Since in version 1.6.0. It will be deleted in version 2.0 - * `loadCulturesInNode` should be used instead. - */ - numbro.loadLanguagesInNode = function() { - console.warn('`loadLanguagesInNode` is deprecated since version 1.6.0. Use `loadCulturesInNode` instead'); - - numbro.loadCulturesInNode(); - }; - - numbro.loadCulturesInNode = function() { - // TODO: Rename the folder in 2.0.0 - var cultures = __webpack_require__(157); - - for(var langLocaleCode in cultures) { - if(langLocaleCode) { - numbro.culture(langLocaleCode, cultures[langLocaleCode]); - } - } - }; - - /************************************ - Helpers - ************************************/ - - function setCulture(code, values) { - cultures[code] = values; - } - - function chooseCulture(code) { - currentCulture = code; - var defaults = cultures[code].defaults; - if (defaults && defaults.format) { - numbro.defaultFormat(defaults.format); - } - if (defaults && defaults.currencyFormat) { - numbro.defaultCurrencyFormat(defaults.currencyFormat); - } - } - - function inNodejsRuntime() { - return (typeof process !== 'undefined') && - (process.browser === undefined) && - process.title && - ( - process.title.indexOf('node') !== -1 || - process.title.indexOf('meteor-tool') > 0 || - process.title === 'grunt' || - process.title === 'gulp' - ) && - ("function" !== 'undefined'); - } - - /************************************ - Floating-point helpers - ************************************/ - - // The floating-point helper functions and implementation - // borrows heavily from sinful.js: http://guipn.github.io/sinful.js/ - - /** - * Array.prototype.reduce for browsers that don't support it - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce#Compatibility - */ - if ('function' !== typeof Array.prototype.reduce) { - Array.prototype.reduce = function(callback, optInitialValue) { - - if (null === this || 'undefined' === typeof this) { - // At the moment all modern browsers, that support strict mode, have - // native implementation of Array.prototype.reduce. For instance, IE8 - // does not support strict mode, so this check is actually useless. - throw new TypeError('Array.prototype.reduce called on null or undefined'); - } - - if ('function' !== typeof callback) { - throw new TypeError(callback + ' is not a function'); - } - - var index, - value, - length = this.length >>> 0, - isValueSet = false; - - if (1 < arguments.length) { - value = optInitialValue; - isValueSet = true; - } - - for (index = 0; length > index; ++index) { - if (this.hasOwnProperty(index)) { - if (isValueSet) { - value = callback(value, this[index], index, this); - } else { - value = this[index]; - isValueSet = true; - } - } - } - - if (!isValueSet) { - throw new TypeError('Reduce of empty array with no initial value'); - } - - return value; - }; - } - - - /** - * Computes the multiplier necessary to make x >= 1, - * effectively eliminating miscalculations caused by - * finite precision. - */ - function multiplier(x) { - var parts = x.toString().split('.'); - if (parts.length < 2) { - return 1; - } - return Math.pow(10, parts[1].length); - } - - /** - * Given a variable number of arguments, returns the maximum - * multiplier that must be used to normalize an operation involving - * all of them. - */ - function correctionFactor() { - var args = Array.prototype.slice.call(arguments); - return args.reduce(function(prev, next) { - var mp = multiplier(prev), - mn = multiplier(next); - return mp > mn ? mp : mn; - }, -Infinity); - } - - /************************************ - Numbro Prototype - ************************************/ - - - numbro.fn = Numbro.prototype = { - - clone: function() { - return numbro(this); - }, - - format: function(inputString, roundingFunction) { - return formatNumbro(this, - inputString ? inputString : defaultFormat, - (roundingFunction !== undefined) ? roundingFunction : Math.round - ); - }, - - formatCurrency: function(inputString, roundingFunction) { - return formatCurrency(this, - cultures[currentCulture].currency.symbol, - inputString ? inputString : defaultCurrencyFormat, - (roundingFunction !== undefined) ? roundingFunction : Math.round - ); - }, - - formatForeignCurrency: function(currencySymbol, inputString, roundingFunction) { - return formatForeignCurrency(this, - currencySymbol, - inputString ? inputString : defaultCurrencyFormat, - (roundingFunction !== undefined) ? roundingFunction : Math.round - ); - }, - - unformat: function(inputString) { - if (typeof inputString === 'number') { - return inputString; - } else if (typeof inputString === 'string') { - var result = unformatNumbro(this, inputString); - - // Any unparseable string (represented as NaN in the result) is - // converted into undefined. - return isNaN(result) ? undefined : result; - } else { - return undefined; - } - }, - - binaryByteUnits: function() { - return formatByteUnits(this._value, bytes.binary.suffixes, bytes.binary.scale).suffix; - }, - - byteUnits: function() { - return formatByteUnits(this._value, bytes.general.suffixes, bytes.general.scale).suffix; - }, - - decimalByteUnits: function() { - return formatByteUnits(this._value, bytes.decimal.suffixes, bytes.decimal.scale).suffix; - }, - - value: function() { - return this._value; - }, - - valueOf: function() { - return this._value; - }, - - set: function(value) { - this._value = Number(value); - return this; - }, - - add: function(value) { - var corrFactor = correctionFactor.call(null, this._value, value); - - function cback(accum, curr) { - return accum + corrFactor * curr; - } - this._value = [this._value, value].reduce(cback, 0) / corrFactor; - return this; - }, - - subtract: function(value) { - var corrFactor = correctionFactor.call(null, this._value, value); - - function cback(accum, curr) { - return accum - corrFactor * curr; - } - this._value = [value].reduce(cback, this._value * corrFactor) / corrFactor; - return this; - }, - - multiply: function(value) { - function cback(accum, curr) { - var corrFactor = correctionFactor(accum, curr), - result = accum * corrFactor; - result *= curr * corrFactor; - result /= corrFactor * corrFactor; - return result; - } - this._value = [this._value, value].reduce(cback, 1); - return this; - }, - - divide: function(value) { - function cback(accum, curr) { - var corrFactor = correctionFactor(accum, curr); - return (accum * corrFactor) / (curr * corrFactor); - } - this._value = [this._value, value].reduce(cback); - return this; - }, - - difference: function(value) { - return Math.abs(numbro(this._value).subtract(value).value()); - } - - }; - - /************************************ - Exposing Numbro - ************************************/ - - if (inNodejsRuntime()) { - //Todo: Rename the folder in 2.0.0 - numbro.loadCulturesInNode(); - } - - // CommonJS module is defined - if (hasModule) { - module.exports = numbro; - } else { - /*global ender:false */ - if (typeof ender === 'undefined') { - // here, `this` means `window` in the browser, or `global` on the server - // add `numbro` as a global object via a string identifier, - // for Closure Compiler 'advanced' mode - this.numbro = numbro; - } - - /*global define:false */ - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() { - return numbro; - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } - } - -}.call(typeof window === 'undefined' ? this : window)); - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(188))) - -/***/ }), -/* 187 */ -/***/ (function(module, exports, __webpack_require__) { - -/*! - * Pikaday - * - * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday - */ - -(function (root, factory) -{ - 'use strict'; - - var moment; - if (true) { - // CommonJS module - // Load moment.js as an optional dependency - try { moment = __webpack_require__(0); } catch (e) {} - module.exports = factory(moment); - } else if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(function (req) - { - // Load moment.js as an optional dependency - var id = 'moment'; - try { moment = req(id); } catch (e) {} - return factory(moment); - }); - } else { - root.Pikaday = factory(root.moment); - } -}(this, function (moment) -{ - 'use strict'; - - /** - * feature detection and helper functions - */ - var hasMoment = typeof moment === 'function', - - hasEventListeners = !!window.addEventListener, - - document = window.document, - - sto = window.setTimeout, - - addEvent = function(el, e, callback, capture) - { - if (hasEventListeners) { - el.addEventListener(e, callback, !!capture); - } else { - el.attachEvent('on' + e, callback); - } - }, - - removeEvent = function(el, e, callback, capture) - { - if (hasEventListeners) { - el.removeEventListener(e, callback, !!capture); - } else { - el.detachEvent('on' + e, callback); - } - }, - - fireEvent = function(el, eventName, data) - { - var ev; - - if (document.createEvent) { - ev = document.createEvent('HTMLEvents'); - ev.initEvent(eventName, true, false); - ev = extend(ev, data); - el.dispatchEvent(ev); - } else if (document.createEventObject) { - ev = document.createEventObject(); - ev = extend(ev, data); - el.fireEvent('on' + eventName, ev); - } - }, - - trim = function(str) - { - return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g,''); - }, - - hasClass = function(el, cn) - { - return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1; - }, - - addClass = function(el, cn) - { - if (!hasClass(el, cn)) { - el.className = (el.className === '') ? cn : el.className + ' ' + cn; - } - }, - - removeClass = function(el, cn) - { - el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' ')); - }, - - isArray = function(obj) - { - return (/Array/).test(Object.prototype.toString.call(obj)); - }, - - isDate = function(obj) - { - return (/Date/).test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime()); - }, - - isWeekend = function(date) - { - var day = date.getDay(); - return day === 0 || day === 6; - }, - - isLeapYear = function(year) - { - // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951 - return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; - }, - - getDaysInMonth = function(year, month) - { - return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; - }, - - setToStartOfDay = function(date) - { - if (isDate(date)) date.setHours(0,0,0,0); - }, - - compareDates = function(a,b) - { - // weak date comparison (use setToStartOfDay(date) to ensure correct result) - return a.getTime() === b.getTime(); - }, - - extend = function(to, from, overwrite) - { - var prop, hasProp; - for (prop in from) { - hasProp = to[prop] !== undefined; - if (hasProp && typeof from[prop] === 'object' && from[prop] !== null && from[prop].nodeName === undefined) { - if (isDate(from[prop])) { - if (overwrite) { - to[prop] = new Date(from[prop].getTime()); - } - } - else if (isArray(from[prop])) { - if (overwrite) { - to[prop] = from[prop].slice(0); - } - } else { - to[prop] = extend({}, from[prop], overwrite); - } - } else if (overwrite || !hasProp) { - to[prop] = from[prop]; - } - } - return to; - }, - - adjustCalendar = function(calendar) { - if (calendar.month < 0) { - calendar.year -= Math.ceil(Math.abs(calendar.month)/12); - calendar.month += 12; - } - if (calendar.month > 11) { - calendar.year += Math.floor(Math.abs(calendar.month)/12); - calendar.month -= 12; - } - return calendar; - }, - - /** - * defaults and localisation - */ - defaults = { - - // bind the picker to a form field - field: null, - - // automatically show/hide the picker on `field` focus (default `true` if `field` is set) - bound: undefined, - - // position of the datepicker, relative to the field (default to bottom & left) - // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position) - position: 'bottom left', - - // automatically fit in the viewport even if it means repositioning from the position option - reposition: true, - - // the default output format for `.toString()` and `field` value - format: 'YYYY-MM-DD', - - // the initial date to view when first opened - defaultDate: null, - - // make the `defaultDate` the initial selected value - setDefaultDate: false, - - // first day of week (0: Sunday, 1: Monday etc) - firstDay: 0, - - // the default flag for moment's strict date parsing - formatStrict: false, - - // the minimum/earliest date that can be selected - minDate: null, - // the maximum/latest date that can be selected - maxDate: null, - - // number of years either side, or array of upper/lower range - yearRange: 10, - - // show week numbers at head of row - showWeekNumber: false, - - // used internally (don't config outside) - minYear: 0, - maxYear: 9999, - minMonth: undefined, - maxMonth: undefined, - - startRange: null, - endRange: null, - - isRTL: false, - - // Additional text to append to the year in the calendar title - yearSuffix: '', - - // Render the month after year in the calendar title - showMonthAfterYear: false, - - // Render days of the calendar grid that fall in the next or previous month - showDaysInNextAndPreviousMonths: false, - - // how many months are visible - numberOfMonths: 1, - - // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`) - // only used for the first display or when a selected date is not visible - mainCalendar: 'left', - - // Specify a DOM element to render the calendar in - container: undefined, - - // internationalization - i18n: { - previousMonth : 'Previous Month', - nextMonth : 'Next Month', - months : ['January','February','March','April','May','June','July','August','September','October','November','December'], - weekdays : ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'], - weekdaysShort : ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'] - }, - - // Theme Classname - theme: null, - - // callback function - onSelect: null, - onOpen: null, - onClose: null, - onDraw: null - }, - - - /** - * templating functions to abstract HTML rendering - */ - renderDayName = function(opts, day, abbr) - { - day += opts.firstDay; - while (day >= 7) { - day -= 7; - } - return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day]; - }, - - renderDay = function(opts) - { - var arr = []; - var ariaSelected = 'false'; - if (opts.isEmpty) { - if (opts.showDaysInNextAndPreviousMonths) { - arr.push('is-outside-current-month'); - } else { - return ''; - } - } - if (opts.isDisabled) { - arr.push('is-disabled'); - } - if (opts.isToday) { - arr.push('is-today'); - } - if (opts.isSelected) { - arr.push('is-selected'); - ariaSelected = 'true'; - } - if (opts.isInRange) { - arr.push('is-inrange'); - } - if (opts.isStartRange) { - arr.push('is-startrange'); - } - if (opts.isEndRange) { - arr.push('is-endrange'); - } - return ''; - }, - - renderWeek = function (d, m, y) { - // Lifted from http://javascript.about.com/library/blweekyear.htm, lightly modified. - var onejan = new Date(y, 0, 1), - weekNum = Math.ceil((((new Date(y, m, d) - onejan) / 86400000) + onejan.getDay()+1)/7); - return ''; - }, - - renderRow = function(days, isRTL) - { - return '' + (isRTL ? days.reverse() : days).join('') + ''; - }, - - renderBody = function(rows) - { - return '' + rows.join('') + ''; - }, - - renderHead = function(opts) - { - var i, arr = []; - if (opts.showWeekNumber) { - arr.push(''); - } - for (i = 0; i < 7; i++) { - arr.push(''); - } - return '' + (opts.isRTL ? arr.reverse() : arr).join('') + ''; - }, - - renderTitle = function(instance, c, year, month, refYear, randId) - { - var i, j, arr, - opts = instance._o, - isMinYear = year === opts.minYear, - isMaxYear = year === opts.maxYear, - html = '
', - monthHtml, - yearHtml, - prev = true, - next = true; - - for (arr = [], i = 0; i < 12; i++) { - arr.push(''); - } - - monthHtml = '
' + opts.i18n.months[month] + '
'; - - if (isArray(opts.yearRange)) { - i = opts.yearRange[0]; - j = opts.yearRange[1] + 1; - } else { - i = year - opts.yearRange; - j = 1 + year + opts.yearRange; - } - - for (arr = []; i < j && i <= opts.maxYear; i++) { - if (i >= opts.minYear) { - arr.push(''); - } - } - yearHtml = '
' + year + opts.yearSuffix + '
'; - - if (opts.showMonthAfterYear) { - html += yearHtml + monthHtml; - } else { - html += monthHtml + yearHtml; - } - - if (isMinYear && (month === 0 || opts.minMonth >= month)) { - prev = false; - } - - if (isMaxYear && (month === 11 || opts.maxMonth <= month)) { - next = false; - } - - if (c === 0) { - html += ''; - } - if (c === (instance._o.numberOfMonths - 1) ) { - html += ''; - } - - return html += '
'; - }, - - renderTable = function(opts, data, randId) - { - return '
' + - '' + - '' + weekNum + '
' + renderDayName(opts, i, true) + '
' + renderHead(opts) + renderBody(data) + '
'; - }, - - - /** - * Pikaday constructor - */ - Pikaday = function(options) - { - var self = this, - opts = self.config(options); - - self._onMouseDown = function(e) - { - if (!self._v) { - return; - } - e = e || window.event; - var target = e.target || e.srcElement; - if (!target) { - return; - } - - if (!hasClass(target, 'is-disabled')) { - if (hasClass(target, 'pika-button') && !hasClass(target, 'is-empty') && !hasClass(target.parentNode, 'is-disabled')) { - self.setDate(new Date(target.getAttribute('data-pika-year'), target.getAttribute('data-pika-month'), target.getAttribute('data-pika-day'))); - if (opts.bound) { - sto(function() { - self.hide(); - if (opts.field) { - opts.field.blur(); - } - }, 100); - } - } - else if (hasClass(target, 'pika-prev')) { - self.prevMonth(); - } - else if (hasClass(target, 'pika-next')) { - self.nextMonth(); - } - } - if (!hasClass(target, 'pika-select')) { - // if this is touch event prevent mouse events emulation - if (e.preventDefault) { - e.preventDefault(); - } else { - e.returnValue = false; - return false; - } - } else { - self._c = true; - } - }; - - self._onChange = function(e) - { - e = e || window.event; - var target = e.target || e.srcElement; - if (!target) { - return; - } - if (hasClass(target, 'pika-select-month')) { - self.gotoMonth(target.value); - } - else if (hasClass(target, 'pika-select-year')) { - self.gotoYear(target.value); - } - }; - - self._onKeyChange = function(e) - { - e = e || window.event; - - if (self.isVisible()) { - - switch(e.keyCode){ - case 13: - case 27: - opts.field.blur(); - break; - case 37: - e.preventDefault(); - self.adjustDate('subtract', 1); - break; - case 38: - self.adjustDate('subtract', 7); - break; - case 39: - self.adjustDate('add', 1); - break; - case 40: - self.adjustDate('add', 7); - break; - } - } - }; - - self._onInputChange = function(e) - { - var date; - - if (e.firedBy === self) { - return; - } - if (hasMoment) { - date = moment(opts.field.value, opts.format, opts.formatStrict); - date = (date && date.isValid()) ? date.toDate() : null; - } - else { - date = new Date(Date.parse(opts.field.value)); - } - if (isDate(date)) { - self.setDate(date); - } - if (!self._v) { - self.show(); - } - }; - - self._onInputFocus = function() - { - self.show(); - }; - - self._onInputClick = function() - { - self.show(); - }; - - self._onInputBlur = function() - { - // IE allows pika div to gain focus; catch blur the input field - var pEl = document.activeElement; - do { - if (hasClass(pEl, 'pika-single')) { - return; - } - } - while ((pEl = pEl.parentNode)); - - if (!self._c) { - self._b = sto(function() { - self.hide(); - }, 50); - } - self._c = false; - }; - - self._onClick = function(e) - { - e = e || window.event; - var target = e.target || e.srcElement, - pEl = target; - if (!target) { - return; - } - if (!hasEventListeners && hasClass(target, 'pika-select')) { - if (!target.onchange) { - target.setAttribute('onchange', 'return;'); - addEvent(target, 'change', self._onChange); - } - } - do { - if (hasClass(pEl, 'pika-single') || pEl === opts.trigger) { - return; - } - } - while ((pEl = pEl.parentNode)); - if (self._v && target !== opts.trigger && pEl !== opts.trigger) { - self.hide(); - } - }; - - self.el = document.createElement('div'); - self.el.className = 'pika-single' + (opts.isRTL ? ' is-rtl' : '') + (opts.theme ? ' ' + opts.theme : ''); - - addEvent(self.el, 'mousedown', self._onMouseDown, true); - addEvent(self.el, 'touchend', self._onMouseDown, true); - addEvent(self.el, 'change', self._onChange); - addEvent(document, 'keydown', self._onKeyChange); - - if (opts.field) { - if (opts.container) { - opts.container.appendChild(self.el); - } else if (opts.bound) { - document.body.appendChild(self.el); - } else { - opts.field.parentNode.insertBefore(self.el, opts.field.nextSibling); - } - addEvent(opts.field, 'change', self._onInputChange); - - if (!opts.defaultDate) { - if (hasMoment && opts.field.value) { - opts.defaultDate = moment(opts.field.value, opts.format).toDate(); - } else { - opts.defaultDate = new Date(Date.parse(opts.field.value)); - } - opts.setDefaultDate = true; - } - } - - var defDate = opts.defaultDate; - - if (isDate(defDate)) { - if (opts.setDefaultDate) { - self.setDate(defDate, true); - } else { - self.gotoDate(defDate); - } - } else { - self.gotoDate(new Date()); - } - - if (opts.bound) { - this.hide(); - self.el.className += ' is-bound'; - addEvent(opts.trigger, 'click', self._onInputClick); - addEvent(opts.trigger, 'focus', self._onInputFocus); - addEvent(opts.trigger, 'blur', self._onInputBlur); - } else { - this.show(); - } - }; - - - /** - * public Pikaday API - */ - Pikaday.prototype = { - - - /** - * configure functionality - */ - config: function(options) - { - if (!this._o) { - this._o = extend({}, defaults, true); - } - - var opts = extend(this._o, options, true); - - opts.isRTL = !!opts.isRTL; - - opts.field = (opts.field && opts.field.nodeName) ? opts.field : null; - - opts.theme = (typeof opts.theme) === 'string' && opts.theme ? opts.theme : null; - - opts.bound = !!(opts.bound !== undefined ? opts.field && opts.bound : opts.field); - - opts.trigger = (opts.trigger && opts.trigger.nodeName) ? opts.trigger : opts.field; - - opts.disableWeekends = !!opts.disableWeekends; - - opts.disableDayFn = (typeof opts.disableDayFn) === 'function' ? opts.disableDayFn : null; - - var nom = parseInt(opts.numberOfMonths, 10) || 1; - opts.numberOfMonths = nom > 4 ? 4 : nom; - - if (!isDate(opts.minDate)) { - opts.minDate = false; - } - if (!isDate(opts.maxDate)) { - opts.maxDate = false; - } - if ((opts.minDate && opts.maxDate) && opts.maxDate < opts.minDate) { - opts.maxDate = opts.minDate = false; - } - if (opts.minDate) { - this.setMinDate(opts.minDate); - } - if (opts.maxDate) { - this.setMaxDate(opts.maxDate); - } - - if (isArray(opts.yearRange)) { - var fallback = new Date().getFullYear() - 10; - opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback; - opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback; - } else { - opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange; - if (opts.yearRange > 100) { - opts.yearRange = 100; - } - } - - return opts; - }, - - /** - * return a formatted string of the current selection (using Moment.js if available) - */ - toString: function(format) - { - return !isDate(this._d) ? '' : hasMoment ? moment(this._d).format(format || this._o.format) : this._d.toDateString(); - }, - - /** - * return a Moment.js object of the current selection (if available) - */ - getMoment: function() - { - return hasMoment ? moment(this._d) : null; - }, - - /** - * set the current selection from a Moment.js object (if available) - */ - setMoment: function(date, preventOnSelect) - { - if (hasMoment && moment.isMoment(date)) { - this.setDate(date.toDate(), preventOnSelect); - } - }, - - /** - * return a Date object of the current selection with fallback for the current date - */ - getDate: function() - { - return isDate(this._d) ? new Date(this._d.getTime()) : new Date(); - }, - - /** - * set the current selection - */ - setDate: function(date, preventOnSelect) - { - if (!date) { - this._d = null; - - if (this._o.field) { - this._o.field.value = ''; - fireEvent(this._o.field, 'change', { firedBy: this }); - } - - return this.draw(); - } - if (typeof date === 'string') { - date = new Date(Date.parse(date)); - } - if (!isDate(date)) { - return; - } - - var min = this._o.minDate, - max = this._o.maxDate; - - if (isDate(min) && date < min) { - date = min; - } else if (isDate(max) && date > max) { - date = max; - } - - this._d = new Date(date.getTime()); - setToStartOfDay(this._d); - this.gotoDate(this._d); - - if (this._o.field) { - this._o.field.value = this.toString(); - fireEvent(this._o.field, 'change', { firedBy: this }); - } - if (!preventOnSelect && typeof this._o.onSelect === 'function') { - this._o.onSelect.call(this, this.getDate()); - } - }, - - /** - * change view to a specific date - */ - gotoDate: function(date) - { - var newCalendar = true; - - if (!isDate(date)) { - return; - } - - if (this.calendars) { - var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1), - lastVisibleDate = new Date(this.calendars[this.calendars.length-1].year, this.calendars[this.calendars.length-1].month, 1), - visibleDate = date.getTime(); - // get the end of the month - lastVisibleDate.setMonth(lastVisibleDate.getMonth()+1); - lastVisibleDate.setDate(lastVisibleDate.getDate()-1); - newCalendar = (visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate); - } - - if (newCalendar) { - this.calendars = [{ - month: date.getMonth(), - year: date.getFullYear() - }]; - if (this._o.mainCalendar === 'right') { - this.calendars[0].month += 1 - this._o.numberOfMonths; - } - } - - this.adjustCalendars(); - }, - - adjustDate: function(sign, days) { - - var day = this.getDate(); - var difference = parseInt(days)*24*60*60*1000; - - var newDay; - - if (sign === 'add') { - newDay = new Date(day.valueOf() + difference); - } else if (sign === 'subtract') { - newDay = new Date(day.valueOf() - difference); - } - - if (hasMoment) { - if (sign === 'add') { - newDay = moment(day).add(days, "days").toDate(); - } else if (sign === 'subtract') { - newDay = moment(day).subtract(days, "days").toDate(); - } - } - - this.setDate(newDay); - }, - - adjustCalendars: function() { - this.calendars[0] = adjustCalendar(this.calendars[0]); - for (var c = 1; c < this._o.numberOfMonths; c++) { - this.calendars[c] = adjustCalendar({ - month: this.calendars[0].month + c, - year: this.calendars[0].year - }); - } - this.draw(); - }, - - gotoToday: function() - { - this.gotoDate(new Date()); - }, - - /** - * change view to a specific month (zero-index, e.g. 0: January) - */ - gotoMonth: function(month) - { - if (!isNaN(month)) { - this.calendars[0].month = parseInt(month, 10); - this.adjustCalendars(); - } - }, - - nextMonth: function() - { - this.calendars[0].month++; - this.adjustCalendars(); - }, - - prevMonth: function() - { - this.calendars[0].month--; - this.adjustCalendars(); - }, - - /** - * change view to a specific full year (e.g. "2012") - */ - gotoYear: function(year) - { - if (!isNaN(year)) { - this.calendars[0].year = parseInt(year, 10); - this.adjustCalendars(); - } - }, - - /** - * change the minDate - */ - setMinDate: function(value) - { - if(value instanceof Date) { - setToStartOfDay(value); - this._o.minDate = value; - this._o.minYear = value.getFullYear(); - this._o.minMonth = value.getMonth(); - } else { - this._o.minDate = defaults.minDate; - this._o.minYear = defaults.minYear; - this._o.minMonth = defaults.minMonth; - this._o.startRange = defaults.startRange; - } - - this.draw(); - }, - - /** - * change the maxDate - */ - setMaxDate: function(value) - { - if(value instanceof Date) { - setToStartOfDay(value); - this._o.maxDate = value; - this._o.maxYear = value.getFullYear(); - this._o.maxMonth = value.getMonth(); - } else { - this._o.maxDate = defaults.maxDate; - this._o.maxYear = defaults.maxYear; - this._o.maxMonth = defaults.maxMonth; - this._o.endRange = defaults.endRange; - } - - this.draw(); - }, - - setStartRange: function(value) - { - this._o.startRange = value; - }, - - setEndRange: function(value) - { - this._o.endRange = value; - }, - - /** - * refresh the HTML - */ - draw: function(force) - { - if (!this._v && !force) { - return; - } - var opts = this._o, - minYear = opts.minYear, - maxYear = opts.maxYear, - minMonth = opts.minMonth, - maxMonth = opts.maxMonth, - html = '', - randId; - - if (this._y <= minYear) { - this._y = minYear; - if (!isNaN(minMonth) && this._m < minMonth) { - this._m = minMonth; - } - } - if (this._y >= maxYear) { - this._y = maxYear; - if (!isNaN(maxMonth) && this._m > maxMonth) { - this._m = maxMonth; - } - } - - randId = 'pika-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2); - - for (var c = 0; c < opts.numberOfMonths; c++) { - html += '
' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId) + '
'; - } - - this.el.innerHTML = html; - - if (opts.bound) { - if(opts.field.type !== 'hidden') { - sto(function() { - opts.trigger.focus(); - }, 1); - } - } - - if (typeof this._o.onDraw === 'function') { - this._o.onDraw(this); - } - - if (opts.bound) { - // let the screen reader user know to use arrow keys - opts.field.setAttribute('aria-label', 'Use the arrow keys to pick a date'); - } - }, - - adjustPosition: function() - { - var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect; - - if (this._o.container) return; - - this.el.style.position = 'absolute'; - - field = this._o.trigger; - pEl = field; - width = this.el.offsetWidth; - height = this.el.offsetHeight; - viewportWidth = window.innerWidth || document.documentElement.clientWidth; - viewportHeight = window.innerHeight || document.documentElement.clientHeight; - scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop; - - if (typeof field.getBoundingClientRect === 'function') { - clientRect = field.getBoundingClientRect(); - left = clientRect.left + window.pageXOffset; - top = clientRect.bottom + window.pageYOffset; - } else { - left = pEl.offsetLeft; - top = pEl.offsetTop + pEl.offsetHeight; - while((pEl = pEl.offsetParent)) { - left += pEl.offsetLeft; - top += pEl.offsetTop; - } - } - - // default position is bottom & left - if ((this._o.reposition && left + width > viewportWidth) || - ( - this._o.position.indexOf('right') > -1 && - left - width + field.offsetWidth > 0 - ) - ) { - left = left - width + field.offsetWidth; - } - if ((this._o.reposition && top + height > viewportHeight + scrollTop) || - ( - this._o.position.indexOf('top') > -1 && - top - height - field.offsetHeight > 0 - ) - ) { - top = top - height - field.offsetHeight; - } - - this.el.style.left = left + 'px'; - this.el.style.top = top + 'px'; - }, - - /** - * render HTML for a particular month - */ - render: function(year, month, randId) - { - var opts = this._o, - now = new Date(), - days = getDaysInMonth(year, month), - before = new Date(year, month, 1).getDay(), - data = [], - row = []; - setToStartOfDay(now); - if (opts.firstDay > 0) { - before -= opts.firstDay; - if (before < 0) { - before += 7; - } - } - var previousMonth = month === 0 ? 11 : month - 1, - nextMonth = month === 11 ? 0 : month + 1, - yearOfPreviousMonth = month === 0 ? year - 1 : year, - yearOfNextMonth = month === 11 ? year + 1 : year, - daysInPreviousMonth = getDaysInMonth(yearOfPreviousMonth, previousMonth); - var cells = days + before, - after = cells; - while(after > 7) { - after -= 7; - } - cells += 7 - after; - for (var i = 0, r = 0; i < cells; i++) - { - var day = new Date(year, month, 1 + (i - before)), - isSelected = isDate(this._d) ? compareDates(day, this._d) : false, - isToday = compareDates(day, now), - isEmpty = i < before || i >= (days + before), - dayNumber = 1 + (i - before), - monthNumber = month, - yearNumber = year, - isStartRange = opts.startRange && compareDates(opts.startRange, day), - isEndRange = opts.endRange && compareDates(opts.endRange, day), - isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange, - isDisabled = (opts.minDate && day < opts.minDate) || - (opts.maxDate && day > opts.maxDate) || - (opts.disableWeekends && isWeekend(day)) || - (opts.disableDayFn && opts.disableDayFn(day)); - - if (isEmpty) { - if (i < before) { - dayNumber = daysInPreviousMonth + dayNumber; - monthNumber = previousMonth; - yearNumber = yearOfPreviousMonth; - } else { - dayNumber = dayNumber - days; - monthNumber = nextMonth; - yearNumber = yearOfNextMonth; - } - } - - var dayConfig = { - day: dayNumber, - month: monthNumber, - year: yearNumber, - isSelected: isSelected, - isToday: isToday, - isDisabled: isDisabled, - isEmpty: isEmpty, - isStartRange: isStartRange, - isEndRange: isEndRange, - isInRange: isInRange, - showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths - }; - - row.push(renderDay(dayConfig)); - - if (++r === 7) { - if (opts.showWeekNumber) { - row.unshift(renderWeek(i - before, month, year)); - } - data.push(renderRow(row, opts.isRTL)); - row = []; - r = 0; - } - } - return renderTable(opts, data, randId); - }, - - isVisible: function() - { - return this._v; - }, - - show: function() - { - if (!this.isVisible()) { - removeClass(this.el, 'is-hidden'); - this._v = true; - this.draw(); - if (this._o.bound) { - addEvent(document, 'click', this._onClick); - this.adjustPosition(); - } - if (typeof this._o.onOpen === 'function') { - this._o.onOpen.call(this); - } - } - }, - - hide: function() - { - var v = this._v; - if (v !== false) { - if (this._o.bound) { - removeEvent(document, 'click', this._onClick); - } - this.el.style.position = 'static'; // reset - this.el.style.left = 'auto'; - this.el.style.top = 'auto'; - addClass(this.el, 'is-hidden'); - this._v = false; - if (v !== undefined && typeof this._o.onClose === 'function') { - this._o.onClose.call(this); - } - } - }, - - /** - * GAME OVER - */ - destroy: function() - { - this.hide(); - removeEvent(this.el, 'mousedown', this._onMouseDown, true); - removeEvent(this.el, 'touchend', this._onMouseDown, true); - removeEvent(this.el, 'change', this._onChange); - if (this._o.field) { - removeEvent(this._o.field, 'change', this._onInputChange); - if (this._o.bound) { - removeEvent(this._o.trigger, 'click', this._onInputClick); - removeEvent(this._o.trigger, 'focus', this._onInputFocus); - removeEvent(this._o.trigger, 'blur', this._onInputBlur); - } - } - if (this.el.parentNode) { - this.el.parentNode.removeChild(this.el); - } - } - - }; - - return Pikaday; - -})); - - -/***/ }), -/* 188 */ -/***/ (function(module, exports) { - -// shim for using process in browser -var process = module.exports = {}; - -// cached from whatever global is present so that test runners that stub it -// don't break things. But we need to wrap it in a try catch in case it is -// wrapped in strict mode code which doesn't define any globals. It's inside a -// function because try/catches deoptimize in certain engines. - -var cachedSetTimeout; -var cachedClearTimeout; - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -} ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} - -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; -process.prependListener = noop; -process.prependOnceListener = noop; - -process.listeners = function (name) { return [] } - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; - - -/***/ }), -/* 189 */ -/***/ (function(module, exports) { - -module.exports = function(module) { - if(!module.webpackPolyfill) { - module.deprecate = function() {}; - module.paths = []; - // module.parent = undefined by default - if(!module.children) module.children = []; - Object.defineProperty(module, "loaded", { - enumerable: true, - get: function() { - return module.l; - } - }); - Object.defineProperty(module, "id", { - enumerable: true, - get: function() { - return module.i; - } - }); - module.webpackPolyfill = 1; - } - return module; -}; - - -/***/ }) -/******/ ]); -}); \ No newline at end of file diff --git a/config/helpers.js b/config/helpers.js deleted file mode 100644 index 7cda8bc..0000000 --- a/config/helpers.js +++ /dev/null @@ -1,10 +0,0 @@ -var path = require('path'); - -var _root = path.resolve(__dirname, '..'); - -function root(args) { - args = Array.prototype.slice.call(arguments, 0); - return path.join.apply(path, [_root].concat(args)); -} - -exports.root = root; \ No newline at end of file diff --git a/config/karma-test-shim.js b/config/karma-test-shim.js deleted file mode 100644 index a94ea17..0000000 --- a/config/karma-test-shim.js +++ /dev/null @@ -1,23 +0,0 @@ -Error.stackTraceLimit = Infinity; - -require('core-js/es6'); -require('core-js/es7/reflect'); - -require('handsontable'); - -require('zone.js/dist/zone'); -require('zone.js/dist/long-stack-trace-zone'); -require('zone.js/dist/proxy'); -require('zone.js/dist/sync-test'); -require('zone.js/dist/jasmine-patch'); -require('zone.js/dist/async-test'); -require('zone.js/dist/fake-async-test'); - -var appContext = require.context('../tests', true, /\.spec\.ts/); - -appContext.keys().forEach(appContext); - -var testing = require('@angular/core/testing'); -var browser = require('@angular/platform-browser-dynamic/testing'); - -testing.TestBed.initTestEnvironment(browser.BrowserDynamicTestingModule, browser.platformBrowserDynamicTesting()); \ No newline at end of file diff --git a/config/karma.conf.js b/config/karma.conf.js deleted file mode 100644 index bb55d2c..0000000 --- a/config/karma.conf.js +++ /dev/null @@ -1,52 +0,0 @@ -var webpackConfig = require('./webpack.test'); - -module.exports = function (config) { - var _config = { - basePath: '', - customLaunchers: { - Chrome_travis_ci: { - base: 'Chrome', - flags: ['--no-sandbox'] - } - }, - frameworks: ['jasmine'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-firefox-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('karma-webpack'), - ], - files: [ - {pattern: './config/karma-test-shim.js', watched: false} - ], - client:{ - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - reports: [ 'html', 'lcovonly' ], - fixWebpackSourcePaths: true - }, - preprocessors: { - './config/karma-test-shim.js': ['webpack'] - }, - webpack: webpackConfig, - webpackMiddleware: { - stats: 'errors-only' - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: false, - browsers: ['Chrome'], - singleRun: true - }; - - if (process.env.TRAVIS) { - _config.browsers = ['Chrome_travis_ci']; - } - - config.set(_config); -}; \ No newline at end of file diff --git a/config/webpack.production.js b/config/webpack.production.js deleted file mode 100644 index cda791b..0000000 --- a/config/webpack.production.js +++ /dev/null @@ -1,61 +0,0 @@ -var webpack = require('webpack'); -var HtmlWebpackPlugin = require('html-webpack-plugin'); -var ExtractTextPlugin = require('extract-text-webpack-plugin'); -var helpers = require('./helpers'); - -module.exports = { - resolve: { - extensions: ['.ts', '.js'] - }, - - entry: helpers.root('index.ts'), - - output: { - path: helpers.root('bundles'), - publicPath: '/', - filename: 'index.umd.js', - libraryTarget: 'umd', - library: 'angular-handsontable' - }, - - // require those dependencies but don't bundle them - externals: [/^\@angular\//], - - module: { - rules: [ - { - test: /\.ts$/, - exclude: [ - helpers.root('node_modules/rxjs'), - helpers.root('node_modules/@angular') - ], - loaders: [ - { - loader: 'awesome-typescript-loader', - options: { - configFileName: helpers.root('tsconfig.bundles.json') - } - }, - 'angular2-template-loader', - ] - }, - { - test: /\.scss$/, - use: [ - 'raw-loader', - 'sass-loader', - ] - } - ] - }, - - plugins: [ - // Workaround for angular/angular#11580 - new webpack.ContextReplacementPlugin( - // The (\\|\/) piece accounts for path separators in *nix and Windows - /angular(\\|\/)core(\\|\/)@angular/, - helpers.root('./src'), // location of your src - {} // a map of your routes - ), - ] -}; \ No newline at end of file diff --git a/config/webpack.test.js b/config/webpack.test.js deleted file mode 100644 index 33e4b5f..0000000 --- a/config/webpack.test.js +++ /dev/null @@ -1,48 +0,0 @@ -var webpack = require('webpack'); -var helpers = require('./helpers'); - -module.exports = { - devtool: 'inline-source-map', - - resolve: { - extensions: ['.ts', '.js'], - modules: [helpers.root('src'), "node_modules"] - }, - - module: { - rules: [ - { - test: /\.ts$/, - exclude: [ - helpers.root('node_modules/rxjs'), - helpers.root('node_modules/@angular') - ], - loaders: [ - { - loader: 'awesome-typescript-loader', - options: { - configFileName: helpers.root('tsconfig.bundles.json') - } - }, - 'angular2-template-loader', - ] - }, - { - test: /\.scss$/, - use: [ - "raw-loader", - "sass-loader", - ] - } - ] - }, - - plugins: [ - new webpack.ContextReplacementPlugin( - // The (\\|\/) piece accounts for path separators in *nix and Windows - /angular(\\|\/)core(\\|\/)@angular/, - helpers.root('./src'), // location of your src - {} // a map of your routes - ) - ] -} \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 66b00e9..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './module'; -export * from './src/hot-registerer.service'; diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 60786ab..0000000 --- a/dist/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { HotTableModule } from './module'; -export { HotRegisterer } from './src/hot-registerer.service'; diff --git a/dist/index.metadata.json b/dist/index.metadata.json deleted file mode 100644 index fd6761a..0000000 --- a/dist/index.metadata.json +++ /dev/null @@ -1 +0,0 @@ -[{"__symbolic":"module","version":3,"metadata":{},"exports":[{"from":"./module"},{"from":"./src/hot-registerer.service"}]},{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./module"},{"from":"./src/hot-registerer.service"}]}] \ No newline at end of file diff --git a/dist/module.d.ts b/dist/module.d.ts deleted file mode 100644 index 2186c55..0000000 --- a/dist/module.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ModuleWithProviders } from '@angular/core'; -export declare class HotTableModule { - static forRoot(): ModuleWithProviders; -} diff --git a/dist/module.js b/dist/module.js deleted file mode 100644 index 08352b0..0000000 --- a/dist/module.js +++ /dev/null @@ -1,42 +0,0 @@ -import { NgModule } from '@angular/core'; -import { HotTableComponent } from './src/hot-table.component'; -import { HotColumnComponent } from './src/hot-column.component'; -import { HotRegisterer } from './src/hot-registerer.service'; -var HotTableModule = /** @class */ (function () { - function HotTableModule() { - } - /** - * @return {?} - */ - HotTableModule.forRoot = function () { - return { - ngModule: HotTableModule, - providers: [HotRegisterer] - }; - }; - HotTableModule.decorators = [ - { type: NgModule, args: [{ - declarations: [ - HotTableComponent, - HotColumnComponent, - ], - exports: [HotTableComponent, HotColumnComponent], - providers: [HotRegisterer], - },] }, - ]; - /** - * @nocollapse - */ - HotTableModule.ctorParameters = function () { return []; }; - return HotTableModule; -}()); -export { HotTableModule }; -function HotTableModule_tsickle_Closure_declarations() { - /** @type {?} */ - HotTableModule.decorators; - /** - * @nocollapse - * @type {?} - */ - HotTableModule.ctorParameters; -} diff --git a/dist/module.metadata.json b/dist/module.metadata.json deleted file mode 100644 index 75f8ec6..0000000 --- a/dist/module.metadata.json +++ /dev/null @@ -1 +0,0 @@ -[{"__symbolic":"module","version":3,"metadata":{"HotTableModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"declarations":[{"__symbolic":"reference","module":"./src/hot-table.component","name":"HotTableComponent"},{"__symbolic":"reference","module":"./src/hot-column.component","name":"HotColumnComponent"}],"exports":[{"__symbolic":"reference","module":"./src/hot-table.component","name":"HotTableComponent"},{"__symbolic":"reference","module":"./src/hot-column.component","name":"HotColumnComponent"}],"providers":[{"__symbolic":"reference","module":"./src/hot-registerer.service","name":"HotRegisterer"}]}]}],"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"HotTableModule"},"providers":[{"__symbolic":"reference","module":"./src/hot-registerer.service","name":"HotRegisterer"}]}}}}}},{"__symbolic":"module","version":1,"metadata":{"HotTableModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"declarations":[{"__symbolic":"reference","module":"./src/hot-table.component","name":"HotTableComponent"},{"__symbolic":"reference","module":"./src/hot-column.component","name":"HotColumnComponent"}],"exports":[{"__symbolic":"reference","module":"./src/hot-table.component","name":"HotTableComponent"},{"__symbolic":"reference","module":"./src/hot-column.component","name":"HotColumnComponent"}],"providers":[{"__symbolic":"reference","module":"./src/hot-registerer.service","name":"HotRegisterer"}]}]}],"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"HotTableModule"},"providers":[{"__symbolic":"reference","module":"./src/hot-registerer.service","name":"HotRegisterer"}]}}}}}}] \ No newline at end of file diff --git a/dist/src/hot-column.component.d.ts b/dist/src/hot-column.component.d.ts deleted file mode 100644 index 3b94b7f..0000000 --- a/dist/src/hot-column.component.d.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { Injector, OnChanges, SimpleChanges } from '@angular/core'; -export declare class HotColumnComponent implements OnChanges { - private inj; - private firstRun; - private parentComponent; - allowHtml: boolean; - allowInsertColumn: boolean; - allowInsertRow: boolean; - allowInvalid: boolean; - allowRemoveColumn: boolean; - allowRemoveRow: boolean; - autoColumnSize: boolean | object; - autoComplete: any[]; - autoRowSize: boolean | object; - autoWrapCol: boolean; - autoWrapRow: boolean; - bindRowsWithHeaders: boolean | string; - cell: any[]; - cells: (row: number, column: number, prop: object) => object; - checkedTemplate: boolean | string; - className: string | string[]; - colHeaders: boolean | string[] | ((column: number) => string); - collapsibleColumns: boolean | object[]; - columnHeaderHeight: number | number[]; - columns: object[] | ((column: number) => object); - columnSorting: boolean | object; - columnSummary: object; - colWidths: number | number[] | string | ((column: number) => number); - commentedCellClassName: string; - comments: boolean | object[]; - contextMenu: boolean | object | object[]; - copyable: boolean; - copyColsLimit: number; - copyPaste: boolean; - copyRowsLimit: number; - correctFormat: boolean; - currentColClassName: string; - currentHeaderClassName: string; - currentRowClassName: string; - customBorders: boolean | object[]; - data: any[]; - dataSchema: object; - dateFormat: string; - debug: boolean; - defaultDate: string; - disableVisualSelection: boolean | string | string[]; - dropdownMenu: boolean | object | object[]; - editor: boolean | string | (() => void); - enterBeginsEditing: boolean; - enterMoves: object | (() => void); - fillHandle: boolean | string | object; - filter: boolean; - filteringCaseSensitive: boolean; - filters: boolean; - fixedColumnsLeft: number; - fixedRowsBottom: number; - fixedRowsTop: number; - format: string; - formulas: boolean; - fragmentSelection: boolean | string; - ganttChart: object; - headerTooltips: boolean | object; - height: number | (() => number); - hiddenColumns: boolean | object; - hiddenRows: boolean | object; - invalidCellClassName: string; - label: object; - language: string; - manualColumnFreeze: boolean; - manualColumnMove: boolean | number[]; - manualColumnResize: boolean | number[]; - manualRowMove: boolean | number[]; - manualRowResize: boolean | number[]; - maxCols: number; - maxRows: number; - mergeCells: boolean | object[]; - minCols: number; - minRows: number; - minSpareCols: number; - minSpareRows: number; - multiSelect: boolean; - nestedHeaders: any[]; - noWordWrapClassName: string; - observeChanges: boolean; - observeDOMVisibility: boolean; - outsideClickDeselects: boolean | ((event: Event) => boolean); - pasteMode: string; - persistentState: boolean; - placeholder: any; - placeholderCellClassName: string; - preventOverflow: boolean | string; - readOnly: boolean; - readOnlyCellClassName: string; - renderAllRows: boolean; - renderer: string | (() => void); - rowHeaders: boolean | string[] | (() => string); - rowHeaderWidth: number | number[]; - rowHeights: number | number[] | string | ((row: number) => number); - search: boolean; - selectOptions: string[] | number[]; - skipColumnOnPaste: boolean; - sortByRelevance: boolean; - sortFunction: (sortOrder: boolean) => void; - sortIndicator: boolean; - source: any[] | (() => void); - startCols: number; - startRows: number; - stretchH: string; - strict: boolean; - tableClassName: string | string[]; - tabMoves: object; - title: string; - trimDropdown: boolean; - trimRows: boolean | number[]; - trimWhitespace: boolean; - type: string; - uncheckedTemplate: boolean | string; - undo: boolean; - validator: string | RegExp | (() => void); - viewportColumnRenderingOffset: number | string; - viewportRowRenderingOffset: number | string; - visibleRows: number; - width: number | (() => number); - wordWrap: boolean; - constructor(inj: Injector); - ngOnInit(): void; - ngOnChanges(changes: SimpleChanges): void; - ngOnDestroy(): void; -} diff --git a/dist/src/hot-column.component.js b/dist/src/hot-column.component.js deleted file mode 100644 index 6f1f70e..0000000 --- a/dist/src/hot-column.component.js +++ /dev/null @@ -1,425 +0,0 @@ -import { Component, Input, Injector, } from '@angular/core'; -import { HotTableComponent } from './hot-table.component'; -var HotColumnComponent = /** @class */ (function () { - /** - * @param {?} inj - */ - function HotColumnComponent(inj) { - this.inj = inj; - this.firstRun = true; - this.parentComponent = this.inj.get(HotTableComponent); - } - /** - * @return {?} - */ - HotColumnComponent.prototype.ngOnInit = function () { - this.firstRun = false; - this.parentComponent.addColumn(this); - }; - /** - * @param {?} changes - * @return {?} - */ - HotColumnComponent.prototype.ngOnChanges = function (changes) { - if (this.firstRun) { - return; - } - this.parentComponent.onAfterColumnsChange(); - }; - /** - * @return {?} - */ - HotColumnComponent.prototype.ngOnDestroy = function () { - this.parentComponent.removeColumn(this); - }; - HotColumnComponent.decorators = [ - { type: Component, args: [{ - selector: 'hot-column', - template: "", - },] }, - ]; - /** - * @nocollapse - */ - HotColumnComponent.ctorParameters = function () { return [ - { type: Injector, }, - ]; }; - HotColumnComponent.propDecorators = { - 'allowHtml': [{ type: Input },], - 'allowInsertColumn': [{ type: Input },], - 'allowInsertRow': [{ type: Input },], - 'allowInvalid': [{ type: Input },], - 'allowRemoveColumn': [{ type: Input },], - 'allowRemoveRow': [{ type: Input },], - 'autoColumnSize': [{ type: Input },], - 'autoComplete': [{ type: Input },], - 'autoRowSize': [{ type: Input },], - 'autoWrapCol': [{ type: Input },], - 'autoWrapRow': [{ type: Input },], - 'bindRowsWithHeaders': [{ type: Input },], - 'cell': [{ type: Input },], - 'cells': [{ type: Input },], - 'checkedTemplate': [{ type: Input },], - 'className': [{ type: Input },], - 'colHeaders': [{ type: Input },], - 'collapsibleColumns': [{ type: Input },], - 'columnHeaderHeight': [{ type: Input },], - 'columns': [{ type: Input },], - 'columnSorting': [{ type: Input },], - 'columnSummary': [{ type: Input },], - 'colWidths': [{ type: Input },], - 'commentedCellClassName': [{ type: Input },], - 'comments': [{ type: Input },], - 'contextMenu': [{ type: Input },], - 'copyable': [{ type: Input },], - 'copyColsLimit': [{ type: Input },], - 'copyPaste': [{ type: Input },], - 'copyRowsLimit': [{ type: Input },], - 'correctFormat': [{ type: Input },], - 'currentColClassName': [{ type: Input },], - 'currentHeaderClassName': [{ type: Input },], - 'currentRowClassName': [{ type: Input },], - 'customBorders': [{ type: Input },], - 'data': [{ type: Input },], - 'dataSchema': [{ type: Input },], - 'dateFormat': [{ type: Input },], - 'debug': [{ type: Input },], - 'defaultDate': [{ type: Input },], - 'disableVisualSelection': [{ type: Input },], - 'dropdownMenu': [{ type: Input },], - 'editor': [{ type: Input },], - 'enterBeginsEditing': [{ type: Input },], - 'enterMoves': [{ type: Input },], - 'fillHandle': [{ type: Input },], - 'filter': [{ type: Input },], - 'filteringCaseSensitive': [{ type: Input },], - 'filters': [{ type: Input },], - 'fixedColumnsLeft': [{ type: Input },], - 'fixedRowsBottom': [{ type: Input },], - 'fixedRowsTop': [{ type: Input },], - 'format': [{ type: Input },], - 'formulas': [{ type: Input },], - 'fragmentSelection': [{ type: Input },], - 'ganttChart': [{ type: Input },], - 'headerTooltips': [{ type: Input },], - 'height': [{ type: Input },], - 'hiddenColumns': [{ type: Input },], - 'hiddenRows': [{ type: Input },], - 'invalidCellClassName': [{ type: Input },], - 'label': [{ type: Input },], - 'language': [{ type: Input },], - 'manualColumnFreeze': [{ type: Input },], - 'manualColumnMove': [{ type: Input },], - 'manualColumnResize': [{ type: Input },], - 'manualRowMove': [{ type: Input },], - 'manualRowResize': [{ type: Input },], - 'maxCols': [{ type: Input },], - 'maxRows': [{ type: Input },], - 'mergeCells': [{ type: Input },], - 'minCols': [{ type: Input },], - 'minRows': [{ type: Input },], - 'minSpareCols': [{ type: Input },], - 'minSpareRows': [{ type: Input },], - 'multiSelect': [{ type: Input },], - 'nestedHeaders': [{ type: Input },], - 'noWordWrapClassName': [{ type: Input },], - 'observeChanges': [{ type: Input },], - 'observeDOMVisibility': [{ type: Input },], - 'outsideClickDeselects': [{ type: Input },], - 'pasteMode': [{ type: Input },], - 'persistentState': [{ type: Input },], - 'placeholder': [{ type: Input },], - 'placeholderCellClassName': [{ type: Input },], - 'preventOverflow': [{ type: Input },], - 'readOnly': [{ type: Input },], - 'readOnlyCellClassName': [{ type: Input },], - 'renderAllRows': [{ type: Input },], - 'renderer': [{ type: Input },], - 'rowHeaders': [{ type: Input },], - 'rowHeaderWidth': [{ type: Input },], - 'rowHeights': [{ type: Input },], - 'search': [{ type: Input },], - 'selectOptions': [{ type: Input },], - 'skipColumnOnPaste': [{ type: Input },], - 'sortByRelevance': [{ type: Input },], - 'sortFunction': [{ type: Input },], - 'sortIndicator': [{ type: Input },], - 'source': [{ type: Input },], - 'startCols': [{ type: Input },], - 'startRows': [{ type: Input },], - 'stretchH': [{ type: Input },], - 'strict': [{ type: Input },], - 'tableClassName': [{ type: Input },], - 'tabMoves': [{ type: Input },], - 'title': [{ type: Input },], - 'trimDropdown': [{ type: Input },], - 'trimRows': [{ type: Input },], - 'trimWhitespace': [{ type: Input },], - 'type': [{ type: Input },], - 'uncheckedTemplate': [{ type: Input },], - 'undo': [{ type: Input },], - 'validator': [{ type: Input },], - 'viewportColumnRenderingOffset': [{ type: Input },], - 'viewportRowRenderingOffset': [{ type: Input },], - 'visibleRows': [{ type: Input },], - 'width': [{ type: Input },], - 'wordWrap': [{ type: Input },], - }; - return HotColumnComponent; -}()); -export { HotColumnComponent }; -function HotColumnComponent_tsickle_Closure_declarations() { - /** @type {?} */ - HotColumnComponent.decorators; - /** - * @nocollapse - * @type {?} - */ - HotColumnComponent.ctorParameters; - /** @type {?} */ - HotColumnComponent.propDecorators; - /** @type {?} */ - HotColumnComponent.prototype.firstRun; - /** @type {?} */ - HotColumnComponent.prototype.parentComponent; - /** @type {?} */ - HotColumnComponent.prototype.allowHtml; - /** @type {?} */ - HotColumnComponent.prototype.allowInsertColumn; - /** @type {?} */ - HotColumnComponent.prototype.allowInsertRow; - /** @type {?} */ - HotColumnComponent.prototype.allowInvalid; - /** @type {?} */ - HotColumnComponent.prototype.allowRemoveColumn; - /** @type {?} */ - HotColumnComponent.prototype.allowRemoveRow; - /** @type {?} */ - HotColumnComponent.prototype.autoColumnSize; - /** @type {?} */ - HotColumnComponent.prototype.autoComplete; - /** @type {?} */ - HotColumnComponent.prototype.autoRowSize; - /** @type {?} */ - HotColumnComponent.prototype.autoWrapCol; - /** @type {?} */ - HotColumnComponent.prototype.autoWrapRow; - /** @type {?} */ - HotColumnComponent.prototype.bindRowsWithHeaders; - /** @type {?} */ - HotColumnComponent.prototype.cell; - /** @type {?} */ - HotColumnComponent.prototype.cells; - /** @type {?} */ - HotColumnComponent.prototype.checkedTemplate; - /** @type {?} */ - HotColumnComponent.prototype.className; - /** @type {?} */ - HotColumnComponent.prototype.colHeaders; - /** @type {?} */ - HotColumnComponent.prototype.collapsibleColumns; - /** @type {?} */ - HotColumnComponent.prototype.columnHeaderHeight; - /** @type {?} */ - HotColumnComponent.prototype.columns; - /** @type {?} */ - HotColumnComponent.prototype.columnSorting; - /** @type {?} */ - HotColumnComponent.prototype.columnSummary; - /** @type {?} */ - HotColumnComponent.prototype.colWidths; - /** @type {?} */ - HotColumnComponent.prototype.commentedCellClassName; - /** @type {?} */ - HotColumnComponent.prototype.comments; - /** @type {?} */ - HotColumnComponent.prototype.contextMenu; - /** @type {?} */ - HotColumnComponent.prototype.copyable; - /** @type {?} */ - HotColumnComponent.prototype.copyColsLimit; - /** @type {?} */ - HotColumnComponent.prototype.copyPaste; - /** @type {?} */ - HotColumnComponent.prototype.copyRowsLimit; - /** @type {?} */ - HotColumnComponent.prototype.correctFormat; - /** @type {?} */ - HotColumnComponent.prototype.currentColClassName; - /** @type {?} */ - HotColumnComponent.prototype.currentHeaderClassName; - /** @type {?} */ - HotColumnComponent.prototype.currentRowClassName; - /** @type {?} */ - HotColumnComponent.prototype.customBorders; - /** @type {?} */ - HotColumnComponent.prototype.data; - /** @type {?} */ - HotColumnComponent.prototype.dataSchema; - /** @type {?} */ - HotColumnComponent.prototype.dateFormat; - /** @type {?} */ - HotColumnComponent.prototype.debug; - /** @type {?} */ - HotColumnComponent.prototype.defaultDate; - /** @type {?} */ - HotColumnComponent.prototype.disableVisualSelection; - /** @type {?} */ - HotColumnComponent.prototype.dropdownMenu; - /** @type {?} */ - HotColumnComponent.prototype.editor; - /** @type {?} */ - HotColumnComponent.prototype.enterBeginsEditing; - /** @type {?} */ - HotColumnComponent.prototype.enterMoves; - /** @type {?} */ - HotColumnComponent.prototype.fillHandle; - /** @type {?} */ - HotColumnComponent.prototype.filter; - /** @type {?} */ - HotColumnComponent.prototype.filteringCaseSensitive; - /** @type {?} */ - HotColumnComponent.prototype.filters; - /** @type {?} */ - HotColumnComponent.prototype.fixedColumnsLeft; - /** @type {?} */ - HotColumnComponent.prototype.fixedRowsBottom; - /** @type {?} */ - HotColumnComponent.prototype.fixedRowsTop; - /** @type {?} */ - HotColumnComponent.prototype.format; - /** @type {?} */ - HotColumnComponent.prototype.formulas; - /** @type {?} */ - HotColumnComponent.prototype.fragmentSelection; - /** @type {?} */ - HotColumnComponent.prototype.ganttChart; - /** @type {?} */ - HotColumnComponent.prototype.headerTooltips; - /** @type {?} */ - HotColumnComponent.prototype.height; - /** @type {?} */ - HotColumnComponent.prototype.hiddenColumns; - /** @type {?} */ - HotColumnComponent.prototype.hiddenRows; - /** @type {?} */ - HotColumnComponent.prototype.invalidCellClassName; - /** @type {?} */ - HotColumnComponent.prototype.label; - /** @type {?} */ - HotColumnComponent.prototype.language; - /** @type {?} */ - HotColumnComponent.prototype.manualColumnFreeze; - /** @type {?} */ - HotColumnComponent.prototype.manualColumnMove; - /** @type {?} */ - HotColumnComponent.prototype.manualColumnResize; - /** @type {?} */ - HotColumnComponent.prototype.manualRowMove; - /** @type {?} */ - HotColumnComponent.prototype.manualRowResize; - /** @type {?} */ - HotColumnComponent.prototype.maxCols; - /** @type {?} */ - HotColumnComponent.prototype.maxRows; - /** @type {?} */ - HotColumnComponent.prototype.mergeCells; - /** @type {?} */ - HotColumnComponent.prototype.minCols; - /** @type {?} */ - HotColumnComponent.prototype.minRows; - /** @type {?} */ - HotColumnComponent.prototype.minSpareCols; - /** @type {?} */ - HotColumnComponent.prototype.minSpareRows; - /** @type {?} */ - HotColumnComponent.prototype.multiSelect; - /** @type {?} */ - HotColumnComponent.prototype.nestedHeaders; - /** @type {?} */ - HotColumnComponent.prototype.noWordWrapClassName; - /** @type {?} */ - HotColumnComponent.prototype.observeChanges; - /** @type {?} */ - HotColumnComponent.prototype.observeDOMVisibility; - /** @type {?} */ - HotColumnComponent.prototype.outsideClickDeselects; - /** @type {?} */ - HotColumnComponent.prototype.pasteMode; - /** @type {?} */ - HotColumnComponent.prototype.persistentState; - /** @type {?} */ - HotColumnComponent.prototype.placeholder; - /** @type {?} */ - HotColumnComponent.prototype.placeholderCellClassName; - /** @type {?} */ - HotColumnComponent.prototype.preventOverflow; - /** @type {?} */ - HotColumnComponent.prototype.readOnly; - /** @type {?} */ - HotColumnComponent.prototype.readOnlyCellClassName; - /** @type {?} */ - HotColumnComponent.prototype.renderAllRows; - /** @type {?} */ - HotColumnComponent.prototype.renderer; - /** @type {?} */ - HotColumnComponent.prototype.rowHeaders; - /** @type {?} */ - HotColumnComponent.prototype.rowHeaderWidth; - /** @type {?} */ - HotColumnComponent.prototype.rowHeights; - /** @type {?} */ - HotColumnComponent.prototype.search; - /** @type {?} */ - HotColumnComponent.prototype.selectOptions; - /** @type {?} */ - HotColumnComponent.prototype.skipColumnOnPaste; - /** @type {?} */ - HotColumnComponent.prototype.sortByRelevance; - /** @type {?} */ - HotColumnComponent.prototype.sortFunction; - /** @type {?} */ - HotColumnComponent.prototype.sortIndicator; - /** @type {?} */ - HotColumnComponent.prototype.source; - /** @type {?} */ - HotColumnComponent.prototype.startCols; - /** @type {?} */ - HotColumnComponent.prototype.startRows; - /** @type {?} */ - HotColumnComponent.prototype.stretchH; - /** @type {?} */ - HotColumnComponent.prototype.strict; - /** @type {?} */ - HotColumnComponent.prototype.tableClassName; - /** @type {?} */ - HotColumnComponent.prototype.tabMoves; - /** @type {?} */ - HotColumnComponent.prototype.title; - /** @type {?} */ - HotColumnComponent.prototype.trimDropdown; - /** @type {?} */ - HotColumnComponent.prototype.trimRows; - /** @type {?} */ - HotColumnComponent.prototype.trimWhitespace; - /** @type {?} */ - HotColumnComponent.prototype.type; - /** @type {?} */ - HotColumnComponent.prototype.uncheckedTemplate; - /** @type {?} */ - HotColumnComponent.prototype.undo; - /** @type {?} */ - HotColumnComponent.prototype.validator; - /** @type {?} */ - HotColumnComponent.prototype.viewportColumnRenderingOffset; - /** @type {?} */ - HotColumnComponent.prototype.viewportRowRenderingOffset; - /** @type {?} */ - HotColumnComponent.prototype.visibleRows; - /** @type {?} */ - HotColumnComponent.prototype.width; - /** @type {?} */ - HotColumnComponent.prototype.wordWrap; - /** @type {?} */ - HotColumnComponent.prototype.inj; -} diff --git a/dist/src/hot-column.component.metadata.json b/dist/src/hot-column.component.metadata.json deleted file mode 100644 index 6b48a28..0000000 --- a/dist/src/hot-column.component.metadata.json +++ /dev/null @@ -1 +0,0 @@ -[{"__symbolic":"module","version":3,"metadata":{"HotColumnComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"hot-column","template":""}]}],"members":{"allowHtml":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowInsertColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowInsertRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowInvalid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowRemoveColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowRemoveRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoColumnSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoComplete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoRowSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoWrapCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoWrapRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"bindRowsWithHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"cell":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"cells":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"checkedTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"className":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"colHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"collapsibleColumns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columnHeaderHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columnSorting":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columnSummary":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"colWidths":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"commentedCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"comments":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"contextMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyColsLimit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyPaste":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyRowsLimit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"correctFormat":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentColClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentHeaderClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentRowClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"customBorders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"dataSchema":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"dateFormat":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"defaultDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disableVisualSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"dropdownMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"editor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"enterBeginsEditing":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"enterMoves":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fillHandle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"filter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"filteringCaseSensitive":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"filters":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fixedColumnsLeft":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fixedRowsBottom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fixedRowsTop":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"format":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"formulas":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fragmentSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"ganttChart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"headerTooltips":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"hiddenColumns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"hiddenRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"invalidCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"language":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualColumnFreeze":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualColumnMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualColumnResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualRowMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualRowResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"maxCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"maxRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"mergeCells":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minSpareCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minSpareRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"multiSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"nestedHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"noWordWrapClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"observeChanges":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"observeDOMVisibility":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"outsideClickDeselects":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"pasteMode":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"persistentState":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"placeholderCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"preventOverflow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"readOnly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"readOnlyCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"renderAllRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"renderer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"rowHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"rowHeaderWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"rowHeights":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"search":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"selectOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"skipColumnOnPaste":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"sortByRelevance":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"sortFunction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"sortIndicator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"source":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"startCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"startRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"stretchH":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"strict":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"tableClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"tabMoves":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"trimDropdown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"trimRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"trimWhitespace":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"uncheckedTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"undo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"validator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"viewportColumnRenderingOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"viewportRowRenderingOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"visibleRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"wordWrap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"HotColumnComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"hot-column","template":""}]}],"members":{"allowHtml":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowInsertColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowInsertRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowInvalid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowRemoveColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowRemoveRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoColumnSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoComplete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoRowSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoWrapCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoWrapRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"bindRowsWithHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"cell":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"cells":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"checkedTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"className":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"colHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"collapsibleColumns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columnHeaderHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columnSorting":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columnSummary":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"colWidths":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"commentedCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"comments":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"contextMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyColsLimit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyPaste":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyRowsLimit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"correctFormat":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentColClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentHeaderClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentRowClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"customBorders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"dataSchema":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"dateFormat":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"defaultDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disableVisualSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"dropdownMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"editor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"enterBeginsEditing":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"enterMoves":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fillHandle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"filter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"filteringCaseSensitive":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"filters":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fixedColumnsLeft":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fixedRowsBottom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fixedRowsTop":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"format":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"formulas":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fragmentSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"ganttChart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"headerTooltips":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"hiddenColumns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"hiddenRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"invalidCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"language":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualColumnFreeze":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualColumnMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualColumnResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualRowMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualRowResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"maxCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"maxRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"mergeCells":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minSpareCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minSpareRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"multiSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"nestedHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"noWordWrapClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"observeChanges":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"observeDOMVisibility":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"outsideClickDeselects":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"pasteMode":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"persistentState":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"placeholderCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"preventOverflow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"readOnly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"readOnlyCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"renderAllRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"renderer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"rowHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"rowHeaderWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"rowHeights":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"search":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"selectOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"skipColumnOnPaste":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"sortByRelevance":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"sortFunction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"sortIndicator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"source":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"startCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"startRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"stretchH":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"strict":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"tableClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"tabMoves":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"trimDropdown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"trimRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"trimWhitespace":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"uncheckedTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"undo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"validator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"viewportColumnRenderingOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"viewportRowRenderingOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"visibleRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"wordWrap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}}}] \ No newline at end of file diff --git a/dist/src/hot-registerer.service.d.ts b/dist/src/hot-registerer.service.d.ts deleted file mode 100644 index a5c1663..0000000 --- a/dist/src/hot-registerer.service.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import Handsontable from 'handsontable'; -export declare class HotRegisterer { - getInstance(id: string): Handsontable; - registerInstance(id: string, instance: Handsontable): void; - removeInstance(id: string): void; -} diff --git a/dist/src/hot-registerer.service.js b/dist/src/hot-registerer.service.js deleted file mode 100644 index 51e7de3..0000000 --- a/dist/src/hot-registerer.service.js +++ /dev/null @@ -1,46 +0,0 @@ -import { Injectable } from '@angular/core'; -var /** @type {?} */ instances = new Map(); -var HotRegisterer = /** @class */ (function () { - function HotRegisterer() { - } - /** - * @param {?} id - * @return {?} - */ - HotRegisterer.prototype.getInstance = function (id) { - return instances.get(id); - }; - /** - * @param {?} id - * @param {?} instance - * @return {?} - */ - HotRegisterer.prototype.registerInstance = function (id, instance) { - instances.set(id, instance); - }; - /** - * @param {?} id - * @return {?} - */ - HotRegisterer.prototype.removeInstance = function (id) { - instances.delete(id); - }; - HotRegisterer.decorators = [ - { type: Injectable }, - ]; - /** - * @nocollapse - */ - HotRegisterer.ctorParameters = function () { return []; }; - return HotRegisterer; -}()); -export { HotRegisterer }; -function HotRegisterer_tsickle_Closure_declarations() { - /** @type {?} */ - HotRegisterer.decorators; - /** - * @nocollapse - * @type {?} - */ - HotRegisterer.ctorParameters; -} diff --git a/dist/src/hot-registerer.service.metadata.json b/dist/src/hot-registerer.service.metadata.json deleted file mode 100644 index 69e02c3..0000000 --- a/dist/src/hot-registerer.service.metadata.json +++ /dev/null @@ -1 +0,0 @@ -[{"__symbolic":"module","version":3,"metadata":{"HotRegisterer":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"getInstance":[{"__symbolic":"method"}],"registerInstance":[{"__symbolic":"method"}],"removeInstance":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"HotRegisterer":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"getInstance":[{"__symbolic":"method"}],"registerInstance":[{"__symbolic":"method"}],"removeInstance":[{"__symbolic":"method"}]}}}}] \ No newline at end of file diff --git a/dist/src/hot-settings.utils.d.ts b/dist/src/hot-settings.utils.d.ts deleted file mode 100644 index 74507e1..0000000 --- a/dist/src/hot-settings.utils.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { SimpleChanges } from '@angular/core'; -export declare class HotHelper { - mergeSettings(component: any): object; - prepareChanges(changes: SimpleChanges): object; -} diff --git a/dist/src/hot-settings.utils.js b/dist/src/hot-settings.utils.js deleted file mode 100644 index 468eea3..0000000 --- a/dist/src/hot-settings.utils.js +++ /dev/null @@ -1,129 +0,0 @@ -import { Injectable } from '@angular/core'; -var /** @type {?} */ AVAILABLE_OPTIONS = ['data', 'dataSchema', 'width', 'height', 'startRows', 'startCols', - 'rowHeaders', 'colHeaders', 'colWidths', 'rowHeights', 'columns', 'cells', 'cell', 'comments', - 'customBorders', 'minRows', 'minCols', 'maxRows', 'maxCols', 'minSpareRows', 'minSpareCols', - 'allowInsertRow', 'allowInsertColumn', 'allowRemoveRow', 'allowRemoveColumn', 'multiSelect', - 'fillHandle', 'fixedRowsTop', 'fixedRowsBottom', 'fixedColumnsLeft', 'outsideClickDeselects', - 'enterBeginsEditing', 'enterMoves', 'tabMoves', 'autoWrapRow', 'autoWrapCol', 'copyRowsLimit', - 'copyColsLimit', 'pasteMode', 'persistentState', 'currentRowClassName', 'currentColClassName', - 'currentHeaderClassName', 'className', 'tableClassName', 'stretchH', 'isEmptyRow', 'isEmptyCol', - 'observeDOMVisibility', 'allowInvalid', 'allowEmpty', 'invalidCellClassName', 'placeholder', - 'placeholderCellClassName', 'readOnlyCellClassName', 'renderer', 'commentedCellClassName', - 'fragmentSelection', 'readOnly', 'skipColumnOnPaste', 'search', 'type', 'copyable', 'editor', - 'autoComplete', 'visibleRows', 'trimDropdown', 'debug', 'wordWrap', 'noWordWrapClassName', - 'contextMenu', 'contextMenuCopyPaste', 'copyPaste', 'undo', 'columnSorting', 'manualColumnMove', - 'manualColumnResize', 'manualRowMove', 'manualRowResize', 'mergeCells', - 'viewportRowRenderingOffset', 'viewportColumnRenderingOffset', 'validator', - 'disableVisualSelection', 'sortIndicator', 'manualColumnFreeze', 'trimWhitespace', - 'source', 'title', 'checkedTemplate', 'uncheckedTemplate', 'label', 'format', 'language', - 'selectOptions', 'autoColumnSize', 'autoRowSize', 'dateFormat', 'correctFormat', 'defaultDate', - 'strict', 'allowHtml', 'renderAllRows', 'preventOverflow', 'bindRowsWithHeaders', - 'collapsibleColumns', 'columnSummary', 'dropdownMenu', 'filters', 'formulas', 'ganttChart', - 'headerTooltips', 'hiddenColumns', 'hiddenRows', 'nestedHeaders', 'trimRows', 'rowHeaderWidth', - 'columnHeaderHeight', 'observeChanges', 'sortFunction', 'sortByRelevance', 'filter', - 'filteringCaseSensitive']; -var /** @type {?} */ AVAILABLE_HOOKS = ['afterCellMetaReset', 'afterChange', 'afterChangesObserved', - 'afterContextMenuDefaultOptions', 'beforeContextMenuSetItems', 'afterDropdownMenuDefaultOptions', - 'beforeDropdownMenuSetItems', 'afterContextMenuHide', 'afterContextMenuShow', 'afterCopyLimit', - 'beforeCreateCol', 'afterCreateCol', 'beforeCreateRow', 'afterCreateRow', 'afterDeselect', - 'afterDestroy', 'afterDocumentKeyDown', 'afterGetCellMeta', 'afterGetColHeader', - 'afterGetRowHeader', 'afterInit', 'afterLoadData', 'afterMomentumScroll', - 'afterOnCellCornerMouseDown', 'afterOnCellCornerDblClick', 'afterOnCellMouseDown', - 'afterOnCellMouseOver', 'afterOnCellMouseOut', 'afterRemoveCol', 'afterRemoveRow', 'afterRender', - 'beforeRenderer', 'afterRenderer', 'afterScrollHorizontally', 'afterScrollVertically', - 'afterSelection', 'afterSelectionByProp', 'afterSelectionEnd', 'afterSelectionEndByProp', - 'afterSetCellMeta', 'afterSetDataAtCell', 'afterSetDataAtRowProp', 'afterUpdateSettings', - 'afterValidate', 'beforeAutofill', 'beforeCellAlignment', 'beforeChange', 'beforeChangeRender', - 'beforeDrawBorders', 'beforeGetCellMeta', 'beforeInit', 'beforeInitWalkontable', 'beforeKeyDown', - 'beforeOnCellMouseDown', 'beforeOnCellMouseOver', 'beforeOnCellMouseOut', 'beforeRemoveCol', - 'beforeRemoveRow', 'beforeRender', 'beforeSetRangeStart', 'beforeSetRangeEnd', 'beforeTouchScroll', - 'beforeValidate', 'beforeValueRender', 'construct', 'init', 'modifyCol', 'unmodifyCol', - 'unmodifyRow', 'modifyColHeader', 'modifyColWidth', 'modifyRow', 'modifyRowHeader', - 'modifyRowHeight', 'modifyData', 'modifyRowData', 'persistentStateLoad', 'persistentStateReset', - 'persistentStateSave', 'beforeColumnSort', 'afterColumnSort', 'modifyAutofillRange', - 'modifyCopyableRange', 'beforeCut', 'afterCut', 'beforeCopy', 'afterCopy', 'beforePaste', - 'afterPaste', 'beforeColumnMove', 'afterColumnMove', 'beforeRowMove', 'afterRowMove', - 'beforeColumnResize', 'afterColumnResize', 'beforeRowResize', 'afterRowResize', - 'afterGetColumnHeaderRenderers', 'afterGetRowHeaderRenderers', 'beforeStretchingColumnWidth', - 'beforeFilter', 'afterFilter', 'modifyColumnHeaderHeight', 'beforeUndo', 'afterUndo', 'beforeRedo', - 'afterRedo', 'modifyRowHeaderWidth', 'beforeAutofillInsidePopulate', 'modifyTransformStart', - 'modifyTransformEnd', 'afterModifyTransformStart', 'afterModifyTransformEnd', - 'afterViewportRowCalculatorOverride', 'afterViewportColumnCalculatorOverride', - 'afterPluginsInitialized', 'manualRowHeights', 'skipLengthCache', 'afterTrimRow', 'afterUntrimRow', - 'afterDropdownMenuShow', 'afterDropdownMenuHide', 'hiddenRow', 'hiddenColumn', 'beforeAddChild', - 'afterAddChild', 'beforeDetachChild', 'afterDetachChild', 'afterBeginEditing', - 'afterIsMultipleSelection']; -var HotHelper = /** @class */ (function () { - function HotHelper() { - } - /** - * @param {?} component - * @return {?} - */ - HotHelper.prototype.mergeSettings = function (component) { - var /** @type {?} */ mergedSettings = {}; - if (component['settings'] !== void 0) { - Object.keys(component['settings']).forEach(function (key) { - if (AVAILABLE_HOOKS.indexOf(key) > -1) { - mergedSettings[key] = function (p1, p2, p3, p4, p5, p6) { - return component._ngZone.run(function () { - return component['settings'][key](p1, p2, p3, p4, p5, p6); - }); - }; - } - else { - mergedSettings[key] = component['settings'][key]; - } - }); - } - AVAILABLE_OPTIONS.forEach(function (key) { - var /** @type {?} */ option = component[key]; - if (option !== void 0) { - mergedSettings[key] = option; - } - }); - AVAILABLE_HOOKS.forEach(function (key) { - var /** @type {?} */ hook = component[key]; - if (hook && hook.observers.length > 0) { - mergedSettings[key] = function (p1, p2, p3, p4, p5, p6) { - component._ngZone.run(function () { - component[key].emit([p1, p2, p3, p4, p5, p6]); - }); - }; - } - }); - return mergedSettings; - }; - /** - * @param {?} changes - * @return {?} - */ - HotHelper.prototype.prepareChanges = function (changes) { - var /** @type {?} */ result = {}; - var /** @type {?} */ parameters = Object.keys(changes); - parameters.forEach(function (param) { - if (changes.hasOwnProperty(param)) { - result[param] = changes[param].currentValue; - } - }); - return result; - }; - HotHelper.decorators = [ - { type: Injectable }, - ]; - /** - * @nocollapse - */ - HotHelper.ctorParameters = function () { return []; }; - return HotHelper; -}()); -export { HotHelper }; -function HotHelper_tsickle_Closure_declarations() { - /** @type {?} */ - HotHelper.decorators; - /** - * @nocollapse - * @type {?} - */ - HotHelper.ctorParameters; -} diff --git a/dist/src/hot-settings.utils.metadata.json b/dist/src/hot-settings.utils.metadata.json deleted file mode 100644 index 2f59c6c..0000000 --- a/dist/src/hot-settings.utils.metadata.json +++ /dev/null @@ -1 +0,0 @@ -[{"__symbolic":"module","version":3,"metadata":{"HotHelper":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"mergeSettings":[{"__symbolic":"method"}],"prepareChanges":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"HotHelper":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"mergeSettings":[{"__symbolic":"method"}],"prepareChanges":[{"__symbolic":"method"}]}}}}] \ No newline at end of file diff --git a/dist/src/hot-table.component.d.ts b/dist/src/hot-table.component.d.ts deleted file mode 100644 index 06af454..0000000 --- a/dist/src/hot-table.component.d.ts +++ /dev/null @@ -1,273 +0,0 @@ -import { ElementRef, EventEmitter, NgZone, AfterContentInit, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core'; -import { HotRegisterer } from './hot-registerer.service'; -import { HotHelper } from './hot-settings.utils'; -import { HotColumnComponent } from './hot-column.component'; -export declare class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy, OnInit { - private el; - private _ngZone; - private _hotRegisterer; - private _hotHelper; - private hotInstance; - private container; - private columnsComponents; - settings: object; - hotId: string; - allowEmpty: boolean; - allowHtml: boolean; - allowInsertColumn: boolean; - allowInsertRow: boolean; - allowInvalid: boolean; - allowRemoveColumn: boolean; - allowRemoveRow: boolean; - autoColumnSize: boolean | object; - autoComplete: any[]; - autoRowSize: boolean | object; - autoWrapCol: boolean; - autoWrapRow: boolean; - bindRowsWithHeaders: boolean | string; - cell: any[]; - cells: (row: number, column: number, prop: object) => object; - checkedTemplate: boolean | string; - className: string | string[]; - colHeaders: boolean | string[] | ((column: number) => string); - collapsibleColumns: boolean | object[]; - columnHeaderHeight: number | number[]; - columns: object[] | ((column: number) => object); - columnSorting: boolean | object; - columnSummary: object; - colWidths: number | number[] | string | ((column: number) => number); - commentedCellClassName: string; - comments: boolean | object[]; - contextMenu: boolean | object | object[]; - copyable: boolean; - copyColsLimit: number; - copyPaste: boolean; - copyRowsLimit: number; - correctFormat: boolean; - currentColClassName: string; - currentHeaderClassName: string; - currentRowClassName: string; - customBorders: boolean | object[]; - data: any[]; - dataSchema: object; - dateFormat: string; - debug: boolean; - defaultDate: string; - disableVisualSelection: boolean | string | string[]; - dropdownMenu: boolean | object | object[]; - editor: boolean | string | (() => void); - enterBeginsEditing: boolean; - enterMoves: object | (() => void); - fillHandle: boolean | string | object; - filter: boolean; - filteringCaseSensitive: boolean; - filters: boolean; - fixedColumnsLeft: number; - fixedRowsBottom: number; - fixedRowsTop: number; - format: string; - formulas: boolean; - fragmentSelection: boolean | string; - ganttChart: object; - headerTooltips: boolean | object; - height: number | (() => number); - hiddenColumns: boolean | object; - hiddenRows: boolean | object; - invalidCellClassName: string; - label: object; - language: string; - manualColumnFreeze: boolean; - manualColumnMove: boolean | number[]; - manualColumnResize: boolean | number[]; - manualRowMove: boolean | number[]; - manualRowResize: boolean | number[]; - maxCols: number; - maxRows: number; - mergeCells: boolean | object[]; - minCols: number; - minRows: number; - minSpareCols: number; - minSpareRows: number; - multiSelect: boolean; - nestedHeaders: any[]; - noWordWrapClassName: string; - observeChanges: boolean; - observeDOMVisibility: boolean; - outsideClickDeselects: boolean | ((event: Event) => boolean); - pasteMode: string; - persistentState: boolean; - placeholder: any; - placeholderCellClassName: string; - preventOverflow: boolean | string; - readOnly: boolean; - readOnlyCellClassName: string; - renderAllRows: boolean; - renderer: string | (() => void); - rowHeaders: boolean | string[] | (() => string); - rowHeaderWidth: number | number[]; - rowHeights: number | number[] | string | ((row: number) => number); - search: boolean; - selectOptions: string[] | number[]; - skipColumnOnPaste: boolean; - sortByRelevance: boolean; - sortFunction: (sortOrder: boolean) => void; - sortIndicator: boolean; - source: any[] | (() => void); - startCols: number; - startRows: number; - stretchH: string; - strict: boolean; - tableClassName: string | string[]; - tabMoves: object; - title: string; - trimDropdown: boolean; - trimRows: boolean | number[]; - trimWhitespace: boolean; - type: string; - uncheckedTemplate: boolean | string; - undo: boolean; - validator: string | RegExp | (() => void); - viewportColumnRenderingOffset: number | string; - viewportRowRenderingOffset: number | string; - visibleRows: number; - width: number | (() => number); - wordWrap: boolean; - afterAddChild: EventEmitter; - afterBeginEditing: EventEmitter; - afterCellMetaReset: EventEmitter; - afterChange: EventEmitter; - afterChangesObserved: EventEmitter; - afterColumnMove: EventEmitter; - afterColumnResize: EventEmitter; - afterColumnSort: EventEmitter; - afterContextMenuDefaultOptions: EventEmitter; - afterContextMenuHide: EventEmitter; - afterContextMenuShow: EventEmitter; - afterCopy: EventEmitter; - afterCopyLimit: EventEmitter; - afterCreateCol: EventEmitter; - afterCreateRow: EventEmitter; - afterCut: EventEmitter; - afterDeselect: EventEmitter; - afterDestroy: EventEmitter; - afterDetachChild: EventEmitter; - afterDocumentKeyDown: EventEmitter; - afterDropdownMenuDefaultOptions: EventEmitter; - afterDropdownMenuHide: EventEmitter; - afterDropdownMenuShow: EventEmitter; - afterFilter: EventEmitter; - afterGetCellMeta: EventEmitter; - afterGetColHeader: EventEmitter; - afterGetColumnHeaderRenderers: EventEmitter; - afterGetRowHeader: EventEmitter; - afterGetRowHeaderRenderers: EventEmitter; - afterInit: EventEmitter; - afterLoadData: EventEmitter; - afterModifyTransformEnd: EventEmitter; - afterModifyTransformStart: EventEmitter; - afterMomentumScroll: EventEmitter; - afterOnCellCornerDblClick: EventEmitter; - afterOnCellCornerMouseDown: EventEmitter; - afterOnCellMouseDown: EventEmitter; - afterOnCellMouseOver: EventEmitter; - afterOnCellMouseOut: EventEmitter; - afterPluginsInitialized: EventEmitter; - afterRedo: EventEmitter; - afterRemoveCol: EventEmitter; - afterRemoveRow: EventEmitter; - afterRender: EventEmitter; - afterRenderer: EventEmitter; - afterRowMove: EventEmitter; - afterRowResize: EventEmitter; - afterScrollHorizontally: EventEmitter; - afterScrollVertically: EventEmitter; - afterSelection: EventEmitter; - afterSelectionByProp: EventEmitter; - afterSelectionEnd: EventEmitter; - afterSelectionEndByProp: EventEmitter; - afterSetCellMeta: EventEmitter; - afterSetDataAtCell: EventEmitter; - afterSetDataAtRowProp: EventEmitter; - afterTrimRow: EventEmitter; - afterUndo: EventEmitter; - afterUntrimRow: EventEmitter; - afterUpdateSettings: EventEmitter; - afterValidate: EventEmitter; - afterViewportColumnCalculatorOverride: EventEmitter; - afterViewportRowCalculatorOverride: EventEmitter; - beforeAddChild: EventEmitter; - beforeAutofill: EventEmitter; - beforeAutofillInsidePopulate: EventEmitter; - beforeCellAlignment: EventEmitter; - beforeChange: EventEmitter; - beforeChangeRender: EventEmitter; - beforeColumnMove: EventEmitter; - beforeColumnResize: EventEmitter; - beforeColumnSort: EventEmitter; - beforeContextMenuSetItems: EventEmitter; - beforeCopy: EventEmitter; - beforeCreateCol: EventEmitter; - beforeCreateRow: EventEmitter; - beforeCut: EventEmitter; - beforeDetachChild: EventEmitter; - beforeDrawBorders: EventEmitter; - beforeDropdownMenuSetItems: EventEmitter; - beforeFilter: EventEmitter; - beforeGetCellMeta: EventEmitter; - beforeInit: EventEmitter; - beforeInitWalkontable: EventEmitter; - beforeKeyDown: EventEmitter; - beforeOnCellMouseDown: EventEmitter; - beforeOnCellMouseOut: EventEmitter; - beforeOnCellMouseOver: EventEmitter; - beforePaste: EventEmitter; - beforeRedo: EventEmitter; - beforeRemoveCol: EventEmitter; - beforeRemoveRow: EventEmitter; - beforeRender: EventEmitter; - beforeRenderer: EventEmitter; - beforeRowMove: EventEmitter; - beforeRowResize: EventEmitter; - beforeSetRangeEnd: EventEmitter; - beforeSetRangeStart: EventEmitter; - beforeStretchingColumnWidth: EventEmitter; - beforeTouchScroll: EventEmitter; - beforeUndo: EventEmitter; - beforeValidate: EventEmitter; - beforeValueRender: EventEmitter; - construct: EventEmitter; - hiddenColumn: EventEmitter; - hiddenRow: EventEmitter; - init: EventEmitter; - manualRowHeights: EventEmitter; - modifyAutofillRange: EventEmitter; - modifyCol: EventEmitter; - modifyColHeader: EventEmitter; - modifyColumnHeaderHeight: EventEmitter; - modifyColWidth: EventEmitter; - modifyCopyableRange: EventEmitter; - modifyData: EventEmitter; - modifyRow: EventEmitter; - modifyRowHeader: EventEmitter; - modifyRowHeaderWidth: EventEmitter; - modifyRowHeight: EventEmitter; - modifyRowData: EventEmitter; - modifyTransformEnd: EventEmitter; - modifyTransformStart: EventEmitter; - persistentStateLoad: EventEmitter; - persistentStateReset: EventEmitter; - persistentStateSave: EventEmitter; - skipLengthCache: EventEmitter; - unmodifyCol: EventEmitter; - unmodifyRow: EventEmitter; - constructor(el: ElementRef, _ngZone: NgZone, _hotRegisterer: HotRegisterer, _hotHelper: HotHelper); - ngOnInit(): void; - ngAfterContentInit(): void; - ngOnChanges(changes: SimpleChanges): void; - ngOnDestroy(): void; - updateHotTable(newSettings: object): void; - onAfterColumnsChange(): void; - onAfterColumnsNumberChange(): void; - addColumn(column: HotColumnComponent): void; - removeColumn(column: HotColumnComponent): void; -} diff --git a/dist/src/hot-table.component.js b/dist/src/hot-table.component.js deleted file mode 100644 index 3f7edf4..0000000 --- a/dist/src/hot-table.component.js +++ /dev/null @@ -1,1052 +0,0 @@ -import { Component, ElementRef, EventEmitter, Input, NgZone, Output, ViewEncapsulation, } from '@angular/core'; -import Handsontable from 'handsontable'; -import { HotRegisterer } from './hot-registerer.service'; -import { HotHelper } from './hot-settings.utils'; -var HotTableComponent = /** @class */ (function () { - /** - * @param {?} el - * @param {?} _ngZone - * @param {?} _hotRegisterer - * @param {?} _hotHelper - */ - function HotTableComponent(el, _ngZone, _hotRegisterer, _hotHelper) { - this.el = el; - this._ngZone = _ngZone; - this._hotRegisterer = _hotRegisterer; - this._hotHelper = _hotHelper; - this.columnsComponents = []; - this.afterAddChild = new EventEmitter(); - this.afterBeginEditing = new EventEmitter(); - this.afterCellMetaReset = new EventEmitter(); - this.afterChange = new EventEmitter(); - this.afterChangesObserved = new EventEmitter(); - this.afterColumnMove = new EventEmitter(); - this.afterColumnResize = new EventEmitter(); - this.afterColumnSort = new EventEmitter(); - this.afterContextMenuDefaultOptions = new EventEmitter(); - this.afterContextMenuHide = new EventEmitter(); - this.afterContextMenuShow = new EventEmitter(); - this.afterCopy = new EventEmitter(); - this.afterCopyLimit = new EventEmitter(); - this.afterCreateCol = new EventEmitter(); - this.afterCreateRow = new EventEmitter(); - this.afterCut = new EventEmitter(); - this.afterDeselect = new EventEmitter(); - this.afterDestroy = new EventEmitter(); - this.afterDetachChild = new EventEmitter(); - this.afterDocumentKeyDown = new EventEmitter(); - this.afterDropdownMenuDefaultOptions = new EventEmitter(); - this.afterDropdownMenuHide = new EventEmitter(); - this.afterDropdownMenuShow = new EventEmitter(); - this.afterFilter = new EventEmitter(); - this.afterGetCellMeta = new EventEmitter(); - this.afterGetColHeader = new EventEmitter(); - this.afterGetColumnHeaderRenderers = new EventEmitter(); - this.afterGetRowHeader = new EventEmitter(); - this.afterGetRowHeaderRenderers = new EventEmitter(); - this.afterInit = new EventEmitter(); - this.afterLoadData = new EventEmitter(); - this.afterModifyTransformEnd = new EventEmitter(); - this.afterModifyTransformStart = new EventEmitter(); - this.afterMomentumScroll = new EventEmitter(); - this.afterOnCellCornerDblClick = new EventEmitter(); - this.afterOnCellCornerMouseDown = new EventEmitter(); - this.afterOnCellMouseDown = new EventEmitter(); - this.afterOnCellMouseOver = new EventEmitter(); - this.afterOnCellMouseOut = new EventEmitter(); - this.afterPluginsInitialized = new EventEmitter(); - this.afterRedo = new EventEmitter(); - this.afterRemoveCol = new EventEmitter(); - this.afterRemoveRow = new EventEmitter(); - this.afterRender = new EventEmitter(); - this.afterRenderer = new EventEmitter(); - this.afterRowMove = new EventEmitter(); - this.afterRowResize = new EventEmitter(); - this.afterScrollHorizontally = new EventEmitter(); - this.afterScrollVertically = new EventEmitter(); - this.afterSelection = new EventEmitter(); - this.afterSelectionByProp = new EventEmitter(); - this.afterSelectionEnd = new EventEmitter(); - this.afterSelectionEndByProp = new EventEmitter(); - this.afterSetCellMeta = new EventEmitter(); - this.afterSetDataAtCell = new EventEmitter(); - this.afterSetDataAtRowProp = new EventEmitter(); - this.afterTrimRow = new EventEmitter(); - this.afterUndo = new EventEmitter(); - this.afterUntrimRow = new EventEmitter(); - this.afterUpdateSettings = new EventEmitter(); - this.afterValidate = new EventEmitter(); - this.afterViewportColumnCalculatorOverride = new EventEmitter(); - this.afterViewportRowCalculatorOverride = new EventEmitter(); - this.beforeAddChild = new EventEmitter(); - this.beforeAutofill = new EventEmitter(); - this.beforeAutofillInsidePopulate = new EventEmitter(); - this.beforeCellAlignment = new EventEmitter(); - this.beforeChange = new EventEmitter(); - this.beforeChangeRender = new EventEmitter(); - this.beforeColumnMove = new EventEmitter(); - this.beforeColumnResize = new EventEmitter(); - this.beforeColumnSort = new EventEmitter(); - this.beforeContextMenuSetItems = new EventEmitter(); - this.beforeCopy = new EventEmitter(); - this.beforeCreateCol = new EventEmitter(); - this.beforeCreateRow = new EventEmitter(); - this.beforeCut = new EventEmitter(); - this.beforeDetachChild = new EventEmitter(); - this.beforeDrawBorders = new EventEmitter(); - this.beforeDropdownMenuSetItems = new EventEmitter(); - this.beforeFilter = new EventEmitter(); - this.beforeGetCellMeta = new EventEmitter(); - this.beforeInit = new EventEmitter(); - this.beforeInitWalkontable = new EventEmitter(); - this.beforeKeyDown = new EventEmitter(); - this.beforeOnCellMouseDown = new EventEmitter(); - this.beforeOnCellMouseOut = new EventEmitter(); - this.beforeOnCellMouseOver = new EventEmitter(); - this.beforePaste = new EventEmitter(); - this.beforeRedo = new EventEmitter(); - this.beforeRemoveCol = new EventEmitter(); - this.beforeRemoveRow = new EventEmitter(); - this.beforeRender = new EventEmitter(); - this.beforeRenderer = new EventEmitter(); - this.beforeRowMove = new EventEmitter(); - this.beforeRowResize = new EventEmitter(); - this.beforeSetRangeEnd = new EventEmitter(); - this.beforeSetRangeStart = new EventEmitter(); - this.beforeStretchingColumnWidth = new EventEmitter(); - this.beforeTouchScroll = new EventEmitter(); - this.beforeUndo = new EventEmitter(); - this.beforeValidate = new EventEmitter(); - this.beforeValueRender = new EventEmitter(); - this.construct = new EventEmitter(); - this.hiddenColumn = new EventEmitter(); - this.hiddenRow = new EventEmitter(); - this.init = new EventEmitter(); - this.manualRowHeights = new EventEmitter(); - this.modifyAutofillRange = new EventEmitter(); - this.modifyCol = new EventEmitter(); - this.modifyColHeader = new EventEmitter(); - this.modifyColumnHeaderHeight = new EventEmitter(); - this.modifyColWidth = new EventEmitter(); - this.modifyCopyableRange = new EventEmitter(); - this.modifyData = new EventEmitter(); - this.modifyRow = new EventEmitter(); - this.modifyRowHeader = new EventEmitter(); - this.modifyRowHeaderWidth = new EventEmitter(); - this.modifyRowHeight = new EventEmitter(); - this.modifyRowData = new EventEmitter(); - this.modifyTransformEnd = new EventEmitter(); - this.modifyTransformStart = new EventEmitter(); - this.persistentStateLoad = new EventEmitter(); - this.persistentStateReset = new EventEmitter(); - this.persistentStateSave = new EventEmitter(); - this.skipLengthCache = new EventEmitter(); - this.unmodifyCol = new EventEmitter(); - this.unmodifyRow = new EventEmitter(); - } - /** - * @return {?} - */ - HotTableComponent.prototype.ngOnInit = function () { - this.container = document.createElement('div'); - if (this.hotId) { - this.container.id = this.hotId; - } - this.el.nativeElement.appendChild(this.container); - }; - /** - * @return {?} - */ - HotTableComponent.prototype.ngAfterContentInit = function () { - var _this = this; - var /** @type {?} */ options = this._hotHelper.mergeSettings(this); - if (this.columnsComponents.length > 0) { - var /** @type {?} */ columns_1 = []; - this.columnsComponents.forEach(function (column) { - columns_1.push(_this._hotHelper.mergeSettings(column)); - }); - options['columns'] = columns_1; - } - this._ngZone.runOutsideAngular(function () { - _this.hotInstance = new Handsontable(_this.container, options); - }); - if (this.hotId) { - this._hotRegisterer.registerInstance(this.hotId, this.hotInstance); - } - }; - /** - * @param {?} changes - * @return {?} - */ - HotTableComponent.prototype.ngOnChanges = function (changes) { - if (this.hotInstance === void 0) { - return; - } - var /** @type {?} */ newOptions = this._hotHelper.prepareChanges(changes); - this.updateHotTable(newOptions); - }; - /** - * @return {?} - */ - HotTableComponent.prototype.ngOnDestroy = function () { - this.hotInstance.destroy(); - if (this.hotId) { - this._hotRegisterer.removeInstance(this.hotId); - } - }; - /** - * @param {?} newSettings - * @return {?} - */ - HotTableComponent.prototype.updateHotTable = function (newSettings) { - if (!this.hotInstance) { - return; - } - this.hotInstance.updateSettings(newSettings, false); - }; - /** - * @return {?} - */ - HotTableComponent.prototype.onAfterColumnsChange = function () { - var _this = this; - if (this.columnsComponents === void 0) { - return; - } - if (this.columnsComponents.length > 0) { - var /** @type {?} */ columns_2 = []; - this.columnsComponents.forEach(function (column) { - columns_2.push(_this._hotHelper.mergeSettings(column)); - }); - var /** @type {?} */ newOptions = { - columns: columns_2 - }; - this.updateHotTable(newOptions); - } - }; - /** - * @return {?} - */ - HotTableComponent.prototype.onAfterColumnsNumberChange = function () { - var _this = this; - var /** @type {?} */ columns = []; - if (this.columnsComponents.length > 0) { - this.columnsComponents.forEach(function (column) { - columns.push(_this._hotHelper.mergeSettings(column)); - }); - } - this.updateHotTable({ columns: columns }); - }; - /** - * @param {?} column - * @return {?} - */ - HotTableComponent.prototype.addColumn = function (column) { - this.columnsComponents.push(column); - this.onAfterColumnsNumberChange(); - }; - /** - * @param {?} column - * @return {?} - */ - HotTableComponent.prototype.removeColumn = function (column) { - var /** @type {?} */ index = this.columnsComponents.indexOf(column); - this.columnsComponents.splice(index, 1); - this.onAfterColumnsNumberChange(); - }; - HotTableComponent.decorators = [ - { type: Component, args: [{ - selector: 'hot-table', - template: "", - encapsulation: ViewEncapsulation.None, - providers: [HotRegisterer, HotHelper], - },] }, - ]; - /** - * @nocollapse - */ - HotTableComponent.ctorParameters = function () { return [ - { type: ElementRef, }, - { type: NgZone, }, - { type: HotRegisterer, }, - { type: HotHelper, }, - ]; }; - HotTableComponent.propDecorators = { - 'settings': [{ type: Input },], - 'hotId': [{ type: Input },], - 'allowEmpty': [{ type: Input },], - 'allowHtml': [{ type: Input },], - 'allowInsertColumn': [{ type: Input },], - 'allowInsertRow': [{ type: Input },], - 'allowInvalid': [{ type: Input },], - 'allowRemoveColumn': [{ type: Input },], - 'allowRemoveRow': [{ type: Input },], - 'autoColumnSize': [{ type: Input },], - 'autoComplete': [{ type: Input },], - 'autoRowSize': [{ type: Input },], - 'autoWrapCol': [{ type: Input },], - 'autoWrapRow': [{ type: Input },], - 'bindRowsWithHeaders': [{ type: Input },], - 'cell': [{ type: Input },], - 'cells': [{ type: Input },], - 'checkedTemplate': [{ type: Input },], - 'className': [{ type: Input },], - 'colHeaders': [{ type: Input },], - 'collapsibleColumns': [{ type: Input },], - 'columnHeaderHeight': [{ type: Input },], - 'columns': [{ type: Input },], - 'columnSorting': [{ type: Input },], - 'columnSummary': [{ type: Input },], - 'colWidths': [{ type: Input },], - 'commentedCellClassName': [{ type: Input },], - 'comments': [{ type: Input },], - 'contextMenu': [{ type: Input },], - 'copyable': [{ type: Input },], - 'copyColsLimit': [{ type: Input },], - 'copyPaste': [{ type: Input },], - 'copyRowsLimit': [{ type: Input },], - 'correctFormat': [{ type: Input },], - 'currentColClassName': [{ type: Input },], - 'currentHeaderClassName': [{ type: Input },], - 'currentRowClassName': [{ type: Input },], - 'customBorders': [{ type: Input },], - 'data': [{ type: Input },], - 'dataSchema': [{ type: Input },], - 'dateFormat': [{ type: Input },], - 'debug': [{ type: Input },], - 'defaultDate': [{ type: Input },], - 'disableVisualSelection': [{ type: Input },], - 'dropdownMenu': [{ type: Input },], - 'editor': [{ type: Input },], - 'enterBeginsEditing': [{ type: Input },], - 'enterMoves': [{ type: Input },], - 'fillHandle': [{ type: Input },], - 'filter': [{ type: Input },], - 'filteringCaseSensitive': [{ type: Input },], - 'filters': [{ type: Input },], - 'fixedColumnsLeft': [{ type: Input },], - 'fixedRowsBottom': [{ type: Input },], - 'fixedRowsTop': [{ type: Input },], - 'format': [{ type: Input },], - 'formulas': [{ type: Input },], - 'fragmentSelection': [{ type: Input },], - 'ganttChart': [{ type: Input },], - 'headerTooltips': [{ type: Input },], - 'height': [{ type: Input },], - 'hiddenColumns': [{ type: Input },], - 'hiddenRows': [{ type: Input },], - 'invalidCellClassName': [{ type: Input },], - 'label': [{ type: Input },], - 'language': [{ type: Input },], - 'manualColumnFreeze': [{ type: Input },], - 'manualColumnMove': [{ type: Input },], - 'manualColumnResize': [{ type: Input },], - 'manualRowMove': [{ type: Input },], - 'manualRowResize': [{ type: Input },], - 'maxCols': [{ type: Input },], - 'maxRows': [{ type: Input },], - 'mergeCells': [{ type: Input },], - 'minCols': [{ type: Input },], - 'minRows': [{ type: Input },], - 'minSpareCols': [{ type: Input },], - 'minSpareRows': [{ type: Input },], - 'multiSelect': [{ type: Input },], - 'nestedHeaders': [{ type: Input },], - 'noWordWrapClassName': [{ type: Input },], - 'observeChanges': [{ type: Input },], - 'observeDOMVisibility': [{ type: Input },], - 'outsideClickDeselects': [{ type: Input },], - 'pasteMode': [{ type: Input },], - 'persistentState': [{ type: Input },], - 'placeholder': [{ type: Input },], - 'placeholderCellClassName': [{ type: Input },], - 'preventOverflow': [{ type: Input },], - 'readOnly': [{ type: Input },], - 'readOnlyCellClassName': [{ type: Input },], - 'renderAllRows': [{ type: Input },], - 'renderer': [{ type: Input },], - 'rowHeaders': [{ type: Input },], - 'rowHeaderWidth': [{ type: Input },], - 'rowHeights': [{ type: Input },], - 'search': [{ type: Input },], - 'selectOptions': [{ type: Input },], - 'skipColumnOnPaste': [{ type: Input },], - 'sortByRelevance': [{ type: Input },], - 'sortFunction': [{ type: Input },], - 'sortIndicator': [{ type: Input },], - 'source': [{ type: Input },], - 'startCols': [{ type: Input },], - 'startRows': [{ type: Input },], - 'stretchH': [{ type: Input },], - 'strict': [{ type: Input },], - 'tableClassName': [{ type: Input },], - 'tabMoves': [{ type: Input },], - 'title': [{ type: Input },], - 'trimDropdown': [{ type: Input },], - 'trimRows': [{ type: Input },], - 'trimWhitespace': [{ type: Input },], - 'type': [{ type: Input },], - 'uncheckedTemplate': [{ type: Input },], - 'undo': [{ type: Input },], - 'validator': [{ type: Input },], - 'viewportColumnRenderingOffset': [{ type: Input },], - 'viewportRowRenderingOffset': [{ type: Input },], - 'visibleRows': [{ type: Input },], - 'width': [{ type: Input },], - 'wordWrap': [{ type: Input },], - 'afterAddChild': [{ type: Output },], - 'afterBeginEditing': [{ type: Output },], - 'afterCellMetaReset': [{ type: Output },], - 'afterChange': [{ type: Output },], - 'afterChangesObserved': [{ type: Output },], - 'afterColumnMove': [{ type: Output },], - 'afterColumnResize': [{ type: Output },], - 'afterColumnSort': [{ type: Output },], - 'afterContextMenuDefaultOptions': [{ type: Output },], - 'afterContextMenuHide': [{ type: Output },], - 'afterContextMenuShow': [{ type: Output },], - 'afterCopy': [{ type: Output },], - 'afterCopyLimit': [{ type: Output },], - 'afterCreateCol': [{ type: Output },], - 'afterCreateRow': [{ type: Output },], - 'afterCut': [{ type: Output },], - 'afterDeselect': [{ type: Output },], - 'afterDestroy': [{ type: Output },], - 'afterDetachChild': [{ type: Output },], - 'afterDocumentKeyDown': [{ type: Output },], - 'afterDropdownMenuDefaultOptions': [{ type: Output },], - 'afterDropdownMenuHide': [{ type: Output },], - 'afterDropdownMenuShow': [{ type: Output },], - 'afterFilter': [{ type: Output },], - 'afterGetCellMeta': [{ type: Output },], - 'afterGetColHeader': [{ type: Output },], - 'afterGetColumnHeaderRenderers': [{ type: Output },], - 'afterGetRowHeader': [{ type: Output },], - 'afterGetRowHeaderRenderers': [{ type: Output },], - 'afterInit': [{ type: Output },], - 'afterLoadData': [{ type: Output },], - 'afterModifyTransformEnd': [{ type: Output },], - 'afterModifyTransformStart': [{ type: Output },], - 'afterMomentumScroll': [{ type: Output },], - 'afterOnCellCornerDblClick': [{ type: Output },], - 'afterOnCellCornerMouseDown': [{ type: Output },], - 'afterOnCellMouseDown': [{ type: Output },], - 'afterOnCellMouseOver': [{ type: Output },], - 'afterOnCellMouseOut': [{ type: Output },], - 'afterPluginsInitialized': [{ type: Output },], - 'afterRedo': [{ type: Output },], - 'afterRemoveCol': [{ type: Output },], - 'afterRemoveRow': [{ type: Output },], - 'afterRender': [{ type: Output },], - 'afterRenderer': [{ type: Output },], - 'afterRowMove': [{ type: Output },], - 'afterRowResize': [{ type: Output },], - 'afterScrollHorizontally': [{ type: Output },], - 'afterScrollVertically': [{ type: Output },], - 'afterSelection': [{ type: Output },], - 'afterSelectionByProp': [{ type: Output },], - 'afterSelectionEnd': [{ type: Output },], - 'afterSelectionEndByProp': [{ type: Output },], - 'afterSetCellMeta': [{ type: Output },], - 'afterSetDataAtCell': [{ type: Output },], - 'afterSetDataAtRowProp': [{ type: Output },], - 'afterTrimRow': [{ type: Output },], - 'afterUndo': [{ type: Output },], - 'afterUntrimRow': [{ type: Output },], - 'afterUpdateSettings': [{ type: Output },], - 'afterValidate': [{ type: Output },], - 'afterViewportColumnCalculatorOverride': [{ type: Output },], - 'afterViewportRowCalculatorOverride': [{ type: Output },], - 'beforeAddChild': [{ type: Output },], - 'beforeAutofill': [{ type: Output },], - 'beforeAutofillInsidePopulate': [{ type: Output },], - 'beforeCellAlignment': [{ type: Output },], - 'beforeChange': [{ type: Output },], - 'beforeChangeRender': [{ type: Output },], - 'beforeColumnMove': [{ type: Output },], - 'beforeColumnResize': [{ type: Output },], - 'beforeColumnSort': [{ type: Output },], - 'beforeContextMenuSetItems': [{ type: Output },], - 'beforeCopy': [{ type: Output },], - 'beforeCreateCol': [{ type: Output },], - 'beforeCreateRow': [{ type: Output },], - 'beforeCut': [{ type: Output },], - 'beforeDetachChild': [{ type: Output },], - 'beforeDrawBorders': [{ type: Output },], - 'beforeDropdownMenuSetItems': [{ type: Output },], - 'beforeFilter': [{ type: Output },], - 'beforeGetCellMeta': [{ type: Output },], - 'beforeInit': [{ type: Output },], - 'beforeInitWalkontable': [{ type: Output },], - 'beforeKeyDown': [{ type: Output },], - 'beforeOnCellMouseDown': [{ type: Output },], - 'beforeOnCellMouseOut': [{ type: Output },], - 'beforeOnCellMouseOver': [{ type: Output },], - 'beforePaste': [{ type: Output },], - 'beforeRedo': [{ type: Output },], - 'beforeRemoveCol': [{ type: Output },], - 'beforeRemoveRow': [{ type: Output },], - 'beforeRender': [{ type: Output },], - 'beforeRenderer': [{ type: Output },], - 'beforeRowMove': [{ type: Output },], - 'beforeRowResize': [{ type: Output },], - 'beforeSetRangeEnd': [{ type: Output },], - 'beforeSetRangeStart': [{ type: Output },], - 'beforeStretchingColumnWidth': [{ type: Output },], - 'beforeTouchScroll': [{ type: Output },], - 'beforeUndo': [{ type: Output },], - 'beforeValidate': [{ type: Output },], - 'beforeValueRender': [{ type: Output },], - 'construct': [{ type: Output },], - 'hiddenColumn': [{ type: Output },], - 'hiddenRow': [{ type: Output },], - 'init': [{ type: Output },], - 'manualRowHeights': [{ type: Output },], - 'modifyAutofillRange': [{ type: Output },], - 'modifyCol': [{ type: Output },], - 'modifyColHeader': [{ type: Output },], - 'modifyColumnHeaderHeight': [{ type: Output },], - 'modifyColWidth': [{ type: Output },], - 'modifyCopyableRange': [{ type: Output },], - 'modifyData': [{ type: Output },], - 'modifyRow': [{ type: Output },], - 'modifyRowHeader': [{ type: Output },], - 'modifyRowHeaderWidth': [{ type: Output },], - 'modifyRowHeight': [{ type: Output },], - 'modifyRowData': [{ type: Output },], - 'modifyTransformEnd': [{ type: Output },], - 'modifyTransformStart': [{ type: Output },], - 'persistentStateLoad': [{ type: Output },], - 'persistentStateReset': [{ type: Output },], - 'persistentStateSave': [{ type: Output },], - 'skipLengthCache': [{ type: Output },], - 'unmodifyCol': [{ type: Output },], - 'unmodifyRow': [{ type: Output },], - }; - return HotTableComponent; -}()); -export { HotTableComponent }; -function HotTableComponent_tsickle_Closure_declarations() { - /** @type {?} */ - HotTableComponent.decorators; - /** - * @nocollapse - * @type {?} - */ - HotTableComponent.ctorParameters; - /** @type {?} */ - HotTableComponent.propDecorators; - /** @type {?} */ - HotTableComponent.prototype.hotInstance; - /** @type {?} */ - HotTableComponent.prototype.container; - /** @type {?} */ - HotTableComponent.prototype.columnsComponents; - /** @type {?} */ - HotTableComponent.prototype.settings; - /** @type {?} */ - HotTableComponent.prototype.hotId; - /** @type {?} */ - HotTableComponent.prototype.allowEmpty; - /** @type {?} */ - HotTableComponent.prototype.allowHtml; - /** @type {?} */ - HotTableComponent.prototype.allowInsertColumn; - /** @type {?} */ - HotTableComponent.prototype.allowInsertRow; - /** @type {?} */ - HotTableComponent.prototype.allowInvalid; - /** @type {?} */ - HotTableComponent.prototype.allowRemoveColumn; - /** @type {?} */ - HotTableComponent.prototype.allowRemoveRow; - /** @type {?} */ - HotTableComponent.prototype.autoColumnSize; - /** @type {?} */ - HotTableComponent.prototype.autoComplete; - /** @type {?} */ - HotTableComponent.prototype.autoRowSize; - /** @type {?} */ - HotTableComponent.prototype.autoWrapCol; - /** @type {?} */ - HotTableComponent.prototype.autoWrapRow; - /** @type {?} */ - HotTableComponent.prototype.bindRowsWithHeaders; - /** @type {?} */ - HotTableComponent.prototype.cell; - /** @type {?} */ - HotTableComponent.prototype.cells; - /** @type {?} */ - HotTableComponent.prototype.checkedTemplate; - /** @type {?} */ - HotTableComponent.prototype.className; - /** @type {?} */ - HotTableComponent.prototype.colHeaders; - /** @type {?} */ - HotTableComponent.prototype.collapsibleColumns; - /** @type {?} */ - HotTableComponent.prototype.columnHeaderHeight; - /** @type {?} */ - HotTableComponent.prototype.columns; - /** @type {?} */ - HotTableComponent.prototype.columnSorting; - /** @type {?} */ - HotTableComponent.prototype.columnSummary; - /** @type {?} */ - HotTableComponent.prototype.colWidths; - /** @type {?} */ - HotTableComponent.prototype.commentedCellClassName; - /** @type {?} */ - HotTableComponent.prototype.comments; - /** @type {?} */ - HotTableComponent.prototype.contextMenu; - /** @type {?} */ - HotTableComponent.prototype.copyable; - /** @type {?} */ - HotTableComponent.prototype.copyColsLimit; - /** @type {?} */ - HotTableComponent.prototype.copyPaste; - /** @type {?} */ - HotTableComponent.prototype.copyRowsLimit; - /** @type {?} */ - HotTableComponent.prototype.correctFormat; - /** @type {?} */ - HotTableComponent.prototype.currentColClassName; - /** @type {?} */ - HotTableComponent.prototype.currentHeaderClassName; - /** @type {?} */ - HotTableComponent.prototype.currentRowClassName; - /** @type {?} */ - HotTableComponent.prototype.customBorders; - /** @type {?} */ - HotTableComponent.prototype.data; - /** @type {?} */ - HotTableComponent.prototype.dataSchema; - /** @type {?} */ - HotTableComponent.prototype.dateFormat; - /** @type {?} */ - HotTableComponent.prototype.debug; - /** @type {?} */ - HotTableComponent.prototype.defaultDate; - /** @type {?} */ - HotTableComponent.prototype.disableVisualSelection; - /** @type {?} */ - HotTableComponent.prototype.dropdownMenu; - /** @type {?} */ - HotTableComponent.prototype.editor; - /** @type {?} */ - HotTableComponent.prototype.enterBeginsEditing; - /** @type {?} */ - HotTableComponent.prototype.enterMoves; - /** @type {?} */ - HotTableComponent.prototype.fillHandle; - /** @type {?} */ - HotTableComponent.prototype.filter; - /** @type {?} */ - HotTableComponent.prototype.filteringCaseSensitive; - /** @type {?} */ - HotTableComponent.prototype.filters; - /** @type {?} */ - HotTableComponent.prototype.fixedColumnsLeft; - /** @type {?} */ - HotTableComponent.prototype.fixedRowsBottom; - /** @type {?} */ - HotTableComponent.prototype.fixedRowsTop; - /** @type {?} */ - HotTableComponent.prototype.format; - /** @type {?} */ - HotTableComponent.prototype.formulas; - /** @type {?} */ - HotTableComponent.prototype.fragmentSelection; - /** @type {?} */ - HotTableComponent.prototype.ganttChart; - /** @type {?} */ - HotTableComponent.prototype.headerTooltips; - /** @type {?} */ - HotTableComponent.prototype.height; - /** @type {?} */ - HotTableComponent.prototype.hiddenColumns; - /** @type {?} */ - HotTableComponent.prototype.hiddenRows; - /** @type {?} */ - HotTableComponent.prototype.invalidCellClassName; - /** @type {?} */ - HotTableComponent.prototype.label; - /** @type {?} */ - HotTableComponent.prototype.language; - /** @type {?} */ - HotTableComponent.prototype.manualColumnFreeze; - /** @type {?} */ - HotTableComponent.prototype.manualColumnMove; - /** @type {?} */ - HotTableComponent.prototype.manualColumnResize; - /** @type {?} */ - HotTableComponent.prototype.manualRowMove; - /** @type {?} */ - HotTableComponent.prototype.manualRowResize; - /** @type {?} */ - HotTableComponent.prototype.maxCols; - /** @type {?} */ - HotTableComponent.prototype.maxRows; - /** @type {?} */ - HotTableComponent.prototype.mergeCells; - /** @type {?} */ - HotTableComponent.prototype.minCols; - /** @type {?} */ - HotTableComponent.prototype.minRows; - /** @type {?} */ - HotTableComponent.prototype.minSpareCols; - /** @type {?} */ - HotTableComponent.prototype.minSpareRows; - /** @type {?} */ - HotTableComponent.prototype.multiSelect; - /** @type {?} */ - HotTableComponent.prototype.nestedHeaders; - /** @type {?} */ - HotTableComponent.prototype.noWordWrapClassName; - /** @type {?} */ - HotTableComponent.prototype.observeChanges; - /** @type {?} */ - HotTableComponent.prototype.observeDOMVisibility; - /** @type {?} */ - HotTableComponent.prototype.outsideClickDeselects; - /** @type {?} */ - HotTableComponent.prototype.pasteMode; - /** @type {?} */ - HotTableComponent.prototype.persistentState; - /** @type {?} */ - HotTableComponent.prototype.placeholder; - /** @type {?} */ - HotTableComponent.prototype.placeholderCellClassName; - /** @type {?} */ - HotTableComponent.prototype.preventOverflow; - /** @type {?} */ - HotTableComponent.prototype.readOnly; - /** @type {?} */ - HotTableComponent.prototype.readOnlyCellClassName; - /** @type {?} */ - HotTableComponent.prototype.renderAllRows; - /** @type {?} */ - HotTableComponent.prototype.renderer; - /** @type {?} */ - HotTableComponent.prototype.rowHeaders; - /** @type {?} */ - HotTableComponent.prototype.rowHeaderWidth; - /** @type {?} */ - HotTableComponent.prototype.rowHeights; - /** @type {?} */ - HotTableComponent.prototype.search; - /** @type {?} */ - HotTableComponent.prototype.selectOptions; - /** @type {?} */ - HotTableComponent.prototype.skipColumnOnPaste; - /** @type {?} */ - HotTableComponent.prototype.sortByRelevance; - /** @type {?} */ - HotTableComponent.prototype.sortFunction; - /** @type {?} */ - HotTableComponent.prototype.sortIndicator; - /** @type {?} */ - HotTableComponent.prototype.source; - /** @type {?} */ - HotTableComponent.prototype.startCols; - /** @type {?} */ - HotTableComponent.prototype.startRows; - /** @type {?} */ - HotTableComponent.prototype.stretchH; - /** @type {?} */ - HotTableComponent.prototype.strict; - /** @type {?} */ - HotTableComponent.prototype.tableClassName; - /** @type {?} */ - HotTableComponent.prototype.tabMoves; - /** @type {?} */ - HotTableComponent.prototype.title; - /** @type {?} */ - HotTableComponent.prototype.trimDropdown; - /** @type {?} */ - HotTableComponent.prototype.trimRows; - /** @type {?} */ - HotTableComponent.prototype.trimWhitespace; - /** @type {?} */ - HotTableComponent.prototype.type; - /** @type {?} */ - HotTableComponent.prototype.uncheckedTemplate; - /** @type {?} */ - HotTableComponent.prototype.undo; - /** @type {?} */ - HotTableComponent.prototype.validator; - /** @type {?} */ - HotTableComponent.prototype.viewportColumnRenderingOffset; - /** @type {?} */ - HotTableComponent.prototype.viewportRowRenderingOffset; - /** @type {?} */ - HotTableComponent.prototype.visibleRows; - /** @type {?} */ - HotTableComponent.prototype.width; - /** @type {?} */ - HotTableComponent.prototype.wordWrap; - /** @type {?} */ - HotTableComponent.prototype.afterAddChild; - /** @type {?} */ - HotTableComponent.prototype.afterBeginEditing; - /** @type {?} */ - HotTableComponent.prototype.afterCellMetaReset; - /** @type {?} */ - HotTableComponent.prototype.afterChange; - /** @type {?} */ - HotTableComponent.prototype.afterChangesObserved; - /** @type {?} */ - HotTableComponent.prototype.afterColumnMove; - /** @type {?} */ - HotTableComponent.prototype.afterColumnResize; - /** @type {?} */ - HotTableComponent.prototype.afterColumnSort; - /** @type {?} */ - HotTableComponent.prototype.afterContextMenuDefaultOptions; - /** @type {?} */ - HotTableComponent.prototype.afterContextMenuHide; - /** @type {?} */ - HotTableComponent.prototype.afterContextMenuShow; - /** @type {?} */ - HotTableComponent.prototype.afterCopy; - /** @type {?} */ - HotTableComponent.prototype.afterCopyLimit; - /** @type {?} */ - HotTableComponent.prototype.afterCreateCol; - /** @type {?} */ - HotTableComponent.prototype.afterCreateRow; - /** @type {?} */ - HotTableComponent.prototype.afterCut; - /** @type {?} */ - HotTableComponent.prototype.afterDeselect; - /** @type {?} */ - HotTableComponent.prototype.afterDestroy; - /** @type {?} */ - HotTableComponent.prototype.afterDetachChild; - /** @type {?} */ - HotTableComponent.prototype.afterDocumentKeyDown; - /** @type {?} */ - HotTableComponent.prototype.afterDropdownMenuDefaultOptions; - /** @type {?} */ - HotTableComponent.prototype.afterDropdownMenuHide; - /** @type {?} */ - HotTableComponent.prototype.afterDropdownMenuShow; - /** @type {?} */ - HotTableComponent.prototype.afterFilter; - /** @type {?} */ - HotTableComponent.prototype.afterGetCellMeta; - /** @type {?} */ - HotTableComponent.prototype.afterGetColHeader; - /** @type {?} */ - HotTableComponent.prototype.afterGetColumnHeaderRenderers; - /** @type {?} */ - HotTableComponent.prototype.afterGetRowHeader; - /** @type {?} */ - HotTableComponent.prototype.afterGetRowHeaderRenderers; - /** @type {?} */ - HotTableComponent.prototype.afterInit; - /** @type {?} */ - HotTableComponent.prototype.afterLoadData; - /** @type {?} */ - HotTableComponent.prototype.afterModifyTransformEnd; - /** @type {?} */ - HotTableComponent.prototype.afterModifyTransformStart; - /** @type {?} */ - HotTableComponent.prototype.afterMomentumScroll; - /** @type {?} */ - HotTableComponent.prototype.afterOnCellCornerDblClick; - /** @type {?} */ - HotTableComponent.prototype.afterOnCellCornerMouseDown; - /** @type {?} */ - HotTableComponent.prototype.afterOnCellMouseDown; - /** @type {?} */ - HotTableComponent.prototype.afterOnCellMouseOver; - /** @type {?} */ - HotTableComponent.prototype.afterOnCellMouseOut; - /** @type {?} */ - HotTableComponent.prototype.afterPluginsInitialized; - /** @type {?} */ - HotTableComponent.prototype.afterRedo; - /** @type {?} */ - HotTableComponent.prototype.afterRemoveCol; - /** @type {?} */ - HotTableComponent.prototype.afterRemoveRow; - /** @type {?} */ - HotTableComponent.prototype.afterRender; - /** @type {?} */ - HotTableComponent.prototype.afterRenderer; - /** @type {?} */ - HotTableComponent.prototype.afterRowMove; - /** @type {?} */ - HotTableComponent.prototype.afterRowResize; - /** @type {?} */ - HotTableComponent.prototype.afterScrollHorizontally; - /** @type {?} */ - HotTableComponent.prototype.afterScrollVertically; - /** @type {?} */ - HotTableComponent.prototype.afterSelection; - /** @type {?} */ - HotTableComponent.prototype.afterSelectionByProp; - /** @type {?} */ - HotTableComponent.prototype.afterSelectionEnd; - /** @type {?} */ - HotTableComponent.prototype.afterSelectionEndByProp; - /** @type {?} */ - HotTableComponent.prototype.afterSetCellMeta; - /** @type {?} */ - HotTableComponent.prototype.afterSetDataAtCell; - /** @type {?} */ - HotTableComponent.prototype.afterSetDataAtRowProp; - /** @type {?} */ - HotTableComponent.prototype.afterTrimRow; - /** @type {?} */ - HotTableComponent.prototype.afterUndo; - /** @type {?} */ - HotTableComponent.prototype.afterUntrimRow; - /** @type {?} */ - HotTableComponent.prototype.afterUpdateSettings; - /** @type {?} */ - HotTableComponent.prototype.afterValidate; - /** @type {?} */ - HotTableComponent.prototype.afterViewportColumnCalculatorOverride; - /** @type {?} */ - HotTableComponent.prototype.afterViewportRowCalculatorOverride; - /** @type {?} */ - HotTableComponent.prototype.beforeAddChild; - /** @type {?} */ - HotTableComponent.prototype.beforeAutofill; - /** @type {?} */ - HotTableComponent.prototype.beforeAutofillInsidePopulate; - /** @type {?} */ - HotTableComponent.prototype.beforeCellAlignment; - /** @type {?} */ - HotTableComponent.prototype.beforeChange; - /** @type {?} */ - HotTableComponent.prototype.beforeChangeRender; - /** @type {?} */ - HotTableComponent.prototype.beforeColumnMove; - /** @type {?} */ - HotTableComponent.prototype.beforeColumnResize; - /** @type {?} */ - HotTableComponent.prototype.beforeColumnSort; - /** @type {?} */ - HotTableComponent.prototype.beforeContextMenuSetItems; - /** @type {?} */ - HotTableComponent.prototype.beforeCopy; - /** @type {?} */ - HotTableComponent.prototype.beforeCreateCol; - /** @type {?} */ - HotTableComponent.prototype.beforeCreateRow; - /** @type {?} */ - HotTableComponent.prototype.beforeCut; - /** @type {?} */ - HotTableComponent.prototype.beforeDetachChild; - /** @type {?} */ - HotTableComponent.prototype.beforeDrawBorders; - /** @type {?} */ - HotTableComponent.prototype.beforeDropdownMenuSetItems; - /** @type {?} */ - HotTableComponent.prototype.beforeFilter; - /** @type {?} */ - HotTableComponent.prototype.beforeGetCellMeta; - /** @type {?} */ - HotTableComponent.prototype.beforeInit; - /** @type {?} */ - HotTableComponent.prototype.beforeInitWalkontable; - /** @type {?} */ - HotTableComponent.prototype.beforeKeyDown; - /** @type {?} */ - HotTableComponent.prototype.beforeOnCellMouseDown; - /** @type {?} */ - HotTableComponent.prototype.beforeOnCellMouseOut; - /** @type {?} */ - HotTableComponent.prototype.beforeOnCellMouseOver; - /** @type {?} */ - HotTableComponent.prototype.beforePaste; - /** @type {?} */ - HotTableComponent.prototype.beforeRedo; - /** @type {?} */ - HotTableComponent.prototype.beforeRemoveCol; - /** @type {?} */ - HotTableComponent.prototype.beforeRemoveRow; - /** @type {?} */ - HotTableComponent.prototype.beforeRender; - /** @type {?} */ - HotTableComponent.prototype.beforeRenderer; - /** @type {?} */ - HotTableComponent.prototype.beforeRowMove; - /** @type {?} */ - HotTableComponent.prototype.beforeRowResize; - /** @type {?} */ - HotTableComponent.prototype.beforeSetRangeEnd; - /** @type {?} */ - HotTableComponent.prototype.beforeSetRangeStart; - /** @type {?} */ - HotTableComponent.prototype.beforeStretchingColumnWidth; - /** @type {?} */ - HotTableComponent.prototype.beforeTouchScroll; - /** @type {?} */ - HotTableComponent.prototype.beforeUndo; - /** @type {?} */ - HotTableComponent.prototype.beforeValidate; - /** @type {?} */ - HotTableComponent.prototype.beforeValueRender; - /** @type {?} */ - HotTableComponent.prototype.construct; - /** @type {?} */ - HotTableComponent.prototype.hiddenColumn; - /** @type {?} */ - HotTableComponent.prototype.hiddenRow; - /** @type {?} */ - HotTableComponent.prototype.init; - /** @type {?} */ - HotTableComponent.prototype.manualRowHeights; - /** @type {?} */ - HotTableComponent.prototype.modifyAutofillRange; - /** @type {?} */ - HotTableComponent.prototype.modifyCol; - /** @type {?} */ - HotTableComponent.prototype.modifyColHeader; - /** @type {?} */ - HotTableComponent.prototype.modifyColumnHeaderHeight; - /** @type {?} */ - HotTableComponent.prototype.modifyColWidth; - /** @type {?} */ - HotTableComponent.prototype.modifyCopyableRange; - /** @type {?} */ - HotTableComponent.prototype.modifyData; - /** @type {?} */ - HotTableComponent.prototype.modifyRow; - /** @type {?} */ - HotTableComponent.prototype.modifyRowHeader; - /** @type {?} */ - HotTableComponent.prototype.modifyRowHeaderWidth; - /** @type {?} */ - HotTableComponent.prototype.modifyRowHeight; - /** @type {?} */ - HotTableComponent.prototype.modifyRowData; - /** @type {?} */ - HotTableComponent.prototype.modifyTransformEnd; - /** @type {?} */ - HotTableComponent.prototype.modifyTransformStart; - /** @type {?} */ - HotTableComponent.prototype.persistentStateLoad; - /** @type {?} */ - HotTableComponent.prototype.persistentStateReset; - /** @type {?} */ - HotTableComponent.prototype.persistentStateSave; - /** @type {?} */ - HotTableComponent.prototype.skipLengthCache; - /** @type {?} */ - HotTableComponent.prototype.unmodifyCol; - /** @type {?} */ - HotTableComponent.prototype.unmodifyRow; - /** @type {?} */ - HotTableComponent.prototype.el; - /** @type {?} */ - HotTableComponent.prototype._ngZone; - /** @type {?} */ - HotTableComponent.prototype._hotRegisterer; - /** @type {?} */ - HotTableComponent.prototype._hotHelper; -} diff --git a/dist/src/hot-table.component.metadata.json b/dist/src/hot-table.component.metadata.json deleted file mode 100644 index 97c8859..0000000 --- a/dist/src/hot-table.component.metadata.json +++ /dev/null @@ -1 +0,0 @@ -[{"__symbolic":"module","version":3,"metadata":{"HotTableComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"hot-table","template":"","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation"},"member":"None"},"providers":[{"__symbolic":"reference","module":"./hot-registerer.service","name":"HotRegisterer"},{"__symbolic":"reference","module":"./hot-settings.utils","name":"HotHelper"}]}]}],"members":{"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"hotId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowEmpty":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowHtml":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowInsertColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowInsertRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowInvalid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowRemoveColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowRemoveRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoColumnSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoComplete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoRowSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoWrapCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoWrapRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"bindRowsWithHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"cell":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"cells":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"checkedTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"className":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"colHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"collapsibleColumns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columnHeaderHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columnSorting":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columnSummary":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"colWidths":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"commentedCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"comments":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"contextMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyColsLimit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyPaste":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyRowsLimit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"correctFormat":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentColClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentHeaderClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentRowClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"customBorders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"dataSchema":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"dateFormat":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"defaultDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disableVisualSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"dropdownMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"editor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"enterBeginsEditing":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"enterMoves":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fillHandle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"filter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"filteringCaseSensitive":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"filters":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fixedColumnsLeft":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fixedRowsBottom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fixedRowsTop":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"format":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"formulas":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fragmentSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"ganttChart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"headerTooltips":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"hiddenColumns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"hiddenRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"invalidCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"language":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualColumnFreeze":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualColumnMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualColumnResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualRowMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualRowResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"maxCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"maxRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"mergeCells":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minSpareCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minSpareRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"multiSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"nestedHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"noWordWrapClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"observeChanges":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"observeDOMVisibility":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"outsideClickDeselects":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"pasteMode":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"persistentState":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"placeholderCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"preventOverflow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"readOnly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"readOnlyCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"renderAllRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"renderer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"rowHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"rowHeaderWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"rowHeights":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"search":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"selectOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"skipColumnOnPaste":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"sortByRelevance":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"sortFunction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"sortIndicator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"source":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"startCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"startRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"stretchH":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"strict":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"tableClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"tabMoves":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"trimDropdown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"trimRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"trimWhitespace":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"uncheckedTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"undo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"validator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"viewportColumnRenderingOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"viewportRowRenderingOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"visibleRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"wordWrap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"afterAddChild":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterBeginEditing":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterCellMetaReset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterChangesObserved":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterColumnMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterColumnResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterColumnSort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterContextMenuDefaultOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterContextMenuHide":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterContextMenuShow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterCopy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterCopyLimit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterCreateCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterCreateRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterCut":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDeselect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDestroy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDetachChild":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDocumentKeyDown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDropdownMenuDefaultOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDropdownMenuHide":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDropdownMenuShow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterGetCellMeta":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterGetColHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterGetColumnHeaderRenderers":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterGetRowHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterGetRowHeaderRenderers":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterInit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterLoadData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterModifyTransformEnd":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterModifyTransformStart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterMomentumScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterOnCellCornerDblClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterOnCellCornerMouseDown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterOnCellMouseDown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterOnCellMouseOver":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterOnCellMouseOut":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterPluginsInitialized":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRedo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRemoveCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRemoveRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRender":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRenderer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRowMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRowResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterScrollHorizontally":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterScrollVertically":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSelectionByProp":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSelectionEnd":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSelectionEndByProp":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSetCellMeta":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSetDataAtCell":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSetDataAtRowProp":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterTrimRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterUndo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterUntrimRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterUpdateSettings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterValidate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterViewportColumnCalculatorOverride":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterViewportRowCalculatorOverride":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeAddChild":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeAutofill":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeAutofillInsidePopulate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeCellAlignment":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeChangeRender":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeColumnMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeColumnResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeColumnSort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeContextMenuSetItems":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeCopy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeCreateCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeCreateRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeCut":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeDetachChild":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeDrawBorders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeDropdownMenuSetItems":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeGetCellMeta":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeInit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeInitWalkontable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeKeyDown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeOnCellMouseDown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeOnCellMouseOut":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeOnCellMouseOver":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforePaste":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRedo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRemoveCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRemoveRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRender":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRenderer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRowMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRowResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeSetRangeEnd":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeSetRangeStart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeStretchingColumnWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeTouchScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeUndo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeValidate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeValueRender":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"construct":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"hiddenColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"hiddenRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"init":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"manualRowHeights":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyAutofillRange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyColHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyColumnHeaderHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyColWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyCopyableRange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyRowHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyRowHeaderWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyRowHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyRowData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyTransformEnd":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyTransformStart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"persistentStateLoad":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"persistentStateReset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"persistentStateSave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"skipLengthCache":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"unmodifyCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"unmodifyRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone"},{"__symbolic":"reference","module":"./hot-registerer.service","name":"HotRegisterer"},{"__symbolic":"reference","module":"./hot-settings.utils","name":"HotHelper"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateHotTable":[{"__symbolic":"method"}],"onAfterColumnsChange":[{"__symbolic":"method"}],"onAfterColumnsNumberChange":[{"__symbolic":"method"}],"addColumn":[{"__symbolic":"method"}],"removeColumn":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"HotTableComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"hot-table","template":"","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation"},"member":"None"},"providers":[{"__symbolic":"reference","module":"./hot-registerer.service","name":"HotRegisterer"},{"__symbolic":"reference","module":"./hot-settings.utils","name":"HotHelper"}]}]}],"members":{"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"hotId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowEmpty":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowHtml":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowInsertColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowInsertRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowInvalid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowRemoveColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"allowRemoveRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoColumnSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoComplete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoRowSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoWrapCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"autoWrapRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"bindRowsWithHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"cell":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"cells":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"checkedTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"className":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"colHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"collapsibleColumns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columnHeaderHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columnSorting":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"columnSummary":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"colWidths":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"commentedCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"comments":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"contextMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyColsLimit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyPaste":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"copyRowsLimit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"correctFormat":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentColClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentHeaderClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentRowClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"customBorders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"dataSchema":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"dateFormat":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"defaultDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disableVisualSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"dropdownMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"editor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"enterBeginsEditing":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"enterMoves":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fillHandle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"filter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"filteringCaseSensitive":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"filters":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fixedColumnsLeft":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fixedRowsBottom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fixedRowsTop":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"format":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"formulas":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fragmentSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"ganttChart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"headerTooltips":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"hiddenColumns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"hiddenRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"invalidCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"language":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualColumnFreeze":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualColumnMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualColumnResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualRowMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"manualRowResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"maxCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"maxRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"mergeCells":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minSpareCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"minSpareRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"multiSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"nestedHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"noWordWrapClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"observeChanges":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"observeDOMVisibility":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"outsideClickDeselects":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"pasteMode":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"persistentState":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"placeholderCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"preventOverflow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"readOnly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"readOnlyCellClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"renderAllRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"renderer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"rowHeaders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"rowHeaderWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"rowHeights":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"search":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"selectOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"skipColumnOnPaste":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"sortByRelevance":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"sortFunction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"sortIndicator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"source":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"startCols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"startRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"stretchH":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"strict":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"tableClassName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"tabMoves":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"trimDropdown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"trimRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"trimWhitespace":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"uncheckedTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"undo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"validator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"viewportColumnRenderingOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"viewportRowRenderingOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"visibleRows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"wordWrap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"afterAddChild":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterBeginEditing":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterCellMetaReset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterChangesObserved":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterColumnMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterColumnResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterColumnSort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterContextMenuDefaultOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterContextMenuHide":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterContextMenuShow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterCopy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterCopyLimit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterCreateCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterCreateRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterCut":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDeselect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDestroy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDetachChild":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDocumentKeyDown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDropdownMenuDefaultOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDropdownMenuHide":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterDropdownMenuShow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterGetCellMeta":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterGetColHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterGetColumnHeaderRenderers":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterGetRowHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterGetRowHeaderRenderers":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterInit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterLoadData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterModifyTransformEnd":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterModifyTransformStart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterMomentumScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterOnCellCornerDblClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterOnCellCornerMouseDown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterOnCellMouseDown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterOnCellMouseOver":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterOnCellMouseOut":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterPluginsInitialized":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRedo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRemoveCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRemoveRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRender":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRenderer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRowMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterRowResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterScrollHorizontally":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterScrollVertically":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSelectionByProp":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSelectionEnd":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSelectionEndByProp":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSetCellMeta":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSetDataAtCell":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterSetDataAtRowProp":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterTrimRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterUndo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterUntrimRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterUpdateSettings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterValidate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterViewportColumnCalculatorOverride":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"afterViewportRowCalculatorOverride":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeAddChild":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeAutofill":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeAutofillInsidePopulate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeCellAlignment":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeChangeRender":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeColumnMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeColumnResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeColumnSort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeContextMenuSetItems":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeCopy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeCreateCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeCreateRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeCut":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeDetachChild":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeDrawBorders":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeDropdownMenuSetItems":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeGetCellMeta":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeInit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeInitWalkontable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeKeyDown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeOnCellMouseDown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeOnCellMouseOut":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeOnCellMouseOver":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforePaste":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRedo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRemoveCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRemoveRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRender":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRenderer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRowMove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeRowResize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeSetRangeEnd":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeSetRangeStart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeStretchingColumnWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeTouchScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeUndo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeValidate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"beforeValueRender":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"construct":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"hiddenColumn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"hiddenRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"init":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"manualRowHeights":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyAutofillRange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyColHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyColumnHeaderHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyColWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyCopyableRange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyRowHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyRowHeaderWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyRowHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyRowData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyTransformEnd":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"modifyTransformStart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"persistentStateLoad":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"persistentStateReset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"persistentStateSave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"skipLengthCache":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"unmodifyCol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"unmodifyRow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone"},{"__symbolic":"reference","module":"./hot-registerer.service","name":"HotRegisterer"},{"__symbolic":"reference","module":"./hot-settings.utils","name":"HotHelper"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateHotTable":[{"__symbolic":"method"}],"onAfterColumnsChange":[{"__symbolic":"method"}],"onAfterColumnsNumberChange":[{"__symbolic":"method"}],"addColumn":[{"__symbolic":"method"}],"removeColumn":[{"__symbolic":"method"}]}}}}] \ No newline at end of file diff --git a/e2e/app.e2e-spec.ts b/e2e/app.e2e-spec.ts new file mode 100644 index 0000000..ac614af --- /dev/null +++ b/e2e/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { NgPackagedPage } from './app.po'; + +describe('ng-packaged App', () => { + let page: NgPackagedPage; + + beforeEach(() => { + page = new NgPackagedPage(); + }); + + it('should display message saying app works', () => { + page.navigateTo(); + expect(page.getParagraphText()).toEqual('app works!'); + }); +}); diff --git a/e2e/app.po.ts b/e2e/app.po.ts new file mode 100644 index 0000000..0c27b1d --- /dev/null +++ b/e2e/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class NgPackagedPage { + navigateTo() { + return browser.get('/'); + } + + getParagraphText() { + return element(by.css('app-root h1')).getText(); + } +} diff --git a/e2e/tsconfig.e2e.json b/e2e/tsconfig.e2e.json new file mode 100644 index 0000000..e2a9a2f --- /dev/null +++ b/e2e/tsconfig.e2e.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "node" + ] + } +} diff --git a/index.ts b/index.ts deleted file mode 100644 index afa10dc..0000000 --- a/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './module'; -export * from './src/hot-registerer.service'; \ No newline at end of file diff --git a/karma.conf.js b/karma.conf.js index fc51e55..bf7de0d 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1 +1,58 @@ -module.exports = require('./config/karma.conf.js'); \ No newline at end of file +// Karma configuration file, see link for more information +// https://karma-runner.github.io/0.13/config/configuration-file.html + +module.exports = function (config) { + var _config = { + basePath: '', + frameworks: ['jasmine', '@angular/cli'], + customLaunchers: { + Chrome_travis_ci: { + base: 'Chrome', + flags: ['--no-sandbox'] + } + }, + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular/cli/plugins/karma') + ], + client:{ + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + files: [ + "node_modules/handsontable-pro/dist/handsontable.full.min.css", + { pattern: './src/test.ts', watched: false } + ], + preprocessors: { + './src/test.ts': ['@angular/cli'] + }, + mime: { + 'text/x-typescript': ['ts','tsx'] + }, + coverageIstanbulReporter: { + reports: [ 'html', 'lcovonly' ], + fixWebpackSourcePaths: true + }, + angularCli: { + environment: 'dev' + }, + reporters: config.angularCli && config.angularCli.codeCoverage + ? ['progress', 'coverage-istanbul'] + : ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_WARN, + autoWatch: false, + browsers: ['Chrome'], + singleRun: true, + browserNoActivityTimeout: 60000 + }; + + if (process.env.TRAVIS) { + _config.browsers = ['Chrome_travis_ci']; + } + + config.set(_config); +}; diff --git a/lib/ce/.browserslistrc b/lib/ce/.browserslistrc new file mode 100644 index 0000000..f0b0c01 --- /dev/null +++ b/lib/ce/.browserslistrc @@ -0,0 +1,3 @@ +last 2 Chrome versions +iOS > 10 +Safari > 10 diff --git a/lib/ce/package.json b/lib/ce/package.json new file mode 100644 index 0000000..711c0b6 --- /dev/null +++ b/lib/ce/package.json @@ -0,0 +1,53 @@ +{ + "name": "@angular-handsontable/ce", + "version": "1.0.0", + "description": "Official Angular.io directive for Handsontable", + "repository": { + "type": "git", + "url": "https://github.com/handsontable/angular-handsontable.git" + }, + "author": { + "name": "Handsoncode", + "email": "hello@handsontable.com" + }, + "keywords": [ + "angular", + "angular2", + "angular4", + "angular5", + "ngx", + "handsontable", + "data", + "grid", + "table", + "editor", + "grid-editor", + "data-grid", + "data-table", + "spreadsheet", + "excel", + "tabular-data", + "edit-cell", + "editable-table", + "data-spreadsheet" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/handsontable/angular-handsontable/issues" + }, + "peerDependencies": { + "handsontable": "0.35.0", + "zone.js": "^0.8.19" + }, + "ngPackage": { + "$schema": "./node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/ce", + "workingDirectory": "../../.ng_build/ce", + "lib": { + "entryFile": "src/public_api.ts", + "umdModuleIds": { + "handsontable": "Handsontable" + } + } + } +} diff --git a/lib/ce/src/hot-column.component.ts b/lib/ce/src/hot-column.component.ts new file mode 100644 index 0000000..9cadf4f --- /dev/null +++ b/lib/ce/src/hot-column.component.ts @@ -0,0 +1,149 @@ +import { + Component, + Injector, + OnInit, + OnChanges, + OnDestroy, + SimpleChanges, + Input, +} from '@angular/core'; + +import { HotTableComponent } from './hot-table.component'; + +@Component({ + // tslint:disable-next-line + selector: 'hot-column', + template: '', +}) + +export class HotColumnComponent implements OnInit, OnChanges, OnDestroy { + private parentComponent: HotTableComponent; + private firstRun = true; + + @Input() allowEmpty: boolean; + @Input() allowHtml: boolean; + @Input() allowInsertColumn: boolean; + @Input() allowInsertRow: boolean; + @Input() allowInvalid: boolean; + @Input() allowRemoveColumn: boolean; + @Input() allowRemoveRow: boolean; + @Input() autoColumnSize: boolean | object; + @Input() autoComplete: any[]; + @Input() autoRowSize: boolean | object; + @Input() autoWrapCol: boolean; + @Input() autoWrapRow: boolean; + @Input() cell: any[]; + @Input() cells: (row: number, column: number, prop: object) => object; + @Input() checkedTemplate: boolean | string; + @Input() className: string | string[]; + @Input() colHeaders: boolean | string[] | ((column: number) => string); + @Input() columnHeaderHeight: number | number[]; + @Input() columns: object[] | ((column: number) => object); + @Input() columnSorting: boolean | object; + @Input() colWidths: number | number[] | string | ((column: number) => number); + @Input() commentedCellClassName: string; + @Input() comments: boolean | object[]; + @Input() contextMenu: boolean | object | object[]; + @Input() copyable: boolean; + @Input() copyPaste: boolean; + @Input() correctFormat: boolean; + @Input() currentColClassName: string; + @Input() currentHeaderClassName: string; + @Input() currentRowClassName: string; + @Input() customBorders: boolean | object[]; + @Input() data: any[]; + @Input() dataSchema: object; + @Input() dateFormat: string; + @Input() debug: boolean; + @Input() defaultDate: string; + @Input() disableVisualSelection: boolean | string | string[]; + @Input() dragToScroll: boolean; + @Input() editor: boolean | string | (() => void); + @Input() enterBeginsEditing: boolean; + @Input() enterMoves: object | (() => void); + @Input() fillHandle: boolean | string | object; + @Input() filter: boolean; + @Input() filteringCaseSensitive: boolean; + @Input() fixedColumnsLeft: number; + @Input() fixedRowsTop: number; + @Input() fragmentSelection: boolean | string; + @Input() height: number | (() => number); + @Input() invalidCellClassName: string; + @Input() label: object; + @Input() language: string; + @Input() manualColumnFreeze: boolean; + @Input() manualColumnMove: boolean | number[]; + @Input() manualColumnResize: boolean | number[]; + @Input() manualRowMove: boolean | number[]; + @Input() manualRowResize: boolean | number[]; + @Input() maxCols: number; + @Input() maxRows: number; + @Input() mergeCells: boolean | object[]; + @Input() minCols: number; + @Input() minRows: number; + @Input() minSpareCols: number; + @Input() minSpareRows: number; + @Input() multiSelect: boolean; + @Input() noWordWrapClassName: string; + @Input() numericFormat: any; + @Input() observeChanges: boolean; + @Input() observeDOMVisibility: boolean; + @Input() outsideClickDeselects: boolean | ((event: Event) => boolean); + @Input() persistentState: boolean; + @Input() placeholder: any; + @Input() placeholderCellClassName: string; + @Input() preventOverflow: boolean | string; + @Input() readOnly: boolean; + @Input() readOnlyCellClassName: string; + @Input() renderAllRows: boolean; + @Input() renderer: string | (() => void); + @Input() rowHeaders: boolean | string[] | (() => string); + @Input() rowHeaderWidth: number | number[]; + @Input() rowHeights: number | number[] | string | ((row: number) => number); + @Input() search: boolean; + @Input() selectOptions: string[] | number[]; + @Input() skipColumnOnPaste: boolean; + @Input() sortByRelevance: boolean; + @Input() sortFunction: (sortOrder: boolean) => void; + @Input() sortIndicator: boolean; + @Input() source: any[] | (() => void); + @Input() startCols: number; + @Input() startRows: number; + @Input() stretchH: string; + @Input() strict: boolean; + @Input() tableClassName: string | string[]; + @Input() tabMoves: object; + @Input() title: string; + @Input() trimDropdown: boolean; + @Input() trimWhitespace: boolean; + @Input() type: string; + @Input() uncheckedTemplate: boolean | string; + @Input() undo: boolean; + @Input() validator: string | RegExp | (() => void); + @Input() viewportColumnRenderingOffset: number | string; + @Input() viewportRowRenderingOffset: number | string; + @Input() visibleRows: number; + @Input() width: number| (() => number); + @Input() wordWrap: boolean; + + constructor(private inj: Injector) { + this.parentComponent = this.inj.get(HotTableComponent); + } + + ngOnInit() { + this.firstRun = false; + this.parentComponent.addColumn(this); + } + + ngOnChanges(changes: SimpleChanges) { + if (this.firstRun) { + return; + } + + this.parentComponent.onAfterColumnsChange(); + } + + ngOnDestroy() { + this.parentComponent.removeColumn(this); + } +} diff --git a/lib/ce/src/hot-settings-resolver.service.ts b/lib/ce/src/hot-settings-resolver.service.ts new file mode 100644 index 0000000..e17da09 --- /dev/null +++ b/lib/ce/src/hot-settings-resolver.service.ts @@ -0,0 +1,105 @@ +import { Injectable, SimpleChanges } from '@angular/core'; + +const AVAILABLE_OPTIONS: string[] = ['allowEmpty', 'allowHtml', 'allowInsertColumn', 'allowInsertRow', +'allowInvalid', 'allowRemoveColumn', 'allowRemoveRow', 'autoColumnSize', 'autoComplete', 'autoRowSize', +'autoWrapCol', 'autoWrapRow', 'cell', 'cells', 'checkedTemplate', 'className', 'colHeaders', 'columnHeaderHeight', +'columns', 'columnSorting', 'colWidths', 'commentedCellClassName', 'comments', 'contextMenu', 'copyable', +'copyPaste', 'correctFormat', 'currentColClassName', 'currentHeaderClassName', 'currentRowClassName', +'customBorders', 'data', 'dataSchema', 'dateFormat', 'debug', 'defaultDate', 'disableVisualSelection', +'dragToScroll', 'editor', 'enterBeginsEditing', 'enterMoves', 'fillHandle', 'filter', 'filteringCaseSensitive', +'fixedColumnsLeft', 'fixedRowsTop', 'fragmentSelection', 'height', 'invalidCellClassName', 'label', +'language', 'manualColumnFreeze', 'manualColumnMove', 'manualColumnResize', 'manualRowMove', 'manualRowResize', +'maxCols', 'maxRows', 'mergeCells', 'minCols', 'minRows', 'minSpareCols', 'minSpareRows', 'multiSelect', +'noWordWrapClassName', 'numericFormat', 'observeChanges', 'observeDOMVisibility', 'outsideClickDeselects', +'persistentState', 'placeholder', 'placeholderCellClassName', 'preventOverflow', 'readOnly', +'readOnlyCellClassName', 'renderAllRows', 'renderer', 'rowHeaders', 'rowHeaderWidth', 'rowHeights', +'search', 'selectOptions', 'skipColumnOnPaste', 'sortByRelevance', 'sortFunction', 'sortIndicator', +'source', 'startCols', 'startRows', 'stretchH', 'strict', 'tableClassName', 'tabMoves', 'title', +'trimDropdown', 'trimWhitespace', 'type', 'uncheckedTemplate', 'undo', 'validator', +'viewportColumnRenderingOffset', 'viewportRowRenderingOffset', 'visibleRows', 'width', 'wordWrap']; + +const AVAILABLE_HOOKS: string[] = ['afterBeginEditing', 'afterCellMetaReset', 'afterChange', +'afterChangesObserved', 'afterColumnMove', 'afterColumnResize', 'afterColumnSort', +'afterContextMenuDefaultOptions', 'afterContextMenuHide', 'afterContextMenuShow', 'afterCopy', +'afterCopyLimit', 'afterCreateCol', 'afterCreateRow', 'afterCut', 'afterDeselect', 'afterDestroy', +'afterDocumentKeyDown', 'afterGetCellMeta', 'afterGetColHeader', 'afterGetColumnHeaderRenderers', +'afterGetRowHeader', 'afterGetRowHeaderRenderers', 'afterInit', 'afterLanguageChange', 'afterListen', +'afterLoadData', 'afterModifyTransformEnd', 'afterModifyTransformStart', 'afterMomentumScroll', +'afterOnCellCornerDblClick', 'afterOnCellCornerMouseDown', 'afterOnCellMouseDown', +'afterOnCellMouseOut', 'afterOnCellMouseOver', 'afterPaste', 'afterPluginsInitialized', 'afterRedo', +'afterRemoveCellMeta', 'afterRemoveCol', 'afterRemoveRow', 'afterRender', 'afterRenderer', +'afterRowMove', 'afterRowResize', 'afterScrollHorizontally', 'afterScrollVertically', 'afterSelection', +'afterSelectionByProp', 'afterSelectionEnd', 'afterSelectionEndByProp', 'afterSetCellMeta', +'afterSetDataAtCell', 'afterSetDataAtRowProp', 'afterUndo', 'afterUnlisten', 'afterUpdateSettings', +'afterValidate', 'afterViewportColumnCalculatorOverride', 'afterViewportRowCalculatorOverride', +'beforeAutofill', 'beforeAutofillInsidePopulate', 'beforeCellAlignment', 'beforeChange', 'beforeChangeRender', +'beforeColumnMove', 'beforeColumnResize', 'beforeColumnSort', 'beforeContextMenuSetItems', 'beforeCopy', +'beforeCreateCol', 'beforeCreateRow', 'beforeCut', 'beforeDrawBorders', 'beforeGetCellMeta', 'beforeInit', +'beforeInitWalkontable', 'beforeKeyDown', 'beforeLanguageChange', 'beforeOnCellMouseDown', 'beforeOnCellMouseOut', +'beforeOnCellMouseOver', 'beforePaste', 'beforeRedo', 'beforeRemoveCellMeta', 'beforeRemoveCol', +'beforeRemoveRow', 'beforeRender', 'beforeRenderer', 'beforeRowMove', 'beforeRowResize', 'beforeSetRangeEnd', +'beforeSetRangeEnd', 'beforeStretchingColumnWidth', 'beforeTouchScroll', 'beforeUndo', 'beforeValidate', +'beforeValueRender', 'construct', 'init', 'manualRowHeights', 'modifyAutofillRange', 'modifyCol', +'modifyColHeader', 'modifyColumnHeaderHeight', 'modifyColWidth', 'modifyCopyableRange', 'modifyData', +'modifyRow', 'modifyRowData', 'modifyRowHeader', 'modifyRowHeaderWidth', 'modifyRowHeight', 'modifyTransformEnd', +'modifyTransformStart', 'persistentStateLoad', 'persistentStateReset', 'persistentStateSave', +'skipLengthCache', 'unmodifyCol', 'unmodifyRow']; + +@Injectable() +export class HotSettingsResolver { + private hooks = AVAILABLE_HOOKS; + private options = AVAILABLE_OPTIONS; + + mergeSettings(component): object { + const mergedSettings: object = {}; + + if (component['settings'] !== void 0) { + Object.keys(component['settings']).forEach((key) => { + if (this.hooks.indexOf(key) > -1) { + mergedSettings[key] = (p1, p2, p3, p4, p5, p6) => { + return component._ngZone.run(() => { + return component['settings'][key](p1, p2, p3, p4, p5, p6); + }) + }; + } else { + mergedSettings[key] = component['settings'][key]; + } + }); + } + + this.options.forEach((key) => { + const option = component[key]; + + if (option !== void 0) { + mergedSettings[key] = option; + } + }); + + this.hooks.forEach((key) => { + const hook = component[key]; + + if (hook && hook.observers.length > 0) { + mergedSettings[key] = (p1, p2, p3, p4, p5, p6) => { + component._ngZone.run(() => { + component[key].emit({ hotInstance: component.hotInstance, params: [p1, p2, p3, p4, p5, p6] }); + }); + }; + } + }); + + return mergedSettings; + } + + prepareChanges(changes: SimpleChanges): object { + const result: object = {}; + const parameters: string[] = Object.keys(changes); + + parameters.forEach((param) => { + if (changes.hasOwnProperty(param)) { + result[param] = changes[param].currentValue; + } + }); + + return result; + } +} diff --git a/src/hot-registerer.service.ts b/lib/ce/src/hot-table-registerer.service.ts similarity index 82% rename from src/hot-registerer.service.ts rename to lib/ce/src/hot-table-registerer.service.ts index 8263bbe..0b3ada8 100644 --- a/src/hot-registerer.service.ts +++ b/lib/ce/src/hot-table-registerer.service.ts @@ -1,10 +1,11 @@ import { Injectable } from '@angular/core'; -import Handsontable from 'handsontable'; + +import * as Handsontable from 'handsontable'; const instances = new Map(); @Injectable() -export class HotRegisterer { +export class HotTableRegisterer { public getInstance(id: string): Handsontable { return instances.get(id); } diff --git a/lib/ce/src/hot-table.component.ts b/lib/ce/src/hot-table.component.ts new file mode 100644 index 0000000..e28ed6d --- /dev/null +++ b/lib/ce/src/hot-table.component.ts @@ -0,0 +1,378 @@ +import { + Component, + ElementRef, + NgZone, + AfterContentInit, + OnChanges, + OnDestroy, + OnInit, + SimpleChanges, + ViewEncapsulation, + Input, + Output, + EventEmitter, +} from '@angular/core'; + +import * as Handsontable from 'handsontable'; + +import { HotTableRegisterer } from './hot-table-registerer.service'; +import { HotSettingsResolver } from './hot-settings-resolver.service'; +import { HotColumnComponent } from './hot-column.component'; + +@Component({ + // tslint:disable-next-line + selector: 'hot-table', + template: '', + encapsulation: ViewEncapsulation.None, + providers: [ HotTableRegisterer, HotSettingsResolver ], +}) + +export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy, OnInit { + private hotInstance: Handsontable; + private container: HTMLElement; + private columnsComponents: HotColumnComponent[] = []; + + @Input() settings: object; + @Input() hotId: string; + + @Input() allowEmpty: boolean; + @Input() allowHtml: boolean; + @Input() allowInsertColumn: boolean; + @Input() allowInsertRow: boolean; + @Input() allowInvalid: boolean; + @Input() allowRemoveColumn: boolean; + @Input() allowRemoveRow: boolean; + @Input() autoColumnSize: boolean | object; + @Input() autoComplete: any[]; + @Input() autoRowSize: boolean | object; + @Input() autoWrapCol: boolean; + @Input() autoWrapRow: boolean; + @Input() cell: any[]; + @Input() cells: (row: number, column: number, prop: object) => object; + @Input() checkedTemplate: boolean | string; + @Input() className: string | string[]; + @Input() colHeaders: boolean | string[] | ((column: number) => string); + @Input() columnHeaderHeight: number | number[]; + @Input() columns: object[] | ((column: number) => object); + @Input() columnSorting: boolean | object; + @Input() colWidths: number | number[] | string | ((column: number) => number); + @Input() commentedCellClassName: string; + @Input() comments: boolean | object[]; + @Input() contextMenu: boolean | object | object[]; + @Input() copyable: boolean; + @Input() copyPaste: boolean | object; + @Input() correctFormat: boolean; + @Input() currentColClassName: string; + @Input() currentHeaderClassName: string; + @Input() currentRowClassName: string; + @Input() customBorders: boolean | object[]; + @Input() data: any[]; + @Input() dataSchema: object; + @Input() dateFormat: string; + @Input() debug: boolean; + @Input() defaultDate: string; + @Input() disableVisualSelection: boolean | string | string[]; + @Input() dragToScroll: boolean; + @Input() editor: boolean | string | (() => void); + @Input() enterBeginsEditing: boolean; + @Input() enterMoves: object | (() => void); + @Input() fillHandle: boolean | string | object; + @Input() filter: boolean; + @Input() filteringCaseSensitive: boolean; + @Input() fixedColumnsLeft: number; + @Input() fixedRowsTop: number; + @Input() format: string; + @Input() fragmentSelection: boolean | string; + @Input() height: number | (() => number); + @Input() invalidCellClassName: string; + @Input() label: object; + @Input() language: string; + @Input() manualColumnFreeze: boolean; + @Input() manualColumnMove: boolean | number[]; + @Input() manualColumnResize: boolean | number[]; + @Input() manualRowMove: boolean | number[]; + @Input() manualRowResize: boolean | number[]; + @Input() maxCols: number; + @Input() maxRows: number; + @Input() mergeCells: boolean | object[]; + @Input() minCols: number; + @Input() minRows: number; + @Input() minSpareCols: number; + @Input() minSpareRows: number; + @Input() multiSelect: boolean; + @Input() noWordWrapClassName: string; + @Input() numericFormat: any; + @Input() observeChanges: boolean; + @Input() observeDOMVisibility: boolean; + @Input() outsideClickDeselects: boolean | ((event: Event) => boolean); + @Input() pasteMode: string; + @Input() persistentState: boolean; + @Input() placeholder: any; + @Input() placeholderCellClassName: string; + @Input() preventOverflow: boolean | string; + @Input() readOnly: boolean; + @Input() readOnlyCellClassName: string; + @Input() renderAllRows: boolean; + @Input() renderer: string | (() => void); + @Input() rowHeaders: boolean | string[] | (() => string); + @Input() rowHeaderWidth: number | number[]; + @Input() rowHeights: number | number[] | string | ((row: number) => number); + @Input() search: boolean; + @Input() selectOptions: string[] | number[]; + @Input() skipColumnOnPaste: boolean; + @Input() sortByRelevance: boolean; + @Input() sortFunction: (sortOrder: boolean) => void; + @Input() sortIndicator: boolean; + @Input() source: any[] | (() => void); + @Input() startCols: number; + @Input() startRows: number; + @Input() stretchH: string; + @Input() strict: boolean; + @Input() tableClassName: string | string[]; + @Input() tabMoves: object; + @Input() title: string; + @Input() trimDropdown: boolean; + @Input() trimWhitespace: boolean; + @Input() type: string; + @Input() uncheckedTemplate: boolean | string; + @Input() undo: boolean; + @Input() validator: string | RegExp | (() => void); + @Input() viewportColumnRenderingOffset: number | string; + @Input() viewportRowRenderingOffset: number | string; + @Input() visibleRows: number; + @Input() width: number| (() => number); + @Input() wordWrap: boolean; + + @Output() afterBeginEditing: EventEmitter = new EventEmitter(); + @Output() afterCellMetaReset: EventEmitter = new EventEmitter(); + @Output() afterChange: EventEmitter = new EventEmitter(); + @Output() afterChangesObserved: EventEmitter = new EventEmitter(); + @Output() afterColumnMove: EventEmitter = new EventEmitter(); + @Output() afterColumnResize: EventEmitter = new EventEmitter(); + @Output() afterColumnSort: EventEmitter = new EventEmitter(); + @Output() afterContextMenuDefaultOptions: EventEmitter = new EventEmitter(); + @Output() afterContextMenuHide: EventEmitter = new EventEmitter(); + @Output() afterContextMenuShow: EventEmitter = new EventEmitter(); + @Output() afterCopy: EventEmitter = new EventEmitter(); + @Output() afterCopyLimit: EventEmitter = new EventEmitter(); + @Output() afterCreateCol: EventEmitter = new EventEmitter(); + @Output() afterCreateRow: EventEmitter = new EventEmitter(); + @Output() afterCut: EventEmitter = new EventEmitter(); + @Output() afterDeselect: EventEmitter = new EventEmitter(); + @Output() afterDestroy: EventEmitter = new EventEmitter(); + @Output() afterDocumentKeyDown: EventEmitter = new EventEmitter(); + @Output() afterGetCellMeta: EventEmitter = new EventEmitter(); + @Output() afterGetColHeader: EventEmitter = new EventEmitter(); + @Output() afterGetColumnHeaderRenderers: EventEmitter = new EventEmitter(); + @Output() afterGetRowHeader: EventEmitter = new EventEmitter(); + @Output() afterGetRowHeaderRenderers: EventEmitter = new EventEmitter(); + @Output() afterInit: EventEmitter = new EventEmitter(); + @Output() afterLanguageChange: EventEmitter = new EventEmitter(); + @Output() afterListen: EventEmitter = new EventEmitter(); + @Output() afterLoadData: EventEmitter = new EventEmitter(); + @Output() afterModifyTransformEnd: EventEmitter = new EventEmitter(); + @Output() afterModifyTransformStart: EventEmitter = new EventEmitter(); + @Output() afterMomentumScroll: EventEmitter = new EventEmitter(); + @Output() afterOnCellCornerDblClick: EventEmitter = new EventEmitter(); + @Output() afterOnCellCornerMouseDown: EventEmitter = new EventEmitter(); + @Output() afterOnCellMouseDown: EventEmitter = new EventEmitter(); + @Output() afterOnCellMouseOut: EventEmitter = new EventEmitter(); + @Output() afterOnCellMouseOver: EventEmitter = new EventEmitter(); + @Output() afterPaste: EventEmitter = new EventEmitter(); + @Output() afterPluginsInitialized: EventEmitter = new EventEmitter(); + @Output() afterRedo: EventEmitter = new EventEmitter(); + @Output() afterRemoveCellMeta: EventEmitter = new EventEmitter(); + @Output() afterRemoveCol: EventEmitter = new EventEmitter(); + @Output() afterRemoveRow: EventEmitter = new EventEmitter(); + @Output() afterRender: EventEmitter = new EventEmitter(); + @Output() afterRenderer: EventEmitter = new EventEmitter(); + @Output() afterRowMove: EventEmitter = new EventEmitter(); + @Output() afterRowResize: EventEmitter = new EventEmitter(); + @Output() afterScrollHorizontally: EventEmitter = new EventEmitter(); + @Output() afterScrollVertically: EventEmitter = new EventEmitter(); + @Output() afterSelection: EventEmitter = new EventEmitter(); + @Output() afterSelectionByProp: EventEmitter = new EventEmitter(); + @Output() afterSelectionEnd: EventEmitter = new EventEmitter(); + @Output() afterSelectionEndByProp: EventEmitter = new EventEmitter(); + @Output() afterSetCellMeta: EventEmitter = new EventEmitter(); + @Output() afterSetDataAtCell: EventEmitter = new EventEmitter(); + @Output() afterSetDataAtRowProp: EventEmitter = new EventEmitter(); + @Output() afterUndo: EventEmitter = new EventEmitter(); + @Output() afterUnlisten: EventEmitter = new EventEmitter(); + @Output() afterUpdateSettings: EventEmitter = new EventEmitter(); + @Output() afterValidate: EventEmitter = new EventEmitter(); + @Output() afterViewportColumnCalculatorOverride: EventEmitter = new EventEmitter(); + @Output() afterViewportRowCalculatorOverride: EventEmitter = new EventEmitter(); + @Output() beforeAutofill: EventEmitter = new EventEmitter(); + @Output() beforeAutofillInsidePopulate: EventEmitter = new EventEmitter(); + @Output() beforeCellAlignment: EventEmitter = new EventEmitter(); + @Output() beforeChange: EventEmitter = new EventEmitter(); + @Output() beforeChangeRender: EventEmitter = new EventEmitter(); + @Output() beforeColumnMove: EventEmitter = new EventEmitter(); + @Output() beforeColumnResize: EventEmitter = new EventEmitter(); + @Output() beforeColumnSort: EventEmitter = new EventEmitter(); + @Output() beforeContextMenuSetItems: EventEmitter = new EventEmitter(); + @Output() beforeCopy: EventEmitter = new EventEmitter(); + @Output() beforeCreateCol: EventEmitter = new EventEmitter(); + @Output() beforeCreateRow: EventEmitter = new EventEmitter(); + @Output() beforeCut: EventEmitter = new EventEmitter(); + @Output() beforeDrawBorders: EventEmitter = new EventEmitter(); + @Output() beforeGetCellMeta: EventEmitter = new EventEmitter(); + @Output() beforeInit: EventEmitter = new EventEmitter(); + @Output() beforeInitWalkontable: EventEmitter = new EventEmitter(); + @Output() beforeKeyDown: EventEmitter = new EventEmitter(); + @Output() beforeLanguageChange: EventEmitter = new EventEmitter(); + @Output() beforeOnCellMouseDown: EventEmitter = new EventEmitter(); + @Output() beforeOnCellMouseOut: EventEmitter = new EventEmitter(); + @Output() beforeOnCellMouseOver: EventEmitter = new EventEmitter(); + @Output() beforePaste: EventEmitter = new EventEmitter(); + @Output() beforeRedo: EventEmitter = new EventEmitter(); + @Output() beforeRemoveCellMeta: EventEmitter = new EventEmitter(); + @Output() beforeRemoveCol: EventEmitter = new EventEmitter(); + @Output() beforeRemoveRow: EventEmitter = new EventEmitter(); + @Output() beforeRender: EventEmitter = new EventEmitter(); + @Output() beforeRenderer: EventEmitter = new EventEmitter(); + @Output() beforeRowMove: EventEmitter = new EventEmitter(); + @Output() beforeRowResize: EventEmitter = new EventEmitter(); + @Output() beforeSetRangeEnd: EventEmitter = new EventEmitter(); + @Output() beforeSetRangeStart: EventEmitter = new EventEmitter(); + @Output() beforeStretchingColumnWidth: EventEmitter = new EventEmitter(); + @Output() beforeTouchScroll: EventEmitter = new EventEmitter(); + @Output() beforeUndo: EventEmitter = new EventEmitter(); + @Output() beforeValidate: EventEmitter = new EventEmitter(); + @Output() beforeValueRender: EventEmitter = new EventEmitter(); + @Output() construct: EventEmitter = new EventEmitter(); + @Output() init: EventEmitter = new EventEmitter(); + @Output() manualRowHeights: EventEmitter = new EventEmitter(); + @Output() modifyAutofillRange: EventEmitter = new EventEmitter(); + @Output() modifyCol: EventEmitter = new EventEmitter(); + @Output() modifyColHeader: EventEmitter = new EventEmitter(); + @Output() modifyColumnHeaderHeight: EventEmitter = new EventEmitter(); + @Output() modifyColWidth: EventEmitter = new EventEmitter(); + @Output() modifyCopyableRange: EventEmitter = new EventEmitter(); + @Output() modifyData: EventEmitter = new EventEmitter(); + @Output() modifyRow: EventEmitter = new EventEmitter(); + @Output() modifyRowData: EventEmitter = new EventEmitter(); + @Output() modifyRowHeader: EventEmitter = new EventEmitter(); + @Output() modifyRowHeaderWidth: EventEmitter = new EventEmitter(); + @Output() modifyRowHeight: EventEmitter = new EventEmitter(); + @Output() modifyTransformEnd: EventEmitter = new EventEmitter(); + @Output() modifyTransformStart: EventEmitter = new EventEmitter(); + @Output() persistentStateLoad: EventEmitter = new EventEmitter(); + @Output() persistentStateReset: EventEmitter = new EventEmitter(); + @Output() persistentStateSave: EventEmitter = new EventEmitter(); + @Output() skipLengthCache: EventEmitter = new EventEmitter(); + @Output() unmodifyCol: EventEmitter = new EventEmitter(); + @Output() unmodifyRow: EventEmitter = new EventEmitter(); + + constructor( + private el: ElementRef, + private _ngZone: NgZone, + private _hotTableRegisterer: HotTableRegisterer, + private _hotSettingsResolver: HotSettingsResolver + ) { } + + ngOnInit() { + this.container = document.createElement('div'); + + if (this.hotId) { + this.container.id = this.hotId; + } + + this.el.nativeElement.appendChild(this.container); + } + + ngAfterContentInit() { + const options = this._hotSettingsResolver.mergeSettings(this); + + if (this.columnsComponents.length > 0) { + const columns = []; + + this.columnsComponents.forEach((column) => { + columns.push(this._hotSettingsResolver.mergeSettings(column)); + }); + + options['columns'] = columns; + } + + this._ngZone.runOutsideAngular(() => { + this.hotInstance = new Handsontable(this.container, options); + }); + + if (this.hotId) { + this._hotTableRegisterer.registerInstance(this.hotId, this.hotInstance); + } + } + + ngOnChanges(changes: SimpleChanges) { + if (this.hotInstance === void 0) { + return; + } + + const newOptions = this._hotSettingsResolver.prepareChanges(changes); + + this.updateHotTable(newOptions); + } + + ngOnDestroy() { + this.hotInstance.destroy(); + + if (this.hotId) { + this._hotTableRegisterer.removeInstance(this.hotId); + } + + this.el.nativeElement.removeChild(this.container); + this.container = void 0; + } + + updateHotTable(newSettings: object) { + if (!this.hotInstance) { + return; + } + this.hotInstance.updateSettings(newSettings, false); + } + + onAfterColumnsChange() { + if (this.columnsComponents === void 0) { + return; + } + + if (this.columnsComponents.length > 0) { + const columns = []; + + this.columnsComponents.forEach((column) => { + columns.push(this._hotSettingsResolver.mergeSettings(column)); + }); + + const newOptions = { + columns: columns + }; + + this.updateHotTable(newOptions); + } + } + + onAfterColumnsNumberChange() { + const columns = []; + + if (this.columnsComponents.length > 0) { + this.columnsComponents.forEach((column) => { + columns.push(this._hotSettingsResolver.mergeSettings(column)); + }); + } + + this.updateHotTable({columns: columns}); + } + + addColumn(column: HotColumnComponent) { + this.columnsComponents.push(column); + this.onAfterColumnsNumberChange(); + } + + removeColumn(column: HotColumnComponent) { + const index = this.columnsComponents.indexOf(column); + + this.columnsComponents.splice(index, 1); + this.onAfterColumnsNumberChange(); + } +} diff --git a/lib/ce/src/hot-table.module.ts b/lib/ce/src/hot-table.module.ts new file mode 100644 index 0000000..e864fc7 --- /dev/null +++ b/lib/ce/src/hot-table.module.ts @@ -0,0 +1,27 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { HotTableComponent } from './hot-table.component'; +import { HotColumnComponent } from './hot-column.component'; +import { HotTableRegisterer } from './hot-table-registerer.service'; + +@NgModule({ + declarations: [ + HotTableComponent, + HotColumnComponent, + ], + exports: [ + HotTableComponent, + HotColumnComponent, + ] +}) +export class HotTableModule { + + public static forRoot(): ModuleWithProviders { + return { + ngModule: HotTableModule, + providers: [ + HotTableRegisterer + ] + }; + } +} diff --git a/lib/ce/src/public_api.ts b/lib/ce/src/public_api.ts new file mode 100644 index 0000000..d30c985 --- /dev/null +++ b/lib/ce/src/public_api.ts @@ -0,0 +1,5 @@ +export * from './hot-table.component'; +export * from './hot-column.component'; +export * from './hot-table-registerer.service'; +export * from './hot-settings-resolver.service'; +export * from './hot-table.module'; diff --git a/lib/pro/.browserslistrc b/lib/pro/.browserslistrc new file mode 100644 index 0000000..f0b0c01 --- /dev/null +++ b/lib/pro/.browserslistrc @@ -0,0 +1,3 @@ +last 2 Chrome versions +iOS > 10 +Safari > 10 diff --git a/lib/pro/package.json b/lib/pro/package.json new file mode 100644 index 0000000..0c32a3a --- /dev/null +++ b/lib/pro/package.json @@ -0,0 +1,53 @@ +{ + "name": "@angular-handsontable/pro", + "version": "1.0.0", + "description": "Official Angular.io directive for Handsontable", + "repository": { + "type": "git", + "url": "https://github.com/handsontable/angular-handsontable.git" + }, + "author": { + "name": "Handsoncode", + "email": "hello@handsontable.com" + }, + "keywords": [ + "angular", + "angular2", + "angular4", + "angular5", + "ngx", + "handsontable", + "data", + "grid", + "table", + "editor", + "grid-editor", + "data-grid", + "data-table", + "spreadsheet", + "excel", + "tabular-data", + "edit-cell", + "editable-table", + "data-spreadsheet" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/handsontable/angular-handsontable/issues" + }, + "peerDependencies": { + "handsontable-pro": "1.15.0", + "zone.js": "^0.8.19" + }, + "ngPackage": { + "$schema": "./node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/pro", + "workingDirectory": "../../.ng_build/pro", + "lib": { + "entryFile": "src/public_api.ts", + "umdModuleIds": { + "handsontable-pro": "Handsontable" + } + } + } +} diff --git a/src/hot-column.component.ts b/lib/pro/src/hot-column.component.ts similarity index 95% rename from src/hot-column.component.ts rename to lib/pro/src/hot-column.component.ts index be8e8c1..4c18d7d 100644 --- a/src/hot-column.component.ts +++ b/lib/pro/src/hot-column.component.ts @@ -1,21 +1,27 @@ import { Component, - Input, Injector, + OnInit, OnChanges, + OnDestroy, SimpleChanges, + Input, } from '@angular/core'; + + import { HotTableComponent } from './hot-table.component'; @Component({ + // tslint:disable-next-line selector: 'hot-column', - template: ``, + template: '', }) -export class HotColumnComponent implements OnChanges { - private firstRun = true; +export class HotColumnComponent implements OnInit, OnChanges, OnDestroy { private parentComponent: HotTableComponent; + private firstRun = true; + @Input() allowEmpty: boolean; @Input() allowHtml: boolean; @Input() allowInsertColumn: boolean; @Input() allowInsertRow: boolean; @@ -27,25 +33,20 @@ export class HotColumnComponent implements OnChanges { @Input() autoRowSize: boolean | object; @Input() autoWrapCol: boolean; @Input() autoWrapRow: boolean; - @Input() bindRowsWithHeaders: boolean | string; @Input() cell: any[]; @Input() cells: (row: number, column: number, prop: object) => object; @Input() checkedTemplate: boolean | string; @Input() className: string | string[]; @Input() colHeaders: boolean | string[] | ((column: number) => string); - @Input() collapsibleColumns: boolean | object[]; @Input() columnHeaderHeight: number | number[]; @Input() columns: object[] | ((column: number) => object); @Input() columnSorting: boolean | object; - @Input() columnSummary: object; @Input() colWidths: number | number[] | string | ((column: number) => number); @Input() commentedCellClassName: string; @Input() comments: boolean | object[]; @Input() contextMenu: boolean | object | object[]; @Input() copyable: boolean; - @Input() copyColsLimit: number; @Input() copyPaste: boolean; - @Input() copyRowsLimit: number; @Input() correctFormat: boolean; @Input() currentColClassName: string; @Input() currentHeaderClassName: string; @@ -57,25 +58,17 @@ export class HotColumnComponent implements OnChanges { @Input() debug: boolean; @Input() defaultDate: string; @Input() disableVisualSelection: boolean | string | string[]; - @Input() dropdownMenu: boolean | object | object[]; + @Input() dragToScroll: boolean; @Input() editor: boolean | string | (() => void); @Input() enterBeginsEditing: boolean; @Input() enterMoves: object | (() => void); @Input() fillHandle: boolean | string | object; @Input() filter: boolean; @Input() filteringCaseSensitive: boolean; - @Input() filters: boolean; @Input() fixedColumnsLeft: number; - @Input() fixedRowsBottom: number; @Input() fixedRowsTop: number; - @Input() format: string; - @Input() formulas: boolean; @Input() fragmentSelection: boolean | string; - @Input() ganttChart: object; - @Input() headerTooltips: boolean | object; @Input() height: number | (() => number); - @Input() hiddenColumns: boolean | object; - @Input() hiddenRows: boolean | object; @Input() invalidCellClassName: string; @Input() label: object; @Input() language: string; @@ -92,12 +85,11 @@ export class HotColumnComponent implements OnChanges { @Input() minSpareCols: number; @Input() minSpareRows: number; @Input() multiSelect: boolean; - @Input() nestedHeaders: any[]; @Input() noWordWrapClassName: string; + @Input() numericFormat: any; @Input() observeChanges: boolean; @Input() observeDOMVisibility: boolean; @Input() outsideClickDeselects: boolean | ((event: Event) => boolean); - @Input() pasteMode: string; @Input() persistentState: boolean; @Input() placeholder: any; @Input() placeholderCellClassName: string; @@ -124,7 +116,6 @@ export class HotColumnComponent implements OnChanges { @Input() tabMoves: object; @Input() title: string; @Input() trimDropdown: boolean; - @Input() trimRows: boolean | number[]; @Input() trimWhitespace: boolean; @Input() type: string; @Input() uncheckedTemplate: boolean | string; @@ -136,6 +127,20 @@ export class HotColumnComponent implements OnChanges { @Input() width: number| (() => number); @Input() wordWrap: boolean; + @Input() bindRowsWithHeaders: boolean | string; + @Input() collapsibleColumns: boolean | object[]; + @Input() columnSummary: object; + @Input() dropdownMenu: boolean | object | object[]; + @Input() filters: boolean; + @Input() fixedRowsBottom: number; + @Input() formulas: boolean; + @Input() ganttChart: object; + @Input() headerTooltips: boolean | object; + @Input() hiddenColumns: boolean | object; + @Input() hiddenRows: boolean | object; + @Input() licenseKey: string; + @Input() trimRows: boolean | number[]; + constructor(private inj: Injector) { this.parentComponent = this.inj.get(HotTableComponent); } diff --git a/lib/pro/src/hot-settings-resolver.service.ts b/lib/pro/src/hot-settings-resolver.service.ts new file mode 100644 index 0000000..8138e12 --- /dev/null +++ b/lib/pro/src/hot-settings-resolver.service.ts @@ -0,0 +1,135 @@ +import { Injectable, SimpleChanges } from '@angular/core'; + +const AVAILABLE_OPTIONS: string[] = ['allowEmpty', 'allowHtml', 'allowInsertColumn', 'allowInsertRow', +'allowInvalid', 'allowRemoveColumn', 'allowRemoveRow', 'autoColumnSize', 'autoComplete', 'autoRowSize', +'autoWrapCol', 'autoWrapRow', 'cell', 'cells', 'checkedTemplate', 'className', 'colHeaders', 'columnHeaderHeight', +'columns', 'columnSorting', 'colWidths', 'commentedCellClassName', 'comments', 'contextMenu', 'copyable', +'copyPaste', 'correctFormat', 'currentColClassName', 'currentHeaderClassName', 'currentRowClassName', +'customBorders', 'data', 'dataSchema', 'dateFormat', 'debug', 'defaultDate', 'disableVisualSelection', +'dragToScroll', 'editor', 'enterBeginsEditing', 'enterMoves', 'fillHandle', 'filter', 'filteringCaseSensitive', +'fixedColumnsLeft', 'fixedRowsTop', 'fragmentSelection', 'height', 'invalidCellClassName', 'label', +'language', 'manualColumnFreeze', 'manualColumnMove', 'manualColumnResize', 'manualRowMove', 'manualRowResize', +'maxCols', 'maxRows', 'mergeCells', 'minCols', 'minRows', 'minSpareCols', 'minSpareRows', 'multiSelect', +'noWordWrapClassName', 'numericFormat', 'observeChanges', 'observeDOMVisibility', 'outsideClickDeselects', +'persistentState', 'placeholder', 'placeholderCellClassName', 'preventOverflow', 'readOnly', +'readOnlyCellClassName', 'renderAllRows', 'renderer', 'rowHeaders', 'rowHeaderWidth', 'rowHeights', +'search', 'selectOptions', 'skipColumnOnPaste', 'sortByRelevance', 'sortFunction', 'sortIndicator', +'source', 'startCols', 'startRows', 'stretchH', 'strict', 'tableClassName', 'tabMoves', 'title', +'trimDropdown', 'trimWhitespace', 'type', 'uncheckedTemplate', 'undo', 'validator', +'viewportColumnRenderingOffset', 'viewportRowRenderingOffset', 'visibleRows', 'width', 'wordWrap']; + +const AVAILABLE_HOOKS: string[] = ['afterBeginEditing', 'afterCellMetaReset', 'afterChange', +'afterChangesObserved', 'afterColumnMove', 'afterColumnResize', 'afterColumnSort', +'afterContextMenuDefaultOptions', 'afterContextMenuHide', 'afterContextMenuShow', 'afterCopy', +'afterCopyLimit', 'afterCreateCol', 'afterCreateRow', 'afterCut', 'afterDeselect', 'afterDestroy', +'afterDocumentKeyDown', 'afterGetCellMeta', 'afterGetColHeader', 'afterGetColumnHeaderRenderers', +'afterGetRowHeader', 'afterGetRowHeaderRenderers', 'afterInit', 'afterLanguageChange', 'afterListen', +'afterLoadData', 'afterModifyTransformEnd', 'afterModifyTransformStart', 'afterMomentumScroll', +'afterOnCellCornerDblClick', 'afterOnCellCornerMouseDown', 'afterOnCellMouseDown', +'afterOnCellMouseOut', 'afterOnCellMouseOver', 'afterPaste', 'afterPluginsInitialized', 'afterRedo', +'afterRemoveCellMeta', 'afterRemoveCol', 'afterRemoveRow', 'afterRender', 'afterRenderer', +'afterRowMove', 'afterRowResize', 'afterScrollHorizontally', 'afterScrollVertically', 'afterSelection', +'afterSelectionByProp', 'afterSelectionEnd', 'afterSelectionEndByProp', 'afterSetCellMeta', +'afterSetDataAtCell', 'afterSetDataAtRowProp', 'afterUndo', 'afterUnlisten', 'afterUpdateSettings', +'afterValidate', 'afterViewportColumnCalculatorOverride', 'afterViewportRowCalculatorOverride', +'beforeAutofill', 'beforeAutofillInsidePopulate', 'beforeCellAlignment', 'beforeChange', 'beforeChangeRender', +'beforeColumnMove', 'beforeColumnResize', 'beforeColumnSort', 'beforeContextMenuSetItems', 'beforeCopy', +'beforeCreateCol', 'beforeCreateRow', 'beforeCut', 'beforeDrawBorders', 'beforeGetCellMeta', 'beforeInit', +'beforeInitWalkontable', 'beforeKeyDown', 'beforeLanguageChange', 'beforeOnCellMouseDown', 'beforeOnCellMouseOut', +'beforeOnCellMouseOver', 'beforePaste', 'beforeRedo', 'beforeRemoveCellMeta', 'beforeRemoveCol', +'beforeRemoveRow', 'beforeRender', 'beforeRenderer', 'beforeRowMove', 'beforeRowResize', 'beforeSetRangeEnd', +'beforeSetRangeEnd', 'beforeStretchingColumnWidth', 'beforeTouchScroll', 'beforeUndo', 'beforeValidate', +'beforeValueRender', 'construct', 'init', 'manualRowHeights', 'modifyAutofillRange', 'modifyCol', +'modifyColHeader', 'modifyColumnHeaderHeight', 'modifyColWidth', 'modifyCopyableRange', 'modifyData', +'modifyRow', 'modifyRowData', 'modifyRowHeader', 'modifyRowHeaderWidth', 'modifyRowHeight', 'modifyTransformEnd', +'modifyTransformStart', 'persistentStateLoad', 'persistentStateReset', 'persistentStateSave', +'skipLengthCache', 'unmodifyCol', 'unmodifyRow']; + +@Injectable() +export class HotSettingsResolver { + private hooks = AVAILABLE_HOOKS.concat([ + 'afterAddChild', + 'afterDetachChild', + 'afterDropdownMenuDefaultOptions', + 'afterDropdownMenuHide', + 'afterDropdownMenuShow', + 'afterFilter', + 'afterTrimRow', + 'afterUntrimRow', + 'beforeAddChild', + 'beforeDetachChild', + 'beforeDropdownMenuSetItems', + 'beforeFilter', + 'hiddenColumn', + 'hiddenRow', + ]); + private options = AVAILABLE_OPTIONS.concat([ + 'bindRowsWithHeaders', + 'collapsibleColumns', + 'columnSummary', + 'dropdownMenu', + 'filters', + 'fixedRowsBottom', + 'formulas', + 'ganttChart', + 'headerTooltips', + 'hiddenColumns', + 'hiddenRows', + 'licenseKey', + 'nestedHeaders', + 'trimRows', + ]); + + mergeSettings(component): object { + const mergedSettings: object = {}; + + if (component['settings'] !== void 0) { + Object.keys(component['settings']).forEach((key) => { + if (this.hooks.indexOf(key) > -1) { + mergedSettings[key] = (p1, p2, p3, p4, p5, p6) => { + return component._ngZone.run(() => { + return component['settings'][key](p1, p2, p3, p4, p5, p6); + }) + }; + } else { + mergedSettings[key] = component['settings'][key]; + } + }); + } + + this.options.forEach((key) => { + const option = component[key]; + + if (option !== void 0) { + mergedSettings[key] = option; + } + }); + + this.hooks.forEach((key) => { + const hook = component[key]; + + if (hook && hook.observers.length > 0) { + mergedSettings[key] = (p1, p2, p3, p4, p5, p6) => { + component._ngZone.run(() => { + component[key].emit({ hotInstance: component.hotInstance, params: [p1, p2, p3, p4, p5, p6] }); + }); + }; + } + }); + + return mergedSettings; + } + + prepareChanges(changes: SimpleChanges): object { + const result: object = {}; + const parameters: string[] = Object.keys(changes); + + parameters.forEach((param) => { + if (changes.hasOwnProperty(param)) { + result[param] = changes[param].currentValue; + } + }); + + return result; + } +} diff --git a/lib/pro/src/hot-table-registerer.service.ts b/lib/pro/src/hot-table-registerer.service.ts new file mode 100644 index 0000000..fc94c94 --- /dev/null +++ b/lib/pro/src/hot-table-registerer.service.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@angular/core'; + +import * as Handsontable from 'handsontable-pro'; + +const instances = new Map(); + +@Injectable() +export class HotTableRegisterer { + public getInstance(id: string): Handsontable { + return instances.get(id); + } + + public registerInstance(id: string, instance: Handsontable): void { + instances.set(id, instance); + } + + public removeInstance(id: string): void { + instances.delete(id); + } +} diff --git a/src/hot-table.component.ts b/lib/pro/src/hot-table.component.ts similarity index 90% rename from src/hot-table.component.ts rename to lib/pro/src/hot-table.component.ts index c72f869..6ff5341 100644 --- a/src/hot-table.component.ts +++ b/lib/pro/src/hot-table.component.ts @@ -1,28 +1,29 @@ import { Component, ElementRef, - EventEmitter, - Input, NgZone, AfterContentInit, OnChanges, OnDestroy, OnInit, - Output, SimpleChanges, ViewEncapsulation, + EventEmitter, + Input, + Output, } from '@angular/core'; -import Handsontable from 'handsontable'; +import * as Handsontable from 'handsontable-pro'; -import { HotRegisterer } from './hot-registerer.service'; -import { HotHelper } from './hot-settings.utils'; +import { HotTableRegisterer } from './hot-table-registerer.service'; +import { HotSettingsResolver } from './hot-settings-resolver.service'; import { HotColumnComponent } from './hot-column.component'; @Component({ + // tslint:disable-next-line selector: 'hot-table', - template: ``, + template: '', encapsulation: ViewEncapsulation.None, - providers: [ HotRegisterer, HotHelper ], + providers: [ HotTableRegisterer, HotSettingsResolver ], }) export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy, OnInit { @@ -45,25 +46,20 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy @Input() autoRowSize: boolean | object; @Input() autoWrapCol: boolean; @Input() autoWrapRow: boolean; - @Input() bindRowsWithHeaders: boolean | string; @Input() cell: any[]; @Input() cells: (row: number, column: number, prop: object) => object; @Input() checkedTemplate: boolean | string; @Input() className: string | string[]; @Input() colHeaders: boolean | string[] | ((column: number) => string); - @Input() collapsibleColumns: boolean | object[]; @Input() columnHeaderHeight: number | number[]; @Input() columns: object[] | ((column: number) => object); @Input() columnSorting: boolean | object; - @Input() columnSummary: object; @Input() colWidths: number | number[] | string | ((column: number) => number); @Input() commentedCellClassName: string; @Input() comments: boolean | object[]; @Input() contextMenu: boolean | object | object[]; @Input() copyable: boolean; - @Input() copyColsLimit: number; - @Input() copyPaste: boolean; - @Input() copyRowsLimit: number; + @Input() copyPaste: boolean | object; @Input() correctFormat: boolean; @Input() currentColClassName: string; @Input() currentHeaderClassName: string; @@ -75,25 +71,18 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy @Input() debug: boolean; @Input() defaultDate: string; @Input() disableVisualSelection: boolean | string | string[]; - @Input() dropdownMenu: boolean | object | object[]; + @Input() dragToScroll: boolean; @Input() editor: boolean | string | (() => void); @Input() enterBeginsEditing: boolean; @Input() enterMoves: object | (() => void); @Input() fillHandle: boolean | string | object; @Input() filter: boolean; @Input() filteringCaseSensitive: boolean; - @Input() filters: boolean; @Input() fixedColumnsLeft: number; - @Input() fixedRowsBottom: number; @Input() fixedRowsTop: number; @Input() format: string; - @Input() formulas: boolean; @Input() fragmentSelection: boolean | string; - @Input() ganttChart: object; - @Input() headerTooltips: boolean | object; @Input() height: number | (() => number); - @Input() hiddenColumns: boolean | object; - @Input() hiddenRows: boolean | object; @Input() invalidCellClassName: string; @Input() label: object; @Input() language: string; @@ -110,8 +99,8 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy @Input() minSpareCols: number; @Input() minSpareRows: number; @Input() multiSelect: boolean; - @Input() nestedHeaders: any[]; @Input() noWordWrapClassName: string; + @Input() numericFormat: any; @Input() observeChanges: boolean; @Input() observeDOMVisibility: boolean; @Input() outsideClickDeselects: boolean | ((event: Event) => boolean); @@ -142,7 +131,6 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy @Input() tabMoves: object; @Input() title: string; @Input() trimDropdown: boolean; - @Input() trimRows: boolean | number[]; @Input() trimWhitespace: boolean; @Input() type: string; @Input() uncheckedTemplate: boolean | string; @@ -154,7 +142,6 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy @Input() width: number| (() => number); @Input() wordWrap: boolean; - @Output() afterAddChild: EventEmitter = new EventEmitter(); @Output() afterBeginEditing: EventEmitter = new EventEmitter(); @Output() afterCellMetaReset: EventEmitter = new EventEmitter(); @Output() afterChange: EventEmitter = new EventEmitter(); @@ -172,18 +159,15 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy @Output() afterCut: EventEmitter = new EventEmitter(); @Output() afterDeselect: EventEmitter = new EventEmitter(); @Output() afterDestroy: EventEmitter = new EventEmitter(); - @Output() afterDetachChild: EventEmitter = new EventEmitter(); @Output() afterDocumentKeyDown: EventEmitter = new EventEmitter(); - @Output() afterDropdownMenuDefaultOptions: EventEmitter = new EventEmitter(); - @Output() afterDropdownMenuHide: EventEmitter = new EventEmitter(); - @Output() afterDropdownMenuShow: EventEmitter = new EventEmitter(); - @Output() afterFilter: EventEmitter = new EventEmitter(); @Output() afterGetCellMeta: EventEmitter = new EventEmitter(); @Output() afterGetColHeader: EventEmitter = new EventEmitter(); @Output() afterGetColumnHeaderRenderers: EventEmitter = new EventEmitter(); @Output() afterGetRowHeader: EventEmitter = new EventEmitter(); @Output() afterGetRowHeaderRenderers: EventEmitter = new EventEmitter(); @Output() afterInit: EventEmitter = new EventEmitter(); + @Output() afterLanguageChange: EventEmitter = new EventEmitter(); + @Output() afterListen: EventEmitter = new EventEmitter(); @Output() afterLoadData: EventEmitter = new EventEmitter(); @Output() afterModifyTransformEnd: EventEmitter = new EventEmitter(); @Output() afterModifyTransformStart: EventEmitter = new EventEmitter(); @@ -191,10 +175,12 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy @Output() afterOnCellCornerDblClick: EventEmitter = new EventEmitter(); @Output() afterOnCellCornerMouseDown: EventEmitter = new EventEmitter(); @Output() afterOnCellMouseDown: EventEmitter = new EventEmitter(); - @Output() afterOnCellMouseOver: EventEmitter = new EventEmitter(); @Output() afterOnCellMouseOut: EventEmitter = new EventEmitter(); + @Output() afterOnCellMouseOver: EventEmitter = new EventEmitter(); + @Output() afterPaste: EventEmitter = new EventEmitter(); @Output() afterPluginsInitialized: EventEmitter = new EventEmitter(); @Output() afterRedo: EventEmitter = new EventEmitter(); + @Output() afterRemoveCellMeta: EventEmitter = new EventEmitter(); @Output() afterRemoveCol: EventEmitter = new EventEmitter(); @Output() afterRemoveRow: EventEmitter = new EventEmitter(); @Output() afterRender: EventEmitter = new EventEmitter(); @@ -210,14 +196,12 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy @Output() afterSetCellMeta: EventEmitter = new EventEmitter(); @Output() afterSetDataAtCell: EventEmitter = new EventEmitter(); @Output() afterSetDataAtRowProp: EventEmitter = new EventEmitter(); - @Output() afterTrimRow: EventEmitter = new EventEmitter(); @Output() afterUndo: EventEmitter = new EventEmitter(); - @Output() afterUntrimRow: EventEmitter = new EventEmitter(); + @Output() afterUnlisten: EventEmitter = new EventEmitter(); @Output() afterUpdateSettings: EventEmitter = new EventEmitter(); @Output() afterValidate: EventEmitter = new EventEmitter(); @Output() afterViewportColumnCalculatorOverride: EventEmitter = new EventEmitter(); @Output() afterViewportRowCalculatorOverride: EventEmitter = new EventEmitter(); - @Output() beforeAddChild: EventEmitter = new EventEmitter(); @Output() beforeAutofill: EventEmitter = new EventEmitter(); @Output() beforeAutofillInsidePopulate: EventEmitter = new EventEmitter(); @Output() beforeCellAlignment: EventEmitter = new EventEmitter(); @@ -231,19 +215,18 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy @Output() beforeCreateCol: EventEmitter = new EventEmitter(); @Output() beforeCreateRow: EventEmitter = new EventEmitter(); @Output() beforeCut: EventEmitter = new EventEmitter(); - @Output() beforeDetachChild: EventEmitter = new EventEmitter(); @Output() beforeDrawBorders: EventEmitter = new EventEmitter(); - @Output() beforeDropdownMenuSetItems: EventEmitter = new EventEmitter(); - @Output() beforeFilter: EventEmitter = new EventEmitter(); @Output() beforeGetCellMeta: EventEmitter = new EventEmitter(); @Output() beforeInit: EventEmitter = new EventEmitter(); @Output() beforeInitWalkontable: EventEmitter = new EventEmitter(); @Output() beforeKeyDown: EventEmitter = new EventEmitter(); + @Output() beforeLanguageChange: EventEmitter = new EventEmitter(); @Output() beforeOnCellMouseDown: EventEmitter = new EventEmitter(); @Output() beforeOnCellMouseOut: EventEmitter = new EventEmitter(); @Output() beforeOnCellMouseOver: EventEmitter = new EventEmitter(); @Output() beforePaste: EventEmitter = new EventEmitter(); @Output() beforeRedo: EventEmitter = new EventEmitter(); + @Output() beforeRemoveCellMeta: EventEmitter = new EventEmitter(); @Output() beforeRemoveCol: EventEmitter = new EventEmitter(); @Output() beforeRemoveRow: EventEmitter = new EventEmitter(); @Output() beforeRender: EventEmitter = new EventEmitter(); @@ -258,8 +241,6 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy @Output() beforeValidate: EventEmitter = new EventEmitter(); @Output() beforeValueRender: EventEmitter = new EventEmitter(); @Output() construct: EventEmitter = new EventEmitter(); - @Output() hiddenColumn: EventEmitter = new EventEmitter(); - @Output() hiddenRow: EventEmitter = new EventEmitter(); @Output() init: EventEmitter = new EventEmitter(); @Output() manualRowHeights: EventEmitter = new EventEmitter(); @Output() modifyAutofillRange: EventEmitter = new EventEmitter(); @@ -270,10 +251,10 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy @Output() modifyCopyableRange: EventEmitter = new EventEmitter(); @Output() modifyData: EventEmitter = new EventEmitter(); @Output() modifyRow: EventEmitter = new EventEmitter(); + @Output() modifyRowData: EventEmitter = new EventEmitter(); @Output() modifyRowHeader: EventEmitter = new EventEmitter(); @Output() modifyRowHeaderWidth: EventEmitter = new EventEmitter(); @Output() modifyRowHeight: EventEmitter = new EventEmitter(); - @Output() modifyRowData: EventEmitter = new EventEmitter(); @Output() modifyTransformEnd: EventEmitter = new EventEmitter(); @Output() modifyTransformStart: EventEmitter = new EventEmitter(); @Output() persistentStateLoad: EventEmitter = new EventEmitter(); @@ -283,11 +264,42 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy @Output() unmodifyCol: EventEmitter = new EventEmitter(); @Output() unmodifyRow: EventEmitter = new EventEmitter(); + @Input() bindRowsWithHeaders: boolean | string; + @Input() collapsibleColumns: boolean | object[]; + @Input() columnSummary: object; + @Input() dropdownMenu: boolean | object | object[]; + @Input() filters: boolean; + @Input() fixedRowsBottom: number; + @Input() formulas: boolean; + @Input() ganttChart: object; + @Input() headerTooltips: boolean | object; + @Input() hiddenColumns: boolean | object; + @Input() hiddenRows: boolean | object; + @Input() licenseKey: string; + @Input() nestedHeaders: boolean | any[]; + @Input() trimRows: boolean | number[]; + + @Output() afterAddChild: EventEmitter = new EventEmitter(); + @Output() afterDetachChild: EventEmitter = new EventEmitter(); + @Output() afterDropdownMenuDefaultOptions: EventEmitter = new EventEmitter(); + @Output() afterDropdownMenuHide: EventEmitter = new EventEmitter(); + @Output() afterDropdownMenuShow: EventEmitter = new EventEmitter(); + @Output() afterFilter: EventEmitter = new EventEmitter(); + @Output() afterTrimRow: EventEmitter = new EventEmitter(); + @Output() afterUntrimRow: EventEmitter = new EventEmitter(); + @Output() beforeAddChild: EventEmitter = new EventEmitter(); + @Output() beforeDetachChild: EventEmitter = new EventEmitter(); + @Output() beforeDropdownMenuSetItems: EventEmitter = new EventEmitter(); + @Output() beforeFilter: EventEmitter = new EventEmitter(); + @Output() hiddenColumn: EventEmitter = new EventEmitter(); + @Output() hiddenRow: EventEmitter = new EventEmitter(); + constructor( private el: ElementRef, private _ngZone: NgZone, - private _hotRegisterer: HotRegisterer, - private _hotHelper: HotHelper) { } + private _hotTableRegisterer: HotTableRegisterer, + private _hotSettingResolver: HotSettingsResolver + ) { } ngOnInit() { this.container = document.createElement('div'); @@ -300,13 +312,13 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy } ngAfterContentInit() { - let options = this._hotHelper.mergeSettings(this); + const options = this._hotSettingResolver.mergeSettings(this); if (this.columnsComponents.length > 0) { - let columns = []; + const columns = []; this.columnsComponents.forEach((column) => { - columns.push(this._hotHelper.mergeSettings(column)); + columns.push(this._hotSettingResolver.mergeSettings(column)); }); options['columns'] = columns; @@ -314,11 +326,12 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy this._ngZone.runOutsideAngular(() => { this.hotInstance = new Handsontable(this.container, options); + + if (this.hotId) { + this._hotTableRegisterer.registerInstance(this.hotId, this.hotInstance); + } }); - if (this.hotId) { - this._hotRegisterer.registerInstance(this.hotId, this.hotInstance); - } } ngOnChanges(changes: SimpleChanges) { @@ -326,8 +339,8 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy return; } - let newOptions = this._hotHelper.prepareChanges(changes); - + const newOptions = this._hotSettingResolver.prepareChanges(changes); + this.updateHotTable(newOptions); } @@ -335,14 +348,18 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy this.hotInstance.destroy(); if (this.hotId) { - this._hotRegisterer.removeInstance(this.hotId); + this._hotTableRegisterer.removeInstance(this.hotId); } + + this.el.nativeElement.removeChild(this.container); + this.container = void 0; } updateHotTable(newSettings: object) { if (!this.hotInstance) { return; } + this.hotInstance.updateSettings(newSettings, false); } @@ -352,13 +369,13 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy } if (this.columnsComponents.length > 0) { - let columns = []; + const columns = []; this.columnsComponents.forEach((column) => { - columns.push(this._hotHelper.mergeSettings(column)); + columns.push(this._hotSettingResolver.mergeSettings(column)); }); - let newOptions = { + const newOptions = { columns: columns }; @@ -367,11 +384,11 @@ export class HotTableComponent implements AfterContentInit, OnChanges, OnDestroy } onAfterColumnsNumberChange() { - let columns = []; + const columns = []; if (this.columnsComponents.length > 0) { this.columnsComponents.forEach((column) => { - columns.push(this._hotHelper.mergeSettings(column)); + columns.push(this._hotSettingResolver.mergeSettings(column)); }); } diff --git a/lib/pro/src/hot-table.module.ts b/lib/pro/src/hot-table.module.ts new file mode 100644 index 0000000..e864fc7 --- /dev/null +++ b/lib/pro/src/hot-table.module.ts @@ -0,0 +1,27 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; + +import { HotTableComponent } from './hot-table.component'; +import { HotColumnComponent } from './hot-column.component'; +import { HotTableRegisterer } from './hot-table-registerer.service'; + +@NgModule({ + declarations: [ + HotTableComponent, + HotColumnComponent, + ], + exports: [ + HotTableComponent, + HotColumnComponent, + ] +}) +export class HotTableModule { + + public static forRoot(): ModuleWithProviders { + return { + ngModule: HotTableModule, + providers: [ + HotTableRegisterer + ] + }; + } +} diff --git a/lib/pro/src/public_api.ts b/lib/pro/src/public_api.ts new file mode 100644 index 0000000..d30c985 --- /dev/null +++ b/lib/pro/src/public_api.ts @@ -0,0 +1,5 @@ +export * from './hot-table.component'; +export * from './hot-column.component'; +export * from './hot-table-registerer.service'; +export * from './hot-settings-resolver.service'; +export * from './hot-table.module'; diff --git a/module.ts b/module.ts deleted file mode 100644 index b17a506..0000000 --- a/module.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { NgModule, ModuleWithProviders } from '@angular/core'; - -import { HotTableComponent } from './src/hot-table.component'; -import { HotColumnComponent } from './src/hot-column.component'; - -import { HotRegisterer } from './src/hot-registerer.service'; - -@NgModule({ - declarations: [ - HotTableComponent, - HotColumnComponent, - ], - exports: [ HotTableComponent, HotColumnComponent ], - providers: [ HotRegisterer ], -}) - -export class HotTableModule { - static forRoot(): ModuleWithProviders { - return { - ngModule: HotTableModule, - providers: [ HotRegisterer ] - }; - } -} diff --git a/package-lock.json b/package-lock.json index 5d94d10..ef6c645 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,117 +1,286 @@ { "name": "angular-handsontable", - "version": "1.0.0-beta2", + "version": "1.0.0-beta3", "lockfileVersion": 1, "requires": true, "dependencies": { - "@angular/common": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.2.6.tgz", - "integrity": "sha1-IQrOS9JON1+LQbpS/rNLGKiH1do=", + "@angular-devkit/build-optimizer": { + "version": "0.0.42", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.0.42.tgz", + "integrity": "sha512-BAYCVZ10ro6mgZQDZiNiVbX8ppygw4q7z/stpwG8WjMswgMRIcxsxYoC1VFuWcUPAf4UyfTIav6e8UZWA5+xnQ==", "dev": true, "requires": { - "tslib": "1.7.1" + "loader-utils": "1.1.0", + "source-map": "0.5.7", + "typescript": "2.6.2", + "webpack-sources": "1.1.0" } }, - "@angular/compiler": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.2.6.tgz", - "integrity": "sha1-ZndW1JXKDUXSBhJooQ1Sr4Ofr/Q=", + "@angular-devkit/core": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.0.29.tgz", + "integrity": "sha512-jtUBA0pIrkdXcVqDmDrGlniqwM7NFOKdo7vWFDmCVLBbC9rZHeYW5Xv/+4HyBhGLJ4wxsAkUjsHKWGJINPPpiw==", "dev": true, "requires": { - "tslib": "1.7.1" + "ajv": "5.5.2", + "chokidar": "1.7.0", + "rxjs": "5.5.6", + "source-map": "0.5.7" + } + }, + "@angular-devkit/schematics": { + "version": "0.0.52", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.0.52.tgz", + "integrity": "sha512-NtG8VB5aWtg0cw1Y7EJinJMuAnXsNdkQkkVe/i7CO6TPLyFQSFQCN1YojCr43l8jTWTRebRslrBawPCMOxsOgw==", + "dev": true, + "requires": { + "@ngtools/json-schema": "1.1.0", + "rxjs": "5.5.6" + } + }, + "@angular/cli": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-1.6.6.tgz", + "integrity": "sha512-+hNKTw8Pcg7RBEsXphpgnebnzlxpbAVW0hRK45iLvjC2550co5sPxxxCikKMjbQzr6LEBhpgGS2ma4jX/AXsCw==", + "dev": true, + "requires": { + "@angular-devkit/build-optimizer": "0.0.42", + "@angular-devkit/core": "0.0.29", + "@angular-devkit/schematics": "0.0.52", + "@ngtools/json-schema": "1.1.0", + "@ngtools/webpack": "1.9.6", + "@schematics/angular": "0.1.17", + "autoprefixer": "7.2.5", + "chalk": "2.2.2", + "circular-dependency-plugin": "4.4.0", + "common-tags": "1.7.2", + "copy-webpack-plugin": "4.3.1", + "core-object": "3.1.5", + "css-loader": "0.28.9", + "cssnano": "3.10.0", + "denodeify": "1.2.1", + "ember-cli-string-utils": "1.1.0", + "exports-loader": "0.6.4", + "extract-text-webpack-plugin": "3.0.2", + "file-loader": "1.1.6", + "fs-extra": "4.0.3", + "glob": "7.1.2", + "html-webpack-plugin": "2.30.1", + "istanbul-instrumenter-loader": "3.0.0", + "karma-source-map-support": "1.2.0", + "less": "2.7.3", + "less-loader": "4.0.5", + "license-webpack-plugin": "1.1.1", + "loader-utils": "1.1.0", + "lodash": "4.17.4", + "memory-fs": "0.4.1", + "minimatch": "3.0.4", + "node-modules-path": "1.0.1", + "node-sass": "4.7.2", + "nopt": "4.0.1", + "opn": "5.1.0", + "portfinder": "1.0.13", + "postcss-import": "11.0.0", + "postcss-loader": "2.0.10", + "postcss-url": "7.3.0", + "raw-loader": "0.5.1", + "resolve": "1.5.0", + "rxjs": "5.5.6", + "sass-loader": "6.0.6", + "semver": "5.5.0", + "silent-error": "1.1.0", + "source-map-loader": "0.2.3", + "source-map-support": "0.4.18", + "style-loader": "0.13.2", + "stylus": "0.54.5", + "stylus-loader": "3.0.1", + "uglifyjs-webpack-plugin": "1.1.8", + "url-loader": "0.6.2", + "webpack": "3.10.0", + "webpack-dev-middleware": "1.12.2", + "webpack-dev-server": "2.11.1", + "webpack-merge": "4.1.1", + "webpack-sources": "1.1.0", + "webpack-subresource-integrity": "1.0.3" + } + }, + "@angular/common": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-5.2.2.tgz", + "integrity": "sha512-heon7Bdu6SUw/6ma9wEDxrxBJY2V+NSUv7ZVY7HaXESWvxKUGaser5vQIsWghvBg1injSxyw/3BqGFflua/3sQ==", + "requires": { + "tslib": "1.9.0" + } + }, + "@angular/compiler": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-5.2.2.tgz", + "integrity": "sha512-QkliIJJb9J2y4Y1yiSweP1eOStClOOOj46awVQ5wT+WzyvmIVAccx2u+r5TPRu676GlqrFfn6FD+zV6Zw7G+Tw==", + "requires": { + "tslib": "1.9.0" } }, "@angular/compiler-cli": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.2.6.tgz", - "integrity": "sha1-iiE1Ipnz69Hj8XWBBUFkVmyjBr4=", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-5.2.2.tgz", + "integrity": "sha512-XSojPIMQNvEnYIufTIlrr3GLpr20AUQP0bMzUp4/U/ATWmMWmdNRRG/ys5ncmbgImoAg1nW0hp4bonUSYf9nGQ==", "dev": true, "requires": { - "@angular/tsc-wrapped": "4.2.6", + "chokidar": "1.7.0", "minimist": "1.2.0", - "reflect-metadata": "0.1.10" + "reflect-metadata": "0.1.12", + "tsickle": "0.26.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, "@angular/core": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.2.6.tgz", - "integrity": "sha1-DByP8BV/B29KfAtyHKFCPxu+Fk4=", - "dev": true, + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-5.2.2.tgz", + "integrity": "sha512-SycTFvlJUHzYvqRYM0DQQUewSo0IPL3Vfo9MOwSJvhS5mXCP1+QW0IIhI8CyWy+40L3dIWlYnn0754z5IJikdg==", "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, "@angular/forms": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.2.6.tgz", - "integrity": "sha1-nTI5lgjkYDu/GXQXqluU6ApGfrA=", - "dev": true, + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-5.2.2.tgz", + "integrity": "sha512-mvY3p0s7TDfc78tHFID11N1UF+5HZNy26poujOTI2q5m0BgM2JskFaQxWBdLT0OLutqV6NYeaHXUwmqsD4TGVg==", "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, "@angular/http": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.2.6.tgz", - "integrity": "sha1-SZ4roLvB89cbdt6+wDTJWMrxE04=", - "dev": true, + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-5.2.2.tgz", + "integrity": "sha512-MG7ClwOs9gQgAIjKa6WulUmLyWmKbY8qwX1osVn4cTuGtnpcyTiqruOwrS3DzY6doE8qsu2y5VURt3Ncs0SE6Q==", "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, + "@angular/language-service": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-5.2.2.tgz", + "integrity": "sha512-i+xaMhi/nBoBPi8NUFCWwgUjq9jGgD5y91nkpaBABs+2E5x7LprL1b2hITmfjo1oMY2kY6L7Sihdwp2JhfCVrA==", + "dev": true + }, "@angular/platform-browser": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.2.6.tgz", - "integrity": "sha1-oTH/WSIl/mSWvKLJr/YSpNvd9Dc=", - "dev": true, + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-5.2.2.tgz", + "integrity": "sha512-jiiEEUiv4oOWtBP96hOnxHOY3ckukfSOaxtw+ENjSPAyv/eRbL1B2LFwIg+HYAFxvK8JOLAYZm3Hg9lpenlBMw==", "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, "@angular/platform-browser-dynamic": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.2.6.tgz", - "integrity": "sha1-TmyK0s1c/BeIBBf3fyo0E895HCY=", - "dev": true, + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.2.tgz", + "integrity": "sha512-PCg63japwHw6zGWGHZEpiDKeqPaCbOKnBl7bhRzE5imL+74toyvmE33sp7OzXKGi0mX5mUymfRsvfLdB6khGTQ==", "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, "@angular/router": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-4.2.6.tgz", - "integrity": "sha1-ppGdm2HEX/wV++5ZM5jj/VMtq0Y=", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-5.2.2.tgz", + "integrity": "sha512-Yn71rFMMyIjwairBWGcUFbdiAVuTp7y5yEin8vJK3DAWgTyk0FYfhKHY3r9NofNH9M7Id53WafC02+3SseFBlA==", + "requires": { + "tslib": "1.9.0" + } + }, + "@ngtools/json-schema": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.1.0.tgz", + "integrity": "sha1-w6DFRNYjkqzCgTpCyKDcb1j4aSI=", + "dev": true + }, + "@ngtools/webpack": { + "version": "1.9.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.9.6.tgz", + "integrity": "sha512-B4a1MlMvnGjT5APYg0mf9oL9OeacVMX0Czl5o5Qps7Hy7FobuY4CwhnCMJAPzy7JXLAEhp6wX8Bqmxj9JJfebA==", "dev": true, "requires": { - "tslib": "1.7.1" + "chalk": "2.2.2", + "enhanced-resolve": "3.4.1", + "loader-utils": "1.1.0", + "magic-string": "0.22.4", + "semver": "5.5.0", + "source-map": "0.5.7", + "tree-kill": "1.2.0", + "webpack-sources": "1.1.0" } }, - "@angular/tsc-wrapped": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.2.6.tgz", - "integrity": "sha1-YORLWzjzNA7hTFSlinoHEzxk6Jg=", + "@schematics/angular": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.1.17.tgz", + "integrity": "sha512-PHE5gk/ogPY/aN94dbbtauHMCq+/7w4Kdcl7tGmSS8mPKEI0wa6XJi//Wq/tHi55lb2fP58oEZU6n6w/wQascw==", "dev": true, "requires": { - "tsickle": "0.21.6" + "typescript": "2.6.2" } }, "@types/jasmine": { - "version": "2.5.36", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.36.tgz", - "integrity": "sha1-bYBLeaV+k4DXZqJoDpNiwX2VVtI=", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.6.tgz", + "integrity": "sha512-clg9raJTY0EOo5pVZKX3ZlMjlYzVU73L71q5OV1jhE2Uezb7oF94jh4CvwrW6wInquQAdhOxJz5VDF2TLUGmmA==", "dev": true }, "@types/node": { - "version": "6.0.88", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", - "integrity": "sha512-bYDPZTX0/s1aihdjLuAgogUAT5M+TpoWChEMea2p0yOcfn5bu3k6cJb9cp6nw268XeSNIGGr+4+/8V5K6BGzLQ==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.3.0.tgz", + "integrity": "sha512-wNBfvNjzsJl4tswIZKXCFQY0lss9nKUyJnG6T94X/eqjRgI2jHZ4evdjhQYBSan/vGtF6XVXPApOmNH2rf0KKw==", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "2.53.43", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.53.43.tgz", + "integrity": "sha512-UBYHWph6P3tutkbXpW6XYg9ZPbTKjw/YC2hGG1/GEvWwTbvezBUv3h+mmUFw79T3RFPnmedpiXdOBbXX+4l0jg==", + "dev": true + }, + "@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", + "dev": true + }, + "@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", + "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", + "dev": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", "dev": true, "requires": { "mime-types": "2.1.17", @@ -119,9 +288,9 @@ } }, "acorn": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", - "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", "dev": true }, "acorn-dynamic-import": { @@ -141,28 +310,59 @@ } } }, + "addressparser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz", + "integrity": "sha1-R6++GiqSYhkdtoOOT9HTm0CCF0Y=", + "dev": true, + "optional": true + }, + "adm-zip": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", + "integrity": "sha1-ph7VrmkFw66lizplfSUDMJEFJzY=", + "dev": true + }, "after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", "dev": true }, + "agent-base": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", + "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", + "dev": true, + "requires": { + "extend": "3.0.1", + "semver": "5.0.3" + }, + "dependencies": { + "semver": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", + "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", + "dev": true + } + } + }, "ajv": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", - "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { "co": "4.6.0", "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true }, "align-text": { @@ -174,44 +374,73 @@ "kind-of": "3.2.2", "longest": "1.0.1", "repeat-string": "1.6.1" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - } } }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, - "angular2-template-loader": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/angular2-template-loader/-/angular2-template-loader-0.6.2.tgz", - "integrity": "sha1-wNROkP/w+sleiyPwQ6zaf9HFHXw=", + "amqplib": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.5.2.tgz", + "integrity": "sha512-l9mCs6LbydtHqRniRwYkKdqxVa6XMz3Vw1fh+2gJaaVgTM6Jk3o8RccAKWKtlhT1US5sWrFh+KKxsVUALURSIA==", "dev": true, + "optional": true, "requires": { - "loader-utils": "0.2.17" + "bitsyntax": "0.0.4", + "bluebird": "3.5.1", + "buffer-more-ints": "0.0.2", + "readable-stream": "1.1.14", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true, + "optional": true + } } }, - "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", "dev": true }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { @@ -220,7 +449,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "anymatch": { @@ -231,84 +460,14 @@ "requires": { "micromatch": "2.3.11", "normalize-path": "2.1.1" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - } } }, + "app-root-path": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz", + "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=", + "dev": true + }, "append-transform": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", @@ -318,6 +477,22 @@ "default-require-extensions": "1.0.0" } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.3" + } + }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", @@ -328,10 +503,13 @@ } }, "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } }, "arr-flatten": { "version": "1.1.0", @@ -345,28 +523,102 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, "array-slice": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", "dev": true }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true }, "asn1.js": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", - "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", "dev": true, "requires": { "bn.js": "4.11.8", @@ -383,16 +635,46 @@ "util": "0.10.3" } }, - "ast-types": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", - "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", + "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==", + "dev": true, + "optional": true + }, + "astw": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", + "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { "lodash": "4.17.4" @@ -404,39 +686,64 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, "atob": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", "dev": true }, - "awesome-typescript-loader": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-3.2.3.tgz", - "integrity": "sha512-zGGD6j6jYYtIOBtfhtnrbNB3dlDThVdgF9CQhkPqBwPUUsyJOHNxj9d2LOmVJY1PlBoNPABoDeyRfphIDeYGxA==", + "autoprefixer": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.5.tgz", + "integrity": "sha512-XqHfo8Ht0VU+T5P+eWEVoXza456KJ4l62BPewu3vpNf3LP9s2+zYXkXBznzYby4XeECXgG3N4i+hGvOhXErZmA==", "dev": true, "requires": { - "colors": "1.1.2", - "enhanced-resolve": "3.3.0", - "loader-utils": "1.1.0", - "lodash": "4.17.4", - "micromatch": "3.1.0", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "source-map-support": "0.4.18" - }, - "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - } + "browserslist": "2.11.3", + "caniuse-lite": "1.0.30000792", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "6.0.16", + "postcss-value-parser": "3.3.0" + } + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "axios": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.15.3.tgz", + "integrity": "sha1-LJ1jiy4ZGgjqHWzJiOrda6W9wFM=", + "dev": true, + "optional": true, + "requires": { + "follow-redirects": "1.0.0" } }, "babel-code-frame": { @@ -450,12 +757,6 @@ "js-tokens": "3.0.2" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", @@ -475,15 +776,6 @@ "supports-color": "2.0.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -506,6 +798,14 @@ "lodash": "4.17.4", "source-map": "0.5.7", "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } } }, "babel-messages": { @@ -523,8 +823,8 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" } }, "babel-template": { @@ -594,12 +894,20 @@ "dev": true, "requires": { "cache-base": "1.0.1", - "class-utils": "0.3.5", + "class-utils": "0.3.6", "component-emitter": "1.2.1", "define-property": "1.0.0", "isobject": "3.0.1", - "mixin-deep": "1.2.0", + "mixin-deep": "1.3.0", "pascalcase": "0.1.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "base64-arraybuffer": { @@ -620,6 +928,30 @@ "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", "dev": true }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "bessel": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bessel/-/bessel-0.2.0.tgz", + "integrity": "sha1-E8s5zSkjMhnsLacl4LoMZvtGtvI=", + "requires": { + "voc": "1.0.0" + } + }, "better-assert": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", @@ -636,21 +968,91 @@ "dev": true }, "binary-extensions": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", - "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, + "bitsyntax": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/bitsyntax/-/bitsyntax-0.0.4.tgz", + "integrity": "sha1-6xDMb4K4xJDj6FaY8H6D1G4MuoI=", + "dev": true, + "optional": true, + "requires": { + "buffer-more-ints": "0.0.2" + } + }, + "bl": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", + "integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=", + "dev": true, + "optional": true, + "requires": { + "readable-stream": "2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true, + "optional": true + } + } + }, "blob": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", "dev": true }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "dev": true, + "requires": { + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", "dev": true }, "bn.js": { @@ -668,13 +1070,35 @@ "bytes": "3.0.0", "content-type": "1.0.4", "debug": "2.6.9", - "depd": "1.1.1", + "depd": "1.1.2", "http-errors": "1.6.2", "iconv-lite": "0.4.19", "on-finished": "2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", "type-is": "1.6.15" + }, + "dependencies": { + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.3", + "multicast-dns-service-types": "1.1.0" } }, "boolbase": { @@ -683,6 +1107,15 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", @@ -694,22 +1127,14 @@ } }, "braces": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.2.2.tgz", - "integrity": "sha1-JB+GjCsmkNn+vu5afIP7vyXQCxs=", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.1", - "snapdragon-node": "2.1.1", - "split-string": "2.1.1", - "to-regex": "3.0.1" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" } }, "brorand": { @@ -718,10 +1143,156 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, + "browser-pack": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.3.tgz", + "integrity": "sha512-Jo+RYsn8X8OhyP9tMXXg0ueR2fW696HUu1Hf3/DeiwNean1oGiPtdgGRNuUHBpPHzBH3x4n1kzAlgOgHSIq88g==", + "dev": true, + "requires": { + "JSONStream": "1.3.2", + "combine-source-map": "0.8.0", + "defined": "1.0.0", + "safe-buffer": "5.1.1", + "through2": "2.0.3", + "umd": "3.0.1" + } + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify": { + "version": "14.5.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-14.5.0.tgz", + "integrity": "sha512-gKfOsNQv/toWz+60nSPfYzuwSEdzvV2WdxrVPUbPD/qui44rAkB3t3muNtmmGYHqrG56FGwX9SUEQmzNLAeS7g==", + "dev": true, + "requires": { + "JSONStream": "1.3.2", + "assert": "1.4.1", + "browser-pack": "6.0.3", + "browser-resolve": "1.11.2", + "browserify-zlib": "0.2.0", + "buffer": "5.0.8", + "cached-path-relative": "1.0.1", + "concat-stream": "1.5.2", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "defined": "1.0.0", + "deps-sort": "2.0.0", + "domain-browser": "1.1.7", + "duplexer2": "0.1.4", + "events": "1.1.1", + "glob": "7.1.2", + "has": "1.0.1", + "htmlescape": "1.1.1", + "https-browserify": "1.0.0", + "inherits": "2.0.3", + "insert-module-globals": "7.0.1", + "labeled-stream-splicer": "2.0.0", + "module-deps": "4.1.1", + "os-browserify": "0.3.0", + "parents": "1.0.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "read-only-stream": "2.0.0", + "readable-stream": "2.3.3", + "resolve": "1.5.0", + "shasum": "1.0.2", + "shell-quote": "1.6.1", + "stream-browserify": "2.0.1", + "stream-http": "2.8.0", + "string_decoder": "1.0.3", + "subarg": "1.0.0", + "syntax-error": "1.3.0", + "through2": "2.0.3", + "timers-browserify": "1.4.2", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4", + "xtend": "4.0.1" + }, + "dependencies": { + "buffer": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.8.tgz", + "integrity": "sha512-xXvjQhVNz50v2nPeoOsNqWCLGfiv4ji/gXZM28jnVwdLJxH4mFyqgqCKfaK9zf1KUbG6zTkjLOy7ou+jSMarGA==", + "dev": true, + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8" + } + }, + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "dev": true + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "dev": true, + "requires": { + "process": "0.11.10" + } + } + } + }, "browserify-aes": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.8.tgz", - "integrity": "sha512-WYCMOT/PtGTlpOKFht0YJFYcPy6pLCR98CtWfzK13zoynLlBMvAdEMSRGmgnJCw2M2j/5qxBkinZQFobieM8dQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", "dev": true, "requires": { "buffer-xor": "1.0.3", @@ -738,7 +1309,7 @@ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "dev": true, "requires": { - "browserify-aes": "1.0.8", + "browserify-aes": "1.1.1", "browserify-des": "1.0.0", "evp_bytestokey": "1.0.3" } @@ -761,7 +1332,7 @@ "dev": true, "requires": { "bn.js": "4.11.8", - "randombytes": "2.0.5" + "randombytes": "2.0.6" } }, "browserify-sign": { @@ -780,12 +1351,22 @@ } }, "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", "dev": true, "requires": { - "pako": "0.2.9" + "caniuse-lite": "1.0.30000792", + "electron-to-chromium": "1.3.31" } }, "buffer": { @@ -799,12 +1380,46 @@ "isarray": "1.0.0" } }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-more-ints": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-0.0.2.tgz", + "integrity": "sha1-JrOIXRD6E9t/wBquOquHAZngEkw=", + "dev": true + }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, + "buildmail": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-4.0.1.tgz", + "integrity": "sha1-h393OLeHKYccmhBeO4N9K+EaenI=", + "dev": true, + "optional": true, + "requires": { + "addressparser": "1.0.1", + "libbase64": "0.1.0", + "libmime": "3.0.0", + "libqp": "1.1.0", + "nodemailer-fetch": "1.6.0", + "nodemailer-shared": "1.1.0", + "punycode": "1.4.1" + } + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -823,6 +1438,27 @@ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, + "cacache": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.2.tgz", + "integrity": "sha512-dljb7dk1jqO5ogE+dRpoR9tpHYv5xz9vPSNunh1+0wRuNdYxmzp9WmsyokgW/DUF1FDRVA/TMsmxt027R8djbQ==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "1.3.1", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.1.0", + "unique-filename": "1.1.0", + "y18n": "3.2.1" + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -838,8 +1474,22 @@ "to-object-path": "0.3.0", "union-value": "1.0.0", "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, + "cached-path-relative": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", + "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", + "dev": true + }, "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", @@ -857,9 +1507,61 @@ } }, "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000799", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000799", + "electron-to-chromium": "1.3.31" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30000799", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000799.tgz", + "integrity": "sha1-CQSVPek/P0kmR+WMGhvaenOgyws=", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30000792", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz", + "integrity": "sha1-0M6pgfgRjzlhRxr7tDyaHlu/AzI=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, "center-align": { @@ -881,14 +1583,14 @@ } }, "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.2.tgz", + "integrity": "sha512-LvixLAQ4MYhbf7hgL4o5PeK32gJKvVzDRiSNIApDofQvyhl8adgG2lJVXn4+ekQoK7HL9RF8lqxwerpe0x2pCw==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "supports-color": "4.5.0" } }, "chokidar": { @@ -899,7 +1601,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.1.2", + "fsevents": "1.1.3", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -908,6 +1610,12 @@ "readdirp": "2.1.0" } }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -918,16 +1626,63 @@ "safe-buffer": "5.1.1" } }, + "circular-dependency-plugin": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-4.4.0.tgz", + "integrity": "sha512-yEFtUNUYT4jBykEX5ZOHw+5goA3glGZr9wAXIQqoyakjz5H5TeUmScnWRc52douAhb9eYzK3s7V6bXfNnjFdzg==", + "dev": true + }, + "circular-json": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.1.tgz", + "integrity": "sha512-UjgcRlTAhAkLeXmDe2wK7ktwy/tgAqxiSndTIPiFZuIPLZmzHzWMwUIe9h9m/OokypG7snxCDEuwJshGBdPvaw==", + "dev": true + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "1.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "class-utils": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.5.tgz", - "integrity": "sha1-F+eTEDdQ+WJ7IXbqNM/RtWWQPIA=", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { "arr-union": "3.1.0", "define-property": "0.2.5", "isobject": "3.0.1", - "lazy-cache": "2.0.2", "static-extend": "0.1.2" }, "dependencies": { @@ -940,6 +1695,46 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -948,8 +1743,20 @@ "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", - "kind-of": "5.0.2" + "kind-of": "5.1.0" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -962,37 +1769,43 @@ "source-map": "0.5.7" } }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "restore-cursor": "2.0.0" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", "dev": true }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "clone-deep": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", + "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", "dev": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" + "for-own": "1.0.0", + "is-plain-object": "2.0.4", + "kind-of": "3.2.2", + "shallow-clone": "0.1.2" }, "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } } } }, @@ -1002,12 +1815,35 @@ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "1.5.1" + } + }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, + "codelyzer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.1.0.tgz", + "integrity": "sha512-a3FCIAS3FNQIACvj7KA4iKvH3c6r7X6t6zXsrtV797QGYPQyCwD1fIEd9yV+ZDamijF3YaZ5fbB7QbUMOJGC/g==", + "dev": true, + "requires": { + "app-root-path": "2.0.1", + "css-selector-tokenizer": "0.7.0", + "cssauron": "1.4.0", + "semver-dsl": "1.0.1", + "source-map": "0.5.7", + "sprintf-js": "1.0.3" + } + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -1018,10 +1854,21 @@ "object-visit": "1.0.1" } }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "requires": { + "clone": "1.0.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" + } + }, "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { "color-name": "1.1.3" @@ -1033,6 +1880,26 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + } + }, "colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", @@ -1048,10 +1915,60 @@ "lodash": "4.17.4" } }, + "combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "dev": true, + "requires": { + "convert-source-map": "1.1.3", + "inline-source-map": "0.6.2", + "lodash.memoize": "3.0.4", + "source-map": "0.5.7" + }, + "dependencies": { + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "dev": true + } + } + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "dev": true + }, + "common-tags": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.7.2.tgz", + "integrity": "sha512-joj9ZlUOjCrwdbmiLqafeUSgkUM74NqhLsZtSqDmhKudaIY197zTrb8JMl31fMnCUuxwFT23eC/oWvrZzDLRJQ==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "component-bind": { @@ -1072,12 +1989,47 @@ "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", "dev": true }, + "compressible": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", + "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "compression": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", + "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "bytes": "3.0.0", + "compressible": "2.0.12", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, "connect": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz", @@ -1088,8 +2040,31 @@ "finalhandler": "1.0.6", "parseurl": "1.3.2", "utils-merge": "1.0.1" + }, + "dependencies": { + "finalhandler": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", + "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + } } }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", @@ -1099,35 +2074,128 @@ "date-now": "0.1.4" } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", "dev": true }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, + "copy-webpack-plugin": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.3.1.tgz", + "integrity": "sha512-xlcFiW/U7KrpS6dFuWq3r8Wb7koJx7QVc7LDFCosqkikaVSxkaYOnwDLwilbjrszZ0LYZXThDAJKcQCSrvdShQ==", + "dev": true, + "requires": { + "cacache": "10.0.2", + "find-cache-dir": "1.0.0", + "globby": "7.1.1", + "is-glob": "4.0.0", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "p-limit": "1.2.0", + "pify": "3.0.0", + "serialize-javascript": "1.4.0" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } + } + }, "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", - "dev": true + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" + }, + "core-object": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/core-object/-/core-object-3.1.5.tgz", + "integrity": "sha512-sA2/4+/PZ/KV6CKgjrVrrUVBKCkdDO02CUlQ0YKTQoYUwPYNOtOAcWlbYhd5v/1JqYaA6oZ4sDlOU4ppVw6Wbg==", + "dev": true, + "requires": { + "chalk": "2.2.2" + } }, "core-util-is": { "version": "1.0.2", @@ -1135,29 +2203,91 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "create-ecdh": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", "dev": true, "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" + "is-directory": "0.3.1", + "js-yaml": "3.7.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, - "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "cpr": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz", + "integrity": "sha1-uaVQOLfNgaNcF7l2GJW9hJau8eU=", "dev": true, "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.9" + "graceful-fs": "4.1.11", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, - "create-hmac": { + "cpx": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz", + "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "chokidar": "1.7.0", + "duplexer": "0.1.1", + "glob": "7.1.2", + "glob2base": "0.0.12", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "resolve": "1.5.0", + "safe-buffer": "5.1.1", + "shell-quote": "1.6.1", + "subarg": "1.0.0" + } + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.10" + } + }, + "create-hmac": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", @@ -1168,34 +2298,32 @@ "inherits": "2.0.3", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" } }, - "cross-env": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.0.5.tgz", - "integrity": "sha1-Q4PTZNlmCHPdGFs5ivO/717//vM=", + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", "dev": true, "requires": { - "cross-spawn": "5.1.0", - "is-windows": "1.0.1" + "lru-cache": "4.1.1", + "which": "1.3.0" } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" + "boom": "2.10.1" } }, "crypto-browserify": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", - "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { "browserify-cipher": "1.0.0", @@ -1207,9 +2335,100 @@ "inherits": "2.0.3", "pbkdf2": "3.0.14", "public-encrypt": "4.0.0", - "randombytes": "2.0.5" + "randombytes": "2.0.6", + "randomfill": "1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-loader": { + "version": "0.28.9", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.9.tgz", + "integrity": "sha512-r3dgelMm/mkPz5Y7m9SeiGE46i2VsEU/OYbez+1llfxtv8b2y5/b5StaeEvPK3S5tlNQI+tDW/xDIhKJoZgDtw==", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "css-selector-tokenizer": "0.7.0", + "cssnano": "3.10.0", + "icss-utils": "2.1.0", + "loader-utils": "1.1.0", + "lodash.camelcase": "4.3.0", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-modules-extract-imports": "1.2.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0", + "postcss-value-parser": "3.3.0", + "source-list-map": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, "css-select": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", @@ -1222,18 +2441,234 @@ "nth-check": "1.0.1" } }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "dev": true, + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.1", + "regexpu-core": "1.0.0" + } + }, "css-what": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", "dev": true }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000799", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000799", + "electron-to-chromium": "1.3.31" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + } + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, "custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", "dev": true }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.38" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "data-uri-to-buffer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", + "dev": true, + "optional": true + }, + "date-format": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz", + "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg=", + "dev": true + }, "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", @@ -1255,6 +2690,25 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true, + "optional": true + }, "default-require-extensions": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", @@ -1264,46 +2718,178 @@ "strip-bom": "2.0.0" } }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.1" + "is-descriptor": "1.0.2" } }, - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", "dev": true }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", "dev": true, + "optional": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "ast-types": "0.10.1", + "escodegen": "1.9.0", + "esprima": "3.1.3" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true, + "optional": true + } } }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", "dev": true, "requires": { - "repeating": "2.0.1" - } - }, - "di": { - "version": "0.0.1", + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "denodeify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "deps-sort": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", + "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", + "dev": true, + "requires": { + "JSONStream": "1.3.2", + "shasum": "1.0.2", + "subarg": "1.0.0", + "through2": "2.0.3" + } + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "detective": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "dev": true, + "requires": { + "acorn": "5.3.0", + "defined": "1.0.0" + } + }, + "di": { + "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true + }, "diffie-hellman": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", @@ -1311,8 +2897,43 @@ "dev": true, "requires": { "bn.js": "4.11.8", - "miller-rabin": "4.0.0", - "randombytes": "2.0.5" + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "path-type": "3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" } }, "dom-converter": { @@ -1363,9 +2984,9 @@ } }, "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, "domelementtype": { @@ -1393,12 +3014,68 @@ "domelementtype": "1.3.0" } }, + "double-ended-queue": { + "version": "2.1.0-0", + "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", + "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=", + "dev": true, + "optional": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "duplexify": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.3.tgz", + "integrity": "sha512-g8ID9OroF9hKt2POf8YLayy+9594PzmM3scI00/uBXocX3TWNgoB67hjzkFe9ITAbQOne/lLdBxHXvYUM4ZgGA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, + "ejs": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", + "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.31", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.31.tgz", + "integrity": "sha512-XE4CLbswkZgZFn34cKFy1xaX+F5LHxeDLjY1+rsK9asDzknhbrd9g/n/01/acbU25KTsUSiLKwvlLyA+6XLUOA==", + "dev": true + }, "elliptic": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", @@ -1414,6 +3091,12 @@ "minimalistic-crypto-utils": "1.0.1" } }, + "ember-cli-string-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0.tgz", + "integrity": "sha1-ObZ3/CgF9VFzc1N2/O8njqpEUqE=", + "dev": true + }, "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", @@ -1421,97 +3104,83 @@ "dev": true }, "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, "engine.io": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", - "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.4.tgz", + "integrity": "sha1-PQIRtwpVLOhB/8fahiezAamkFi4=", "dev": true, "requires": { "accepts": "1.3.3", "base64id": "1.0.0", "cookie": "0.3.1", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", - "ws": "1.1.2" + "debug": "2.6.9", + "engine.io-parser": "2.1.2", + "uws": "0.14.5", + "ws": "3.3.3" }, "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", "dev": true, "requires": { - "ms": "0.7.2" + "mime-types": "2.1.17", + "negotiator": "0.6.1" } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true } } }, "engine.io-client": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", - "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.4.tgz", + "integrity": "sha1-T88TcLRxY70s6b4nM5ckMDUNTqE=", "dev": true, "requires": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", + "debug": "2.6.9", + "engine.io-parser": "2.1.2", "has-cors": "1.1.0", "indexof": "0.0.1", - "parsejson": "0.0.3", "parseqs": "0.0.5", "parseuri": "0.0.5", - "ws": "1.1.2", - "xmlhttprequest-ssl": "1.5.3", + "ws": "3.3.3", + "xmlhttprequest-ssl": "1.5.5", "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } } }, "engine.io-parser": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", - "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz", + "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==", "dev": true, "requires": { "after": "0.8.2", - "arraybuffer.slice": "0.0.6", + "arraybuffer.slice": "0.0.7", "base64-arraybuffer": "0.1.5", "blob": "0.0.4", - "has-binary": "0.1.7", - "wtf-8": "1.0.0" + "has-binary2": "1.0.2" } }, "enhanced-resolve": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", - "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1533,12 +3202,12 @@ "dev": true }, "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", + "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==", "dev": true, "requires": { - "prr": "0.0.0" + "prr": "1.0.1" } }, "error-ex": { @@ -1550,14 +3219,104 @@ "is-arrayish": "0.2.1" } }, - "es6-templates": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", - "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", "dev": true, "requires": { - "recast": "0.11.23", - "through": "2.3.8" + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es5-ext": { + "version": "0.10.38", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.38.tgz", + "integrity": "sha512-jCMyePo7AXbUESwbl8Qi01VSH2piY9s/a3rSU/5w/MlTIx8HPL1xn2InGN8ejt/xulcJgnTO7vqNtOAxzYd2Kg==", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "dev": true + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" } }, "escape-html": { @@ -1572,10 +3331,67 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "optional": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true, + "optional": true + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "estree-walker": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.1.tgz", + "integrity": "sha512-7HgCgz1axW7w5aOvgOQkoR1RMBkllygJrssU3BvymKQ95lxXYv6Pon17fBRDm9qhkvXZGijOULoSF9ShOk/ZLg==", "dev": true }, "esutils": { @@ -1584,6 +3400,22 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38" + } + }, "eventemitter3": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", @@ -1596,6 +3428,15 @@ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", "dev": true }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": "1.0.0" + } + }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", @@ -1606,10 +3447,38 @@ "safe-buffer": "5.1.1" } }, - "exists-sync": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/exists-sync/-/exists-sync-0.0.4.tgz", - "integrity": "sha1-l0TCxCjMA7AQYNtFTUsS8O88iHk=", + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, "expand-braces": { @@ -1623,12 +3492,6 @@ "braces": "0.1.5" }, "dependencies": { - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, "braces": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", @@ -1663,40 +3526,12 @@ } }, "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.0.2" - } - } + "is-posix-bracket": "0.1.1" } }, "expand-range": { @@ -1706,47 +3541,67 @@ "dev": true, "requires": { "fill-range": "2.2.3" + } + }, + "exports-loader": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/exports-loader/-/exports-loader-0.6.4.tgz", + "integrity": "sha1-1w/GEhl1s1/BKDDPUnVL4nQPyIY=", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "source-map": "0.5.7" + } + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.2", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.1", + "vary": "1.1.2" }, "dependencies": { - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true } } }, @@ -1765,88 +3620,84 @@ "is-extendable": "0.1.1" } }, - "external-editor": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz", - "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==", - "dev": true, - "requires": { - "iconv-lite": "0.4.19", - "jschardet": "1.5.1", - "tmp": "0.0.33" - } - }, "extglob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.2.tgz", - "integrity": "sha512-I0+eZBH+jFGL8F5BnIz2ON2nKCjTS3AS3H/5PeSmCp7UVC70Ym8IhdRiQly2juKYQ//f7z1aj1BRpQniFJoU1w==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "is-extglob": "1.0.0" } }, "extract-text-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.0.tgz", - "integrity": "sha1-kMqnkHvESfM1AF46x1MrQbAN5hI=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", "dev": true, "requires": { - "async": "2.5.0", + "async": "2.6.0", "loader-utils": "1.1.0", "schema-utils": "0.3.0", - "webpack-sources": "1.0.1" - }, - "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - } + "webpack-sources": "1.1.0" } }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, "fast-deep-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", "dev": true }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true, + "optional": true + }, "fastparse": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", "dev": true }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "websocket-driver": "0.7.0" } }, "file-loader": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.9.0.tgz", - "integrity": "sha1-HS2t3UJM5tGwfP4/eXMb7TYXq0I=", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.6.tgz", + "integrity": "sha512-873ztuL+/hfvXbLDJ262PGO6XjERnybJu2gW1/5j8HUfxSiFJI9Hj/DhZ50ZGRUxBvuNiazb/cM2rh9pqrxP6Q==", "dev": true, "requires": { - "loader-utils": "0.2.17" + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -1864,25 +3715,26 @@ } }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" } }, "finalhandler": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", - "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "1.0.1", + "encodeurl": "1.0.2", "escape-html": "1.0.3", "on-finished": "2.3.0", "parseurl": "1.3.2", @@ -1890,14 +3742,62 @@ "unpipe": "1.0.0" } }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.1.0", + "pkg-dir": "2.0.0" + } + }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "dev": true + }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true + }, "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "follow-redirects": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz", + "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=", "dev": true, + "optional": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "debug": "2.6.9" } }, "for-in": { @@ -1915,6 +3815,43 @@ "for-in": "1.0.2" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "formulajs": { + "version": "github:handsontable/formula.js#01d98a9c22e1931e73e46f71142c08917131b83f", + "requires": { + "bessel": "0.2.0", + "jStat": "1.7.1", + "numbro": "1.11.0" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -1924,6 +3861,22 @@ "map-cache": "0.2.2" } }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, "fs-access": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", @@ -1933,6 +3886,29 @@ "null-check": "1.0.0" } }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.3" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1940,14 +3916,14 @@ "dev": true }, "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", "dev": true, "optional": true, "requires": { - "nan": "2.7.0", - "node-pre-gyp": "0.6.36" + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" }, "dependencies": { "abbrev": { @@ -2105,7 +4081,6 @@ "version": "2.0.5", "bundled": true, "dev": true, - "optional": true, "requires": { "boom": "2.10.1" } @@ -2153,6 +4128,12 @@ "dev": true, "optional": true }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, "ecc-jsbn": { "version": "0.1.1", "bundled": true, @@ -2294,7 +4275,6 @@ "version": "3.1.3", "bundled": true, "dev": true, - "optional": true, "requires": { "boom": "2.10.1", "cryptiles": "2.0.5", @@ -2466,11 +4446,13 @@ "optional": true }, "node-pre-gyp": { - "version": "0.6.36", + "version": "0.6.39", "bundled": true, "dev": true, "optional": true, "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", "mkdirp": "0.5.1", "nopt": "4.0.1", "npmlog": "4.1.0", @@ -2678,7 +4660,6 @@ "version": "1.0.9", "bundled": true, "dev": true, - "optional": true, "requires": { "hoek": "2.16.3" } @@ -2838,52 +4819,176 @@ } } }, - "generate-release": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/generate-release/-/generate-release-0.13.1.tgz", - "integrity": "sha512-9/mZaW8Ez1qmzuqkMVEk0e1pQWBrbnHW8wZr9xArGy1rkaaUSqI8Ya9c5hQopu0f2PF8DSmTuoR+FeilgnEgUg==", + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { - "bluebird": "3.5.0", - "exists-sync": "0.0.4", - "glob": "7.1.2", - "iniparser": "1.0.5", - "inquirer": "3.3.0", - "minimist": "1.2.0", - "observatory": "1.0.0", - "rmdir": "1.2.0", - "temp": "0.8.3", - "xtend": "4.0.1" + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" } }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "dev": true, + "optional": true, + "requires": { + "readable-stream": "1.1.14", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true, + "optional": true + } + } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" } }, - "glob-base": { - "version": "0.3.0", + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "1.2.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.1.tgz", + "integrity": "sha512-7aelVrYqCLuVjq2kEKRTH8fXPTC0xKTkM+G7UlFkEwCXY3sFbSxvY375JoFowOAYbkaU47SrBvOefUlLZZ+6QA==", + "dev": true, + "optional": true, + "requires": { + "data-uri-to-buffer": "1.2.0", + "debug": "2.6.9", + "extend": "3.0.1", + "file-uri-to-path": "1.0.0", + "ftp": "0.3.10", + "readable-stream": "2.3.3" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, @@ -2901,22 +5006,62 @@ "is-glob": "2.0.1" } }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true, + "requires": { + "find-index": "0.1.1" + } + }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "glob": "7.1.2", + "ignore": "3.3.7", + "pify": "3.0.0", + "slash": "1.0.0" + } + }, + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "minimatch": "3.0.4" + } + }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, "handlebars": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", - "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "1.5.2", @@ -2931,6 +5076,25 @@ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", @@ -2960,19 +5124,81 @@ "optional": true } } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } }, "handsontable": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/handsontable/-/handsontable-0.34.4.tgz", - "integrity": "sha512-hQOrm3Py840dSqX9BoJUovtx4dRjgdmpUr7KkAoTtwfYCySwAxI4kEWBMfc22l3rimPPEoTKma5K6DS0lfijTQ==", + "version": "0.35.1", + "resolved": "https://registry.npmjs.org/handsontable/-/handsontable-0.35.1.tgz", + "integrity": "sha512-fWW5PSfBsd9HV2BhQzhXElauC51hRmNEqBgVO8vk7lSRqLcWS47SWckLR7A3N+2ctF0GBsZvxdDls2rxMP1SWg==", "requires": { - "moment": "2.18.1", + "moment": "2.20.1", "numbro": "1.11.0", "pikaday": "1.5.1" } }, + "handsontable-pro": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/handsontable-pro/-/handsontable-pro-1.15.1.tgz", + "integrity": "sha512-7huYjgrXpAWDInh7NJAhLKMDpR6GHE7WVbCA7snXze431LZDjiD7/1vsaNEZzE4hER6DYT8JvdV7hmdJjgQzTg==", + "requires": { + "handsontable": "0.35.1", + "hot-formula-parser": "2.3.1", + "moment": "2.20.1", + "numbro": "1.11.0", + "pikaday": "1.5.1" + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + } + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -2980,29 +5206,21 @@ "dev": true, "requires": { "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } } }, - "has-binary": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "has-binary2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.2.tgz", + "integrity": "sha1-6D26SfC5vk0CbSc2U1DZ8D9Uvpg=", "dev": true, "requires": { - "isarray": "0.0.1" + "isarray": "2.0.1" }, "dependencies": { "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", "dev": true } } @@ -3019,6 +5237,12 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -3028,6 +5252,14 @@ "get-value": "2.0.6", "has-values": "1.0.0", "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "has-values": { @@ -3040,13 +5272,33 @@ "kind-of": "4.0.0" }, "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } @@ -3070,12 +5322,35 @@ "minimalistic-assert": "1.0.0" } }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, + "hipchat-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz", + "integrity": "sha1-ttJJdVQ3wZEII2d5nTupoPI7Ix4=", + "dev": true, + "optional": true, + "requires": { + "lodash": "4.17.4", + "request": "2.81.0" + } + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -3087,52 +5362,74 @@ "minimalistic-crypto-utils": "1.0.1" } }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, "hosted-git-info": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, - "html-loader": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.4.5.tgz", - "integrity": "sha1-X7zYfNY6XEmn/OL+VvQl4Fcpxow=", + "hot-formula-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/hot-formula-parser/-/hot-formula-parser-2.3.1.tgz", + "integrity": "sha512-8SUBMN+R7glYJClVax590naHhB4K9iYkM7tq3snKJ2FXX37/wyCjPYaV2/bvnbeREg746rk/h701YFIskXHh9A==", + "requires": { + "formulajs": "github:handsontable/formula.js#01d98a9c22e1931e73e46f71142c08917131b83f", + "tiny-emitter": "2.0.2" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "dev": true, "requires": { - "es6-templates": "0.2.3", - "fastparse": "1.1.1", - "html-minifier": "3.5.5", - "loader-utils": "1.1.0", - "object-assign": "4.1.1" - }, - "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - } + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "wbuf": "1.7.2" } }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, "html-minifier": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.5.tgz", - "integrity": "sha512-g+1+NBycQI0fGnggd52JM8TRUweG7+9W2wrtjGitMAqc4G7maweAHvVAAjz9veHseIH3tYKE2lk2USGSoewIrQ==", + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.8.tgz", + "integrity": "sha512-WX7D6PB9PFq05fZ1/CyxPUuyqXed6vh2fGOM80+zJT5wAO93D/cUjLs0CcbBFjQmlwmCgRvl97RurtArIpOnkw==", "dev": true, "requires": { "camel-case": "3.0.0", "clean-css": "4.1.9", - "commander": "2.11.0", + "commander": "2.12.2", "he": "1.1.1", "ncname": "1.0.0", "param-case": "2.1.1", "relateurl": "0.2.7", - "uglify-js": "3.1.2" + "uglify-js": "3.3.9" } }, "html-webpack-plugin": { @@ -3141,14 +5438,34 @@ "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", "dev": true, "requires": { - "bluebird": "3.5.0", - "html-minifier": "3.5.5", + "bluebird": "3.5.1", + "html-minifier": "3.5.8", "loader-utils": "0.2.17", "lodash": "4.17.4", "pretty-error": "2.1.1", - "toposort": "1.0.3" + "toposort": "1.0.6" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } } }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "dev": true + }, "htmlparser2": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", @@ -3196,6 +5513,12 @@ } } }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, "http-errors": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", @@ -3206,8 +5529,28 @@ "inherits": "2.0.3", "setprototypeof": "1.0.3", "statuses": "1.3.1" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } } }, + "http-parser-js": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", + "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", + "dev": true + }, "http-proxy": { "version": "1.16.2", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", @@ -3218,23 +5561,178 @@ "requires-port": "1.0.0" } }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true + "http-proxy-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz", + "integrity": "sha1-zBzjjkU7+YSg93AtLdWcc9CBKEo=", + "dev": true, + "requires": { + "agent-base": "2.1.1", + "debug": "2.6.9", + "extend": "3.0.1" + } }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", - "dev": true + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "dev": true, + "requires": { + "http-proxy": "1.16.2", + "is-glob": "3.1.0", + "lodash": "4.17.4", + "micromatch": "2.3.11" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "httpntlm": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.6.1.tgz", + "integrity": "sha1-rQFScUOi6Hc8+uapb1hla7UqNLI=", + "dev": true, + "requires": { + "httpreq": "0.4.24", + "underscore": "1.7.0" + } + }, + "httpreq": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.4.24.tgz", + "integrity": "sha1-QzX/2CzZaWaKOUZckprGHWOTYn8=", + "dev": true + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", + "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", + "dev": true, + "requires": { + "agent-base": "2.1.1", + "debug": "2.6.9", + "extend": "3.0.1" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "6.0.16" + } + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true }, "indexof": { "version": "0.0.1", @@ -3242,6 +5740,13 @@ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", "dev": true }, + "inflection": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz", + "integrity": "sha1-W//LEZetPoEFD44X4hZoCH7p6y8=", + "dev": true, + "optional": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3258,38 +5763,113 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "iniparser": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/iniparser/-/iniparser-1.0.5.tgz", - "integrity": "sha1-g21r7+bfv87gvM8c+fKsxwJ/eD0=", + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "injection-js": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/injection-js/-/injection-js-2.2.1.tgz", + "integrity": "sha512-zHI+E+dM0PXix5FFTO1Y4/UOyAzE7zG1l/QwAn4jchTThOoBq+UYRFK4AVG7lQgFL+go62SbrzSsjXy9DFEZUg==", + "dev": true + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", "dev": true, "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.1.0", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.0.5", - "figures": "2.0.0", - "lodash": "4.17.4", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "source-map": "0.5.7" + } + }, + "insert-module-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", + "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", + "dev": true, + "requires": { + "JSONStream": "1.3.2", + "combine-source-map": "0.7.2", + "concat-stream": "1.5.2", + "is-buffer": "1.1.6", + "lexical-scope": "1.2.0", + "process": "0.11.10", + "through2": "2.0.3", + "xtend": "4.0.1" + }, + "dependencies": { + "combine-source-map": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz", + "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=", + "dev": true, + "requires": { + "convert-source-map": "1.1.3", + "inline-source-map": "0.6.2", + "lodash.memoize": "3.0.4", + "source-map": "0.5.7" + } + }, + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + } + }, + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "3.7.0" } }, "interpret": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", - "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, "invariant": { @@ -3307,29 +5887,38 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "is": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/is/-/is-0.2.7.tgz", - "integrity": "sha1-OzSixI81mXLzUEKEkZOucmS2NWI=", + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", + "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", "dev": true }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "6.0.2" }, "dependencies": { "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -3345,13 +5934,13 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.10.0" + "binary-extensions": "1.11.0" } }, "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { @@ -3363,37 +5952,60 @@ "builtin-modules": "1.1.1" } }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "6.0.2" }, "dependencies": { "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, - "is-descriptor": { + "is-date-object": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.1.tgz", - "integrity": "sha512-G3fFVFTqfaqu7r4YuSBHKBAuOaLz8Sy7ekklUpFEliaLMP1Y2ZjoN9jS62YWCAPQrQpMUQSitRlrzibbuCZjdA==", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -3431,10 +6043,13 @@ } }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-glob": { "version": "2.0.1", @@ -3445,35 +6060,83 @@ "is-extglob": "1.0.0" } }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-my-json-valid": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", + "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "3.2.2" + } + }, + "is-odd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", + "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", + "dev": true, + "requires": { + "is-number": "3.0.0" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "kind-of": "3.2.2" } } } }, - "is-odd": { + "is-path-cwd": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", - "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", "dev": true, "requires": { - "is-number": "3.0.0" + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" } }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -3481,6 +6144,14 @@ "dev": true, "requires": { "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "is-posix-bracket": { @@ -3495,10 +6166,46 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, - "is-promise": { + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "requires": { + "html-comment-regex": "1.1.1" + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, "is-utf8": { @@ -3507,10 +6214,10 @@ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, - "is-windows": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", - "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=", + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, "isarray": { @@ -3532,30 +6239,51 @@ "dev": true }, "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, "istanbul-api": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.14.tgz", - "integrity": "sha1-JbxXAffGgMD//5E95G42GaOm5oA=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", + "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", "dev": true, "requires": { - "async": "2.5.0", + "async": "2.6.0", "fileset": "2.0.3", "istanbul-lib-coverage": "1.1.1", - "istanbul-lib-hook": "1.0.7", - "istanbul-lib-instrument": "1.8.0", - "istanbul-lib-report": "1.1.1", - "istanbul-lib-source-maps": "1.2.1", - "istanbul-reports": "1.1.2", - "js-yaml": "3.10.0", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "js-yaml": "3.7.0", "mkdirp": "0.5.1", "once": "1.4.0" } }, + "istanbul-instrumenter-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.0.tgz", + "integrity": "sha512-alLSEFX06ApU75sm5oWcaVNaiss/bgMRiWTct3g0P0ZZTKjR+6QiCcuVOKDI1kWJgwHEnIXsv/dWm783kPpmtw==", + "dev": true, + "requires": { + "convert-source-map": "1.5.1", + "istanbul-lib-instrument": "1.9.1", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + } + }, "istanbul-lib-coverage": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", @@ -3563,18 +6291,18 @@ "dev": true }, "istanbul-lib-hook": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", - "integrity": "sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", "dev": true, "requires": { "append-transform": "0.4.0" } }, "istanbul-lib-instrument": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.8.0.tgz", - "integrity": "sha1-ZvbJQhzJ7EcE928tsIS6kHiitTI=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", "dev": true, "requires": { "babel-generator": "6.26.0", @@ -3583,21 +6311,13 @@ "babel-types": "6.26.0", "babylon": "6.18.0", "istanbul-lib-coverage": "1.1.1", - "semver": "5.4.1" - }, - "dependencies": { - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - } + "semver": "5.5.0" } }, "istanbul-lib-report": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", - "integrity": "sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", @@ -3624,31 +6344,79 @@ } }, "istanbul-lib-source-maps": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", - "integrity": "sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", "dev": true, "requires": { - "debug": "2.6.9", + "debug": "3.1.0", "istanbul-lib-coverage": "1.1.1", "mkdirp": "0.5.1", "rimraf": "2.6.2", "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, "istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha1-D7Lj9qqZIr085F0F2KtNXo4HvU8=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "jStat": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/jStat/-/jStat-1.7.1.tgz", + "integrity": "sha512-toueem/U5hyHM6pqe6OZOL/5P8MrY7Ss1K8Brg+TcfX+RAjDU/sbwy72fwzmLPQ5ykdBe1UEoWQHc7OSNWMUDQ==" + }, + "jasmine": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.9.0.tgz", + "integrity": "sha1-dlcfklyHg0CefGFTVy5aY0HPk+s=", "dev": true, "requires": { - "handlebars": "4.0.10" + "exit": "0.1.2", + "glob": "7.1.2", + "jasmine-core": "2.9.1" } }, "jasmine-core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", - "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.9.1.tgz", + "integrity": "sha1-trvB2OZSUNVvWIhGFwXr7uuI8i8=", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "dev": true, + "requires": { + "colors": "1.1.2" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "js-base64": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", + "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==", "dev": true }, "js-tokens": { @@ -3658,33 +6426,26 @@ "dev": true }, "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", "dev": true, "requires": { "argparse": "1.0.9", - "esprima": "4.0.0" - }, - "dependencies": { - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - } + "esprima": "2.7.3" } }, - "jschardet": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.1.tgz", - "integrity": "sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A==", - "dev": true + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true }, "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true }, "json-loader": { @@ -3693,6 +6454,12 @@ "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", "dev": true }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", @@ -3708,6 +6475,12 @@ "jsonify": "0.0.0" } }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, "json3": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", @@ -3720,25 +6493,114 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "jszip": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", + "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", + "dev": true, + "requires": { + "core-js": "2.3.0", + "es6-promise": "3.0.2", + "lie": "3.1.1", + "pako": "1.0.6", + "readable-stream": "2.0.6" + }, + "dependencies": { + "core-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", + "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=", + "dev": true + }, + "es6-promise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", + "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, "karma": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", - "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-2.0.0.tgz", + "integrity": "sha512-K9Kjp8CldLyL9ANSUctDyxC7zH3hpqXj/K09qVf06K3T/kXaHtFZ5tQciK7OzQu68FLvI89Na510kqQ2LCbpIw==", "dev": true, "requires": { - "bluebird": "3.5.0", + "bluebird": "3.5.1", "body-parser": "1.18.2", + "browserify": "14.5.0", "chokidar": "1.7.0", "colors": "1.1.2", "combine-lists": "1.0.1", "connect": "3.6.5", - "core-js": "2.5.1", + "core-js": "2.5.3", "di": "0.0.1", "dom-serialize": "2.2.1", "expand-braces": "0.1.2", @@ -3746,35 +6608,26 @@ "graceful-fs": "4.1.11", "http-proxy": "1.16.2", "isbinaryfile": "3.0.2", - "lodash": "3.10.1", - "log4js": "0.6.38", - "mime": "1.4.1", + "lodash": "4.17.4", + "log4js": "2.5.2", + "mime": "1.6.0", "minimatch": "3.0.4", "optimist": "0.6.1", "qjobs": "1.1.5", "range-parser": "1.2.0", "rimraf": "2.6.2", "safe-buffer": "5.1.1", - "socket.io": "1.7.3", - "source-map": "0.5.7", - "tmp": "0.0.31", - "useragent": "2.2.1" + "socket.io": "2.0.4", + "source-map": "0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" }, "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } } } }, @@ -3788,26 +6641,29 @@ "which": "1.3.0" } }, + "karma-cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-1.0.1.tgz", + "integrity": "sha1-rmw8WKMTodALRRZMRVubhs4X+WA=", + "dev": true, + "requires": { + "resolve": "1.5.0" + } + }, "karma-coverage-istanbul-reporter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.3.0.tgz", - "integrity": "sha1-0ULNnFVzHJ42Pvc3To7xoxvr+ts=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.4.1.tgz", + "integrity": "sha512-5og0toMjgLvsL9+TzGH4Rk1D0nr7pMIRJBg29xP4mHMKy/1KUJ12UzoqI6mBNCRFa4nDvZS2MRrN7p+RkZNWxQ==", "dev": true, "requires": { - "istanbul-api": "1.1.14", + "istanbul-api": "1.2.1", "minimatch": "3.0.4" } }, - "karma-firefox-launcher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.0.1.tgz", - "integrity": "sha1-zlj0fCATqIFW1VpdYTN8CZz1u1E=", - "dev": true - }, "karma-jasmine": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.0.tgz", - "integrity": "sha1-IuTAa/mhguUpTR9wXjczgRuBCs8=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.1.tgz", + "integrity": "sha1-b+hA51oRYAydkehLM8RY4cRqNSk=", "dev": true }, "karma-jasmine-html-reporter": { @@ -3816,76 +6672,175 @@ "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", "dev": true, "requires": { - "karma-jasmine": "1.1.0" + "karma-jasmine": "1.1.1" } }, - "karma-sourcemap-loader": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz", - "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", + "karma-source-map-support": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.2.0.tgz", + "integrity": "sha1-G/gee7SwiWJ6s1LsQXnhF8QGpUA=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "source-map-support": "0.4.18" } }, - "karma-webpack": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.4.tgz", - "integrity": "sha1-Pi1PSLqUqHjhxmu44a5hKJh6F1s=", + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "async": "0.9.2", - "loader-utils": "0.2.17", - "lodash": "3.10.1", - "source-map": "0.1.43", - "webpack-dev-middleware": "1.12.0" + "is-buffer": "1.1.6" + } + }, + "labeled-stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz", + "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "isarray": "0.0.1", + "stream-splicer": "2.0.0" }, "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + } + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "less": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", + "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", + "dev": true, + "requires": { + "errno": "0.1.6", + "graceful-fs": "4.1.11", + "image-size": "0.5.5", + "mime": "1.6.0", + "mkdirp": "0.5.1", + "promise": "7.3.1", + "request": "2.81.0", + "source-map": "0.5.7" + } + }, + "less-loader": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.0.5.tgz", + "integrity": "sha1-rhVadAbKxqzSk9eFWH/P8PR4xN0=", + "dev": true, + "requires": { + "clone": "2.1.1", + "loader-utils": "1.1.0", + "pify": "2.3.0" + }, + "dependencies": { + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", "dev": true }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true } } }, - "kind-of": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.0.2.tgz", - "integrity": "sha512-ru8+TQHbN8956c7ZlkgK5Imjx0GMat3jN45GNIthpPeb+SzLrqSg/NG7llQtIqUTbrdu5Oi0lSnIoJmDTwwSzw==", + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "optional": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "lexical-scope": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", + "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", + "dev": true, + "requires": { + "astw": "2.2.0" + } + }, + "libbase64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", + "integrity": "sha1-YjUag5VjrF/1vSbxL2Dpgwu3UeY=", "dev": true }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "libmime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/libmime/-/libmime-3.0.0.tgz", + "integrity": "sha1-UaGp50SOy9Ms2lRCFnW7IbwJPaY=", "dev": true, "requires": { - "set-getter": "0.1.0" + "iconv-lite": "0.4.15", + "libbase64": "0.1.0", + "libqp": "1.1.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", + "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", + "dev": true + } } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "libqp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", + "integrity": "sha1-9ebgatdLeU+1tbZpiL9yjvHe2+g=", + "dev": true + }, + "license-webpack-plugin": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-1.1.1.tgz", + "integrity": "sha512-TjKOyiC0exqd4Idy/4M8/DETR22dXBZks387DuS5LbslxHiMRXGx/Q2F/j9IUtvEoH5uFvt72vRgk/G6f8j3Dg==", "dev": true, "requires": { - "invert-kv": "1.0.0" + "ejs": "2.5.7" + } + }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "dev": true, + "requires": { + "immediate": "3.0.6" } }, "load-json-file": { @@ -3899,6 +6854,14 @@ "pify": "2.3.0", "pinkie-promise": "2.0.1", "strip-bom": "2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "loader-runner": { @@ -3908,59 +6871,237 @@ "dev": true }, "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "dev": true, "requires": { "big.js": "3.2.0", "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" + "json5": "0.5.1" } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", + "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=", + "dev": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, "log4js": { - "version": "0.6.38", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", - "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-2.5.2.tgz", + "integrity": "sha512-MmZhzQCfCV5+nQgOqy34V9EV3k+Z/rPCdxyq+25EePKpwdUQxCb19BTmL5iX3iOCSAV/tWh7KVYqchwrx3+S2Q==", + "dev": true, + "requires": { + "amqplib": "0.5.2", + "axios": "0.15.3", + "circular-json": "0.5.1", + "date-format": "1.2.0", + "debug": "3.1.0", + "hipchat-notifier": "1.1.0", + "loggly": "1.1.1", + "mailgun-js": "0.7.15", + "nodemailer": "2.7.2", + "redis": "2.8.0", + "semver": "5.5.0", + "slack-node": "0.2.0", + "streamroller": "0.7.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "loggly": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/loggly/-/loggly-1.1.1.tgz", + "integrity": "sha1-Cg/B0/o6XsRP3HuJe+uipGlc6+4=", "dev": true, + "optional": true, "requires": { - "readable-stream": "1.0.34", - "semver": "4.3.6" + "json-stringify-safe": "5.0.1", + "request": "2.75.0", + "timespan": "2.3.0" }, "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "optional": true }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, + "optional": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true + "form-data": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.0.0.tgz", + "integrity": "sha1-bwrrrcxdoWwT4ezBETfYX5uIOyU=", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "optional": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.12.2", + "is-my-json-valid": "2.17.1", + "pinkie-promise": "2.0.1" + } + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", + "dev": true, + "optional": true + }, + "qs": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", + "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", + "dev": true, + "optional": true + }, + "request": { + "version": "2.75.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.75.0.tgz", + "integrity": "sha1-0rgmiihtoT6qXQGt9dGMyQ9lfZM=", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "bl": "1.1.2", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.0.0", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "node-uuid": "1.4.8", + "oauth-sign": "0.8.2", + "qs": "6.2.3", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "optional": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true, + "optional": true } } }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -3976,6 +7117,16 @@ "js-tokens": "3.0.2" } }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", @@ -3992,12 +7143,113 @@ "yallist": "2.1.2" } }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", + "dev": true + }, + "magic-string": { + "version": "0.22.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.4.tgz", + "integrity": "sha512-kxBL06p6iO2qPBHsqGK2b3cRwiRGpnmSuVWNhwHcMX7qJOUr1HvricYP1LZOCdkQBUp0jiWg2d6WJwR3vYgByw==", + "dev": true, + "requires": { + "vlq": "0.2.3" + } + }, + "mailcomposer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-4.0.1.tgz", + "integrity": "sha1-DhxEsqB890DuF9wUm6AJ8Zyt/rQ=", + "dev": true, + "optional": true, + "requires": { + "buildmail": "4.0.1", + "libmime": "3.0.0" + } + }, + "mailgun-js": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/mailgun-js/-/mailgun-js-0.7.15.tgz", + "integrity": "sha1-7jZqINrGTDwVwD1sGz4O15UlKrs=", + "dev": true, + "optional": true, + "requires": { + "async": "2.1.5", + "debug": "2.2.0", + "form-data": "2.1.4", + "inflection": "1.10.0", + "is-stream": "1.1.0", + "path-proxy": "1.0.0", + "proxy-agent": "2.0.0", + "q": "1.4.1", + "tsscmp": "1.0.5" + }, + "dependencies": { + "async": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/async/-/async-2.1.5.tgz", + "integrity": "sha1-5YfGhYCZSsZ/xW/4bTrFa9voELw=", + "dev": true, + "optional": true, + "requires": { + "lodash": "4.17.4" + } + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "optional": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true, + "optional": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true, + "optional": true + } + } + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "make-error": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.2.tgz", + "integrity": "sha512-l9ra35l5VWLF24y75Tg8XgfGLX0ueRhph118WKM6H5denx4bB5QF59+4UAm9oJ2qsPQZas/CQUDdtDdfvYHBdQ==", + "dev": true + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -4007,6 +7259,12 @@ "object-visit": "1.0.1" } }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", + "dev": true + }, "md5.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", @@ -4035,41 +7293,88 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "errno": "0.1.4", + "errno": "0.1.6", "readable-stream": "2.3.3" } }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, "micromatch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz", - "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==", + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.2.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "extglob": "2.0.2", - "fragment-cache": "0.2.1", - "kind-of": "5.0.2", - "nanomatch": "1.2.3", - "object.pick": "1.3.0", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } }, "miller-rabin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", - "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, "requires": { "bn.js": "4.11.8", @@ -4077,9 +7382,9 @@ } }, "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, "mime-db": { @@ -4125,42 +7430,153 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, - "mixin-deep": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.2.0.tgz", - "integrity": "sha1-0CuMb4ttS49ZgtP9AJxJGYUcP+I=", + "mississippi": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.1.tgz", + "integrity": "sha512-/6rB8YXFbAtsUVRphIRQqB0+9c7VaPHCjVtvto+JqwVxgz8Zz+I+f68/JgQ+Pb4VlZb2svA9OtdXnHHsZz7ltg==", "dev": true, "requires": { - "for-in": "1.0.2", - "is-extendable": "0.1.1" + "concat-stream": "1.6.0", + "duplexify": "3.5.3", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "1.0.3", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "mixin-deep": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.0.tgz", + "integrity": "sha512-dgaCvoh6i1nosAUBKb0l0pfJ78K8+S9fluyIR2YvAeUD/QuMahnFnF3xYty5eYXMjhGSsB0DsW6A0uAZyetoAg==", "dev": true, "requires": { - "minimist": "0.0.8" + "for-in": "1.0.2", + "is-extendable": "1.0.1" }, "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "0.1.8", + "is-extendable": "0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "module-deps": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz", + "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", + "dev": true, + "requires": { + "JSONStream": "1.3.2", + "browser-resolve": "1.11.2", + "cached-path-relative": "1.0.1", + "concat-stream": "1.5.2", + "defined": "1.0.0", + "detective": "4.7.1", + "duplexer2": "0.1.4", + "inherits": "2.0.3", + "parents": "1.0.1", + "readable-stream": "2.3.3", + "resolve": "1.5.0", + "stream-combiner2": "1.1.1", + "subarg": "1.0.0", + "through2": "2.0.3", + "xtend": "4.0.1" + }, + "dependencies": { + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + } + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } } }, "moment": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", - "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz", + "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } }, "ms": { "version": "2.0.0", @@ -4168,23 +7584,32 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "1.3.1", + "thunky": "1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, "nan": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", - "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", - "dev": true, - "optional": true + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true }, "nanomatch": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.3.tgz", - "integrity": "sha512-HqDMQWJlwpXbfKDpAnkc6AJQh5PFqVlrjYbruDjYVAS+05TQUb1qhIde4G9jMzHbs/u6bgEok1jMAV4yJzoh+w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.7.tgz", + "integrity": "sha512-/5ldsnyurvEw7wNpxLFgjVvBLMta43niEYOy0CJ4ntcYSbx6bugRUTQeFb4BR/WanEL1o3aQgHuVLHQaB6tOqg==", "dev": true, "requires": { "arr-diff": "4.0.0", @@ -4193,11 +7618,31 @@ "extend-shallow": "2.0.1", "fragment-cache": "0.2.1", "is-odd": "1.0.0", - "kind-of": "5.0.2", + "kind-of": "5.1.0", "object.pick": "1.3.0", "regex-not": "1.0.0", "snapdragon": "0.8.1", "to-regex": "3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, "ncname": { @@ -4215,6 +7660,55 @@ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", "dev": true }, + "netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", + "dev": true, + "optional": true + }, + "ng-packagr": { + "version": "2.0.0-rc.11", + "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-2.0.0-rc.11.tgz", + "integrity": "sha512-6oic2mG+4lyX6bj8UjzO41U5xIKLMclJZdMTgp7FZOqpnS3bvOzhd7Wq/b0ROdtXJuFXqYxFEU+Nj5ZPOSHayg==", + "dev": true, + "requires": { + "@ngtools/json-schema": "1.1.0", + "autoprefixer": "7.2.5", + "browserslist": "2.11.3", + "commander": "2.12.2", + "cpx": "1.5.0", + "fs-extra": "5.0.0", + "glob": "7.1.2", + "injection-js": "2.2.1", + "less": "2.7.3", + "node-sass": "4.7.2", + "node-sass-tilde-importer": "1.0.1", + "postcss": "6.0.16", + "postcss-url": "7.3.0", + "rimraf": "2.6.2", + "rollup": "0.53.4", + "rollup-plugin-commonjs": "8.3.0", + "rollup-plugin-node-resolve": "3.0.2", + "rxjs": "5.5.6", + "sorcery": "0.10.0", + "stylus": "0.54.5", + "uglify-js": "3.3.9" + }, + "dependencies": { + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + } + } + } + }, "no-case": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", @@ -4224,62 +7718,301 @@ "lower-case": "1.1.4" } }, + "node-forge": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz", + "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA=", + "dev": true + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.4", + "request": "2.81.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.0" + }, + "dependencies": { + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, "node-libs-browser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", - "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", "dev": true, "requires": { "assert": "1.4.1", - "browserify-zlib": "0.1.4", + "browserify-zlib": "0.2.0", "buffer": "4.9.1", "console-browserify": "1.1.0", "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.1", - "domain-browser": "1.1.7", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", "path-browserify": "0.0.0", "process": "0.11.10", "punycode": "1.4.1", "querystring-es3": "0.2.1", "readable-stream": "2.3.3", "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.4", + "stream-http": "2.8.0", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.6", "tty-browserify": "0.0.0", "url": "0.11.0", "util": "0.10.3", "vm-browserify": "0.0.4" + } + }, + "node-modules-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/node-modules-path/-/node-modules-path-1.0.1.tgz", + "integrity": "sha1-QAlrCM560OoUaAhjr0ScfHWl0cg=", + "dev": true + }, + "node-sass": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.7.2.tgz", + "integrity": "sha512-CaV+wLqZ7//Jdom5aUFCpGNoECd7BbNhjuwdsX/LkXBrHl8eb1Wjw4HvWqcFvhr5KuNgAk8i/myf/MQ1YYeroA==", + "dev": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.2", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.0", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.8.0", + "node-gyp": "3.6.2", + "npmlog": "4.1.2", + "request": "2.79.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0", + "true-case-path": "1.0.2" }, "dependencies": { - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.12.2", + "is-my-json-valid": "2.17.1", + "pinkie-promise": "2.0.1" + } + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3", + "uuid": "3.2.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", "dev": true } } }, - "node.extend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.0.8.tgz", - "integrity": "sha1-urBDefc4P0WHmQyd8Htqf2Xbdys=", + "node-sass-tilde-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.1.tgz", + "integrity": "sha512-Fh9+WztCbell05Xy2KpU96Fkj5JWrs5RX/nP4ko2n6zi1/SJnw1tMXDzS1wD9ttFNy3A0jsmTFqObdPIjx35Wg==", "dev": true, "requires": { - "is": "0.2.7", - "object-keys": "0.4.0" + "find-parent-dir": "0.3.0" } }, - "node.flow": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/node.flow/-/node.flow-1.2.3.tgz", - "integrity": "sha1-4cRKgq7KjXi0WKd/s9xkLy66Jkk=", + "nodemailer": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.7.2.tgz", + "integrity": "sha1-8kLmSa7q45tsftdA73sGHEBNMPk=", + "dev": true, + "optional": true, + "requires": { + "libmime": "3.0.0", + "mailcomposer": "4.0.1", + "nodemailer-direct-transport": "3.3.2", + "nodemailer-shared": "1.1.0", + "nodemailer-smtp-pool": "2.8.2", + "nodemailer-smtp-transport": "2.7.2", + "socks": "1.1.9" + }, + "dependencies": { + "socks": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.9.tgz", + "integrity": "sha1-Yo1+TQSRJDVEWsC25Fk3bLPm1pE=", + "dev": true, + "optional": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "1.1.15" + } + } + } + }, + "nodemailer-direct-transport": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz", + "integrity": "sha1-6W+vuQNYVglH5WkBfZfmBzilCoY=", + "dev": true, + "optional": true, + "requires": { + "nodemailer-shared": "1.1.0", + "smtp-connection": "2.12.0" + } + }, + "nodemailer-fetch": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz", + "integrity": "sha1-ecSQihwPXzdbc/6IjamCj23JY6Q=", + "dev": true + }, + "nodemailer-shared": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz", + "integrity": "sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA=", + "dev": true, + "requires": { + "nodemailer-fetch": "1.6.0" + } + }, + "nodemailer-smtp-pool": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz", + "integrity": "sha1-LrlNbPhXgLG0clzoU7nL1ejajHI=", + "dev": true, + "optional": true, + "requires": { + "nodemailer-shared": "1.1.0", + "nodemailer-wellknown": "0.1.10", + "smtp-connection": "2.12.0" + } + }, + "nodemailer-smtp-transport": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz", + "integrity": "sha1-A9ccdjFPFKx9vHvwM6am0W1n+3c=", + "dev": true, + "optional": true, + "requires": { + "nodemailer-shared": "1.1.0", + "nodemailer-wellknown": "0.1.10", + "smtp-connection": "2.12.0" + } + }, + "nodemailer-wellknown": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz", + "integrity": "sha1-WG24EB2zDLRDjrVGc3pBqtDPE9U=", + "dev": true + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "requires": { - "node.extend": "1.0.8" + "abbrev": "1.1.1", + "osenv": "0.1.4" } }, "normalize-package-data": { @@ -4290,7 +8023,7 @@ "requires": { "hosted-git-info": "2.5.0", "is-builtin-module": "1.0.0", - "semver": "4.3.6", + "semver": "5.5.0", "validate-npm-package-license": "3.0.1" } }, @@ -4303,25 +8036,64 @@ "remove-trailing-separator": "1.1.0" } }, - "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", "dev": true, "requires": { - "boolbase": "1.0.0" + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" } }, - "null-check": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", - "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", - "dev": true - }, - "null-loader": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-0.1.1.tgz", - "integrity": "sha1-F76av80/8OFRL2/Er8sfUDk3j64=", + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "1.0.0" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, "number-is-nan": { @@ -4335,6 +8107,12 @@ "resolved": "https://registry.npmjs.org/numbro/-/numbro-1.11.0.tgz", "integrity": "sha1-OaoXs1i0aCrsjKDVdV81xdnOj54=" }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -4367,6 +8145,24 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -4375,32 +8171,23 @@ "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", - "kind-of": "5.0.2" + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.0.2.tgz", - "integrity": "sha512-ru8+TQHbN8956c7ZlkgK5Imjx0GMat3jN45GNIthpPeb+SzLrqSg/NG7llQtIqUTbrdu5Oi0lSnIoJmDTwwSzw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } } } }, "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", "dev": true }, "object-visit": { @@ -4410,6 +8197,14 @@ "dev": true, "requires": { "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "object.omit": { @@ -4429,73 +8224,22 @@ "dev": true, "requires": { "isobject": "3.0.1" - } - }, - "observatory": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/observatory/-/observatory-1.0.0.tgz", - "integrity": "sha1-K6pgboKZ5oZpFOycik22pBE25Zs=", - "dev": true, - "requires": { - "ansi-escapes": "1.4.0", - "chalk": "1.1.3", - "lodash": "3.10.1" }, "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - }, - "strip-ansi": { + "isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, + "obuf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "dev": true + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -4505,6 +8249,12 @@ "ee-first": "1.1.1" } }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4514,13 +8264,13 @@ "wrappy": "1.0.2" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "opn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", + "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", "dev": true, "requires": { - "mimic-fn": "1.1.0" + "is-wsl": "1.1.0" } }, "optimist": { @@ -4529,15 +8279,31 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" + "minimist": "0.0.8", + "wordwrap": "0.0.2" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "optional": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" }, "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true, + "optional": true } } }, @@ -4547,10 +8313,37 @@ "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", "dev": true }, + "original": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "dev": true, + "requires": { + "url-parse": "1.0.5" + }, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "dev": true, + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } + } + } + }, "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { @@ -4568,12 +8361,117 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pac-proxy-agent": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-1.1.0.tgz", + "integrity": "sha512-QBELCWyLYPgE2Gj+4wUEiMscHrQ8nRPBzYItQNOHWavwBt25ohZHQC4qnd5IszdVVrFbLsQ+dPkm6eqdjJAmwQ==", + "dev": true, + "optional": true, + "requires": { + "agent-base": "2.1.1", + "debug": "2.6.9", + "extend": "3.0.1", + "get-uri": "2.0.1", + "http-proxy-agent": "1.0.0", + "https-proxy-agent": "1.0.0", + "pac-resolver": "2.0.0", + "raw-body": "2.3.2", + "socks-proxy-agent": "2.1.1" + } + }, + "pac-resolver": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-2.0.0.tgz", + "integrity": "sha1-mbiNLxk/ve78HJpSnB8yYKtSd80=", + "dev": true, + "optional": true, + "requires": { + "co": "3.0.6", + "degenerator": "1.0.4", + "ip": "1.0.1", + "netmask": "1.0.6", + "thunkify": "2.1.2" + }, + "dependencies": { + "co": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/co/-/co-3.0.6.tgz", + "integrity": "sha1-FEXyJsXrlWE45oyawwFn6n0ua9o=", + "dev": true, + "optional": true + }, + "ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.0.1.tgz", + "integrity": "sha1-x+NWzeoiWucbNtcPLnGpK6TkJZA=", + "dev": true, + "optional": true + } + } + }, "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", "dev": true }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, "param-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", @@ -4583,14 +8481,23 @@ "no-case": "2.3.2" } }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "dev": true, + "requires": { + "path-platform": "0.11.15" + } + }, "parse-asn1": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "dev": true, "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.0.8", + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", "create-hash": "1.1.3", "evp_bytestokey": "1.0.3", "pbkdf2": "3.0.14" @@ -4617,14 +8524,11 @@ "error-ex": "1.3.1" } }, - "parsejson": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", - "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true }, "parseqs": { "version": "0.0.5", @@ -4662,14 +8566,17 @@ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", "dev": true }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -4677,21 +8584,62 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "dev": true + }, + "path-proxy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-proxy/-/path-proxy-1.0.0.tgz", + "integrity": "sha1-GOijaFn8nS8aU7SN7hOFQ8Ag3l4=", + "dev": true, + "optional": true, + "requires": { + "inflection": "1.3.8" + }, + "dependencies": { + "inflection": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.3.8.tgz", + "integrity": "sha1-y9Fg2p91sUw8xjV41POWeEvzAU4=", + "dev": true, + "optional": true + } + } + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "pify": "3.0.0" } }, "pbkdf2": { @@ -4704,13 +8652,19 @@ "create-hmac": "1.1.6", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" } }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "pikaday": { @@ -4718,7 +8672,7 @@ "resolved": "https://registry.npmjs.org/pikaday/-/pikaday-1.5.1.tgz", "integrity": "sha1-CkhUm8GhTqHQjEQHTXYbwvK/z9M=", "requires": { - "moment": "2.18.1" + "moment": "2.20.1" } }, "pinkie": { @@ -4736,13 +8690,1905 @@ "pinkie": "2.0.4" } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } }, - "preserve": { + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "5.1.0" + }, + "dependencies": { + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + }, + "dependencies": { + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true, + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "uniqid": "4.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-import": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.0.0.tgz", + "integrity": "sha1-qWLi34LTvFptpqOGhBdHIE9B71s=", + "dev": true, + "requires": { + "postcss": "6.0.16", + "postcss-value-parser": "3.3.0", + "read-cache": "1.0.0", + "resolve": "1.5.0" + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-loader": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.10.tgz", + "integrity": "sha512-xQaDcEgJ/2JqFY18zpFkik8vyYs7oS5ZRbrjvDqkP97k2wYWfPT4+qA0m4o3pTSCsz0u26PNqs8ZO9FRUWAqrA==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "postcss": "6.0.16", + "postcss-load-config": "1.2.0", + "schema-utils": "0.3.0" + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000799", + "electron-to-chromium": "1.3.31" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", + "dev": true, + "requires": { + "postcss": "6.0.16" + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.16" + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.16" + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.16" + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true, + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-url": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.0.tgz", + "integrity": "sha512-VBP6uf6iL3AZra23nkPkOEkS/5azj1xf/toRrjfkolfFEgg9Gyzg9UhJZeIsz12EGKZTNVeGbPa2XtaZm/iZvg==", + "dev": true, + "requires": { + "mime": "1.6.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "postcss": "6.0.16", + "xxhashjs": "0.2.2" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", @@ -4758,12 +10604,6 @@ "utila": "0.4.0" } }, - "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", - "dev": true - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -4776,10 +10616,190 @@ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "protractor": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.2.2.tgz", + "integrity": "sha512-KxYw0ySvmWFQHpbSRvrHA5HLlyeAkCENSUZvJroKV1u0gWXX9kvHjc9wEK5IoW7h9UfPV1F3R2i+Own0go5s0g==", + "dev": true, + "requires": { + "@types/node": "6.0.96", + "@types/q": "0.0.32", + "@types/selenium-webdriver": "2.53.43", + "blocking-proxy": "1.0.1", + "chalk": "1.1.3", + "glob": "7.1.2", + "jasmine": "2.9.0", + "jasminewd2": "2.2.0", + "optimist": "0.6.1", + "q": "1.4.1", + "saucelabs": "1.3.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "0.4.18", + "webdriver-js-extender": "1.0.0", + "webdriver-manager": "12.0.6" + }, + "dependencies": { + "@types/node": { + "version": "6.0.96", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.96.tgz", + "integrity": "sha512-fsOOY6tMQ3jCB2wD51XFDmmpgm4wVKkJECdcVRqapbJEa7awJDcr+SaH8toz+4r4KW8YQ3M7ybXMoSDo1QGewA==", + "dev": true + }, + "adm-zip": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", + "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "webdriver-manager": { + "version": "12.0.6", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.0.6.tgz", + "integrity": "sha1-PfGkgZdwELTL+MnYXHpXeCjA5ws=", + "dev": true, + "requires": { + "adm-zip": "0.4.7", + "chalk": "1.1.3", + "del": "2.2.2", + "glob": "7.1.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "q": "1.4.1", + "request": "2.81.0", + "rimraf": "2.6.2", + "semver": "5.5.0", + "xml2js": "0.4.19" + } + } + } + }, + "proxy-addr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", + "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } + }, + "proxy-agent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-2.0.0.tgz", + "integrity": "sha1-V+tTR6qAXXTsaByyVknbo5yTNJk=", + "dev": true, + "optional": true, + "requires": { + "agent-base": "2.1.1", + "debug": "2.6.9", + "extend": "3.0.1", + "http-proxy-agent": "1.0.0", + "https-proxy-agent": "1.0.0", + "lru-cache": "2.6.5", + "pac-proxy-agent": "1.1.0", + "socks-proxy-agent": "2.1.1" + }, + "dependencies": { + "lru-cache": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz", + "integrity": "sha1-5W1jVBSO3o13B7WNFDIg/QjfD9U=", + "dev": true, + "optional": true + } + } + }, "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, "pseudomap": { @@ -4798,7 +10818,40 @@ "browserify-rsa": "4.0.1", "create-hash": "1.1.3", "parse-asn1": "5.1.0", - "randombytes": "2.0.5" + "randombytes": "2.0.6" + } + }, + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", + "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", + "dev": true, + "requires": { + "duplexify": "3.5.3", + "inherits": "2.0.3", + "pump": "2.0.1" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } } }, "punycode": { @@ -4807,6 +10860,12 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, "qjobs": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", @@ -4814,11 +10873,21 @@ "dev": true }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", "dev": true }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -4831,6 +10900,12 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, + "querystringify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "dev": true + }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", @@ -4841,23 +10916,53 @@ "kind-of": "4.0.0" }, "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } }, "randombytes": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", "dev": true, "requires": { + "randombytes": "2.0.6", "safe-buffer": "5.1.1" } }, @@ -4885,6 +10990,32 @@ "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", "dev": true }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -4894,6 +11025,25 @@ "load-json-file": "1.1.0", "normalize-package-data": "2.4.0", "path-type": "1.1.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "read-pkg-up": { @@ -4904,6 +11054,27 @@ "requires": { "find-up": "1.1.2", "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } } }, "readable-stream": { @@ -4933,28 +11104,94 @@ "set-immediate-shim": "1.0.1" } }, - "recast": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", - "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "redis": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", + "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==", "dev": true, + "optional": true, "requires": { - "ast-types": "0.9.6", - "esprima": "3.1.3", - "private": "0.1.7", - "source-map": "0.5.7" + "double-ended-queue": "2.1.0-0", + "redis-commands": "1.3.1", + "redis-parser": "2.6.0" + } + }, + "redis-commands": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.1.tgz", + "integrity": "sha1-gdgm9F+pyLIBH0zXoP5ZfSQdRCs=", + "dev": true, + "optional": true + }, + "redis-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", + "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=", + "dev": true, + "optional": true + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "dev": true, + "requires": { + "balanced-match": "0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } } }, "reflect-metadata": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.10.tgz", - "integrity": "sha1-tPg3BEFqytiZiMmxVjXUfgO5NEo=", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz", + "integrity": "sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A==", + "dev": true + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", "dev": true }, "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { @@ -4975,6 +11212,32 @@ "extend-shallow": "2.0.1" } }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + } + }, "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -5000,21 +11263,6 @@ "utila": "0.3.3" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "utila": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", @@ -5044,12 +11292,70 @@ "is-finite": "1.0.2" } }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "requestretry": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/requestretry/-/requestretry-1.13.0.tgz", + "integrity": "sha512-Lmh9qMvnQXADGAQxsXHP4rbgO6pffCfuR8XUBdP9aitJcLQJxhp7YZK4xAVYXnPJ5E52mwrfiKQtKonPL8xsmg==", + "dev": true, + "optional": true, + "requires": { + "extend": "3.0.1", + "lodash": "4.17.4", + "request": "2.81.0", + "when": "3.7.8" + }, + "dependencies": { + "when": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", + "dev": true, + "optional": true + } + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "dev": true + }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", @@ -5062,22 +11368,36 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } }, - "restore-cursor": { + "resolve-cwd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "resolve-from": "3.0.0" } }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -5087,87 +11407,292 @@ "align-text": "0.1.4" } }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "rollup": { + "version": "0.53.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.53.4.tgz", + "integrity": "sha512-ErW5cFw5KY/qiyUlPDJ7iBhw51Iro/oyvxETupO85bMg5T7MLlFj3lEDzwjLTOxJAyzWQanUYj/LZHm6aLLm5w==", + "dev": true + }, + "rollup-plugin-commonjs": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.3.0.tgz", + "integrity": "sha512-PYs3OiYgENFYEmI3vOEm5nrp3eY90YZqd5vGmQqeXmhJsAWFIrFdROCvOasqJ1HgeTvqyYo9IGXnFDyoboNcgQ==", + "dev": true, + "requires": { + "acorn": "5.3.0", + "estree-walker": "0.5.1", + "magic-string": "0.22.4", + "resolve": "1.5.0", + "rollup-pluginutils": "2.0.1" + } + }, + "rollup-plugin-node-resolve": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.2.tgz", + "integrity": "sha512-ZwmMip/yqw6cmDQJuCQJ1G7gw2z11iGUtQNFYrFZHmqadRHU+OZGC3nOXwXu+UTvcm5lzDspB1EYWrkTgPWybw==", + "dev": true, + "requires": { + "builtin-modules": "1.1.1", + "is-module": "1.0.0", + "resolve": "1.5.0" + } + }, + "rollup-pluginutils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", + "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", + "dev": true, + "requires": { + "estree-walker": "0.3.1", + "micromatch": "2.3.11" + }, + "dependencies": { + "estree-walker": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", + "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=", + "dev": true + } + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, + "rxjs": { + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.6.tgz", + "integrity": "sha512-v4Q5HDC0FHAQ7zcBX7T2IL6O5ltl1a2GX4ENjPXg6SjDY69Cmx9v4113C99a4wGF16ClPv5Z8mghuYorVkg/kg==", + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=", + "dev": true, + "requires": { + "es6-promise": "3.3.1", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + } + }, + "sass-loader": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", + "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==", + "dev": true, + "requires": { + "async": "2.6.0", + "clone-deep": "0.3.0", + "loader-utils": "1.1.0", + "lodash.tail": "4.1.1", + "pify": "3.0.0" + } + }, + "saucelabs": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.3.0.tgz", + "integrity": "sha1-0kDoAJ33+ocwbsRXimm6O1xCT+4=", + "dev": true, + "requires": { + "https-proxy-agent": "1.0.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", "dev": true, "requires": { - "glob": "7.1.2" + "ajv": "5.5.2" } }, - "ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", "dev": true, "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" + "js-base64": "2.4.3", + "source-map": "0.4.4" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } } }, - "rmdir": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/rmdir/-/rmdir-1.2.0.tgz", - "integrity": "sha1-T+A1fLBhaMJY5z6WgJPcTooPMlM=", + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", "dev": true, "requires": { - "node.flow": "1.2.3" + "jszip": "3.1.5", + "rimraf": "2.6.2", + "tmp": "0.0.30", + "xml2js": "0.4.19" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + } } }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "selfsigned": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.2.tgz", + "integrity": "sha1-tESVgNmZKbZbEKSDiTAaZZIIh1g=", "dev": true, "requires": { - "is-promise": "2.1.0" + "node-forge": "0.7.1" } }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", "dev": true, "requires": { - "rx-lite": "4.0.8" + "semver": "5.5.0" } }, - "rxjs": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.3.tgz", - "integrity": "sha512-fSNi+y+P9ss+EZuV0GcIIqPUK07DEaMRUtLJvdcvMyFjc9dizuDjere+A4V7JrLGnm9iCc+nagV/4QdMTkqC4A==", + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", "dev": true, "requires": { - "symbol-observable": "1.0.4" + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + } } }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "serialize-javascript": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", + "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=", "dev": true }, - "schema-utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", - "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, "requires": { - "ajv": "5.2.3" + "accepts": "1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.17", + "parseurl": "1.3.2" } }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "dev": true, + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } }, "set-blocking": { "version": "2.0.0", @@ -5199,18 +11724,7 @@ "extend-shallow": "2.0.1", "is-extendable": "0.1.1", "is-plain-object": "2.0.4", - "split-string": "3.0.2" - }, - "dependencies": { - "split-string": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.0.2.tgz", - "integrity": "sha512-d6myUSfwmBz1izkY4r7r7I0PL41rh21qUDYK1OgclmGHeoqQoujduGxMbzw6BlF3HKmJR4sMpbWVo7/Xzg4YBQ==", - "dev": true, - "requires": { - "extend-shallow": "2.0.1" - } - } + "split-string": "3.1.0" } }, "setimmediate": { @@ -5220,21 +11734,65 @@ "dev": true }, "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, "sha.js": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", - "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", "dev": true, "requires": { "inherits": "2.0.3", "safe-buffer": "5.1.1" } }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dev": true, + "requires": { + "is-extendable": "0.1.1", + "kind-of": "2.0.1", + "lazy-cache": "0.2.7", + "mixin-object": "2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "dev": true, + "requires": { + "json-stable-stringify": "0.0.1", + "sha.js": "2.4.10" + }, + "dependencies": { + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + } + } + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -5250,12 +11808,65 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "silent-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/silent-error/-/silent-error-1.1.0.tgz", + "integrity": "sha1-IglwbxyFCp8dENDYQJGLRvJuG8k=", + "dev": true, + "requires": { + "debug": "2.6.9" + } + }, + "slack-node": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/slack-node/-/slack-node-0.2.0.tgz", + "integrity": "sha1-3kuN3aqLeT9h29KTgQT9q/N9+jA=", + "dev": true, + "optional": true, + "requires": { + "requestretry": "1.13.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "smart-buffer": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", + "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", + "dev": true + }, + "smtp-connection": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.12.0.tgz", + "integrity": "sha1-1275EnyyPCJZ7bHoNJwujV4tdME=", + "dev": true, + "requires": { + "httpntlm": "1.6.1", + "nodemailer-shared": "1.1.0" + } + }, "snapdragon": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", @@ -5268,203 +11879,258 @@ "extend-shallow": "2.0.1", "map-cache": "0.2.2", "source-map": "0.5.7", - "source-map-resolve": "0.5.0", + "source-map-resolve": "0.5.1", "use": "2.0.2" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.0.2" - } + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "socket.io": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.4.tgz", + "integrity": "sha1-waRZDO/4fs8TxyZS8Eb3FrKeYBQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "engine.io": "3.1.4", + "socket.io-adapter": "1.1.1", + "socket.io-client": "2.0.4", + "socket.io-parser": "3.1.2" + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.4.tgz", + "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.6.9", + "engine.io-client": "3.1.4", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "3.1.2", + "to-array": "0.1.4" + } + }, + "socket.io-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.2.tgz", + "integrity": "sha1-28IoIVH8T6675Aru3Ady66YZ9/I=", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "2.6.9", + "has-binary2": "1.0.2", + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true } } }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", "dev": true, "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "faye-websocket": "0.10.0", + "uuid": "3.2.1" } }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", "dev": true, "requires": { - "kind-of": "3.2.2" + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.2.0" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "websocket-driver": "0.7.0" } } } }, - "socket.io": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", - "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", + "socks": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", + "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", "dev": true, "requires": { - "debug": "2.3.3", - "engine.io": "1.8.3", - "has-binary": "0.1.7", - "object-assign": "4.1.0", - "socket.io-adapter": "0.5.0", - "socket.io-client": "1.7.3", - "socket.io-parser": "2.3.1" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "object-assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", - "dev": true - } + "ip": "1.1.5", + "smart-buffer": "1.1.15" } }, - "socket.io-adapter": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", - "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "socks-proxy-agent": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-2.1.1.tgz", + "integrity": "sha512-sFtmYqdUK5dAMh85H0LEVFUCO7OhJJe1/z2x/Z6mxp3s7/QPf1RkZmpZy+BpuU0bEjcV9npqKjq9Y3kwFUjnxw==", "dev": true, "requires": { - "debug": "2.3.3", - "socket.io-parser": "2.3.1" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } + "agent-base": "2.1.1", + "extend": "3.0.1", + "socks": "1.1.10" } }, - "socket.io-client": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", - "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", + "sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=", "dev": true, "requires": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "2.3.3", - "engine.io-client": "1.8.3", - "has-binary": "0.1.7", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseuri": "0.0.5", - "socket.io-parser": "2.3.1", - "to-array": "0.1.4" + "buffer-crc32": "0.2.13", + "minimist": "1.2.0", + "sander": "0.5.1", + "sourcemap-codec": "1.3.1" }, "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } } }, - "socket.io-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", - "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", "dev": true, "requires": { - "component-emitter": "1.1.2", - "debug": "2.2.0", - "isarray": "0.0.1", - "json3": "3.3.2" - }, - "dependencies": { - "component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", - "dev": true - }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } + "is-plain-obj": "1.1.0" } }, "source-list-map": { @@ -5479,13 +12145,45 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, + "source-map-loader": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.3.tgz", + "integrity": "sha512-MYbFX9DYxmTQFfy2v8FC1XZwpwHKYxg3SK8Wb7VPBKuhDjz8gi9re2819MsG4p49HDyiOSUKlmZ+nQBArW5CGw==", + "dev": true, + "requires": { + "async": "2.6.0", + "loader-utils": "0.2.17", + "source-map": "0.6.1" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "source-map-resolve": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.0.tgz", - "integrity": "sha1-/K0LZLcK+ydpnkJZUMtevNQQvCA=", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { "atob": "2.0.3", + "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", "urix": "0.1.0" @@ -5506,6 +12204,15 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "sourcemap-codec": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.3.1.tgz", + "integrity": "sha1-mtb5vb1pGTEBbjCTnbyGhnMyMUY=", + "dev": true, + "requires": { + "vlq": "0.2.3" + } + }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", @@ -5527,13 +12234,63 @@ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.1", + "select-hose": "2.0.0", + "spdy-transport": "2.0.20" + } + }, + "spdy-transport": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "dev": true, + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "safe-buffer": "5.1.1", + "wbuf": "1.7.2" + } + }, "split-string": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-2.1.1.tgz", - "integrity": "sha1-r0sG2CFWBCZEbDzZMc2mGJQNN9A=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { - "extend-shallow": "2.0.1" + "extend-shallow": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } } }, "sprintf-js": { @@ -5542,6 +12299,39 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "ssri": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.1.0.tgz", + "integrity": "sha512-TevC8fgxQKTfQ1nWtM9GNzr3q5rrHNntG9CDMH1k3QhSZI6Kb+NbjLRs8oPFZa2Hgo7zoekL+UTvoEk7tsbjQg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -5561,6 +12351,46 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -5569,8 +12399,14 @@ "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", - "kind-of": "5.0.2" + "kind-of": "5.1.0" } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -5580,37 +12416,112 @@ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", "dev": true }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } + }, + "stream-http": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", + "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", + "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", "dev": true, "requires": { "inherits": "2.0.3", "readable-stream": "2.3.3" } }, - "stream-http": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "streamroller": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz", + "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==", "dev": true, "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" + "date-format": "1.2.0", + "debug": "3.1.0", + "mkdirp": "0.5.1", + "readable-stream": "2.3.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "string_decoder": { @@ -5622,13 +12533,19 @@ "safe-buffer": "5.1.1" } }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "2.1.1" } }, "strip-bom": { @@ -5640,20 +12557,154 @@ "is-utf8": "0.2.1" } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-loader": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.2.tgz", + "integrity": "sha1-dFMzhM9pjHEEx5URULSXF63C87s=", + "dev": true, + "requires": { + "loader-utils": "1.1.0" + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.0", + "debug": "2.6.9", + "glob": "7.0.6", + "mkdirp": "0.5.1", + "sax": "0.5.8", + "source-map": "0.1.43" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "stylus-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.1.tgz", + "integrity": "sha1-d/SzT9Aw0lsmF7z1UT21sHMMQIk=", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "lodash.clonedeep": "4.5.0", + "when": "3.6.4" + } + }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "dev": true, + "requires": { + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { "has-flag": "2.0.0" } }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + } + }, "symbol-observable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", - "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" + }, + "syntax-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz", + "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } }, "tapable": { "version": "0.2.8", @@ -5661,22 +12712,15 @@ "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", "dev": true }, - "temp": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { - "os-tmpdir": "1.0.2", - "rimraf": "2.2.8" - }, - "dependencies": { - "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", - "dev": true - } + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" } }, "through": { @@ -5685,6 +12729,29 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "thunkify": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", + "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=", + "dev": true, + "optional": true + }, + "thunky": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", + "dev": true + }, "time-stamp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", @@ -5692,14 +12759,26 @@ "dev": true }, "timers-browserify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", - "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", "dev": true, "requires": { "setimmediate": "1.0.5" } }, + "timespan": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", + "integrity": "sha1-SQLOBAvRPYRcj1myfp1ZutbzmSk=", + "dev": true, + "optional": true + }, + "tiny-emitter": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz", + "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -5734,91 +12813,310 @@ "dev": true, "requires": { "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", + "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "regex-not": "1.0.0" }, "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "toposort": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tree-kill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", + "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", + "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", + "dev": true, + "requires": { + "glob": "6.0.4" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } } } }, - "to-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", - "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "ts-node": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-4.1.0.tgz", + "integrity": "sha512-xcZH12oVg9PShKhy3UHyDmuDLV3y7iKwX25aMVPt1SIXSuAfWkFiGPEkg+th8R4YKW/QCxDoW7lJdb15lx6QWg==", "dev": true, "requires": { - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "regex-not": "1.0.0" + "arrify": "1.0.1", + "chalk": "2.3.0", + "diff": "3.4.0", + "make-error": "1.3.2", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "source-map-support": "0.5.3", + "tsconfig": "7.0.0", + "v8flags": "3.0.1", + "yn": "2.0.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", + "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.0.2" + "source-map": "0.6.1" } } } }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", "dev": true, "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "@types/strip-bom": "3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } } }, - "toposort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz", - "integrity": "sha1-8CzYp0vYvi/A6YYRw7rLlaFxhpw=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, "tsickle": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz", - "integrity": "sha1-U7Abl5xcE/2xOvs/uVgXflmRWI0=", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.26.0.tgz", + "integrity": "sha512-eWJ2CUfttGK0LqF9iJ/Avnxbj4M+fCyJ50Zag3wm73Fut1hsasPRHKxKdrMWVj4BMHnQNx7TO+DdNmLmJTSuNw==", "dev": true, "requires": { "minimist": "1.2.0", "mkdirp": "0.5.1", "source-map": "0.5.7", "source-map-support": "0.4.18" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, "tslib": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", - "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=", - "dev": true + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" + }, + "tslint": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", + "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "builtin-modules": "1.1.1", + "chalk": "2.3.0", + "commander": "2.12.2", + "diff": "3.4.0", + "glob": "7.1.2", + "js-yaml": "3.7.0", + "minimatch": "3.0.4", + "resolve": "1.5.0", + "semver": "5.5.0", + "tslib": "1.9.0", + "tsutils": "2.19.1" + }, + "dependencies": { + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + } + } + }, + "tsscmp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", + "integrity": "sha1-fcSjOvcVgatDN9qR2FylQn69mpc=", + "dev": true, + "optional": true + }, + "tsutils": { + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.19.1.tgz", + "integrity": "sha512-1B3z4H4HddgzWptqLzwrJloDEsyBt8DvZhnFO14k7A4RsQL/UhEfQjD4hpcY5NpF3veBkjJhQJ8Bl7Xp96cN+A==", + "dev": true, + "requires": { + "tslib": "1.9.0" + } }, "tty-browserify": { "version": "0.0.0", @@ -5826,6 +13124,31 @@ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, "type-is": { "version": "1.6.15", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", @@ -5836,20 +13159,40 @@ "mime-types": "2.1.17" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, "typescript": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.5.2.tgz", - "integrity": "sha1-A4qV99m7tCCxvzW6MdTFwd0//jQ=", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", + "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", "dev": true }, "uglify-js": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.2.tgz", - "integrity": "sha512-kKJ8zg7Ivw3DG9Ytgp4+iiSHq3HaHjEQMvyT2x2Bs8kSUwVemj6bPGFp6YWL81f5NAIOLVUKPxBSvqLRGXMpdw==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.9.tgz", + "integrity": "sha512-J2t8B5tj9JdPTW4+sNZXmiIWHzTvcoITkaqzTiilu/biZF/9crqf/Fi7k5hqbOmVRh9/hVNxAxBYIMF7N6SqMQ==", "dev": true, "requires": { - "commander": "2.11.0", - "source-map": "0.5.7" + "commander": "2.13.0", + "source-map": "0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "uglify-to-browserify": { @@ -5859,10 +13202,72 @@ "dev": true, "optional": true }, + "uglifyjs-webpack-plugin": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.8.tgz", + "integrity": "sha512-XG8/QmR1pyPeE1kj2aigo5kos8umefB31zW+PMvAAytHSB0T/vQvN6sqt8+Sh+y0b0A7zlmxNi2dzRnj0wcqGA==", + "dev": true, + "requires": { + "cacache": "10.0.2", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.3", + "serialize-javascript": "1.4.0", + "source-map": "0.6.1", + "uglify-es": "3.3.9", + "webpack-sources": "1.1.0", + "worker-farm": "1.5.2" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "schema-utils": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.3.tgz", + "integrity": "sha512-sgv/iF/T4/SewJkaVpldKC4WjSkz0JsOh2eKtxCPpCO1oR05+7MOF+H476HVRbLArkgA7j5TRJJ4p2jdFkUGQQ==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "2.13.0", + "source-map": "0.6.1" + } + } + } + }, "ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "umd": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz", + "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=", + "dev": true + }, + "underscore": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", "dev": true }, "union-value": { @@ -5891,6 +13296,51 @@ } } }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "dev": true, + "requires": { + "macaddress": "0.2.8" + } + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -5934,6 +13384,12 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -5967,6 +13423,35 @@ } } }, + "url-loader": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.6.2.tgz", + "integrity": "sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "mime": "1.6.0", + "schema-utils": "0.3.0" + } + }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "dev": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, + "dependencies": { + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "dev": true + } + } + }, "use": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", @@ -5987,6 +13472,46 @@ "is-descriptor": "0.1.6" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -5995,27 +13520,40 @@ "requires": { "is-accessor-descriptor": "0.1.6", "is-data-descriptor": "0.1.4", - "kind-of": "5.0.2" + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "dev": true, + "requires": { + "set-getter": "0.1.0" } } } }, "useragent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", - "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", "dev": true, "requires": { - "lru-cache": "2.2.4", + "lru-cache": "4.1.1", "tmp": "0.0.33" - }, - "dependencies": { - "lru-cache": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", - "dev": true - } } }, "util": { @@ -6053,6 +13591,28 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "uws": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/uws/-/uws-0.14.5.tgz", + "integrity": "sha1-Z6rzPEaypYel9mZtAPdpEyjxSdw=", + "dev": true, + "optional": true + }, + "v8flags": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.1.tgz", + "integrity": "sha1-3Oj8N5wX2fLJ6e142JzgAFKxt2s=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", @@ -6063,6 +13623,43 @@ "spdx-expression-parse": "1.0.4" } }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -6072,6 +13669,11 @@ "indexof": "0.0.1" } }, + "voc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/voc/-/voc-1.0.0.tgz", + "integrity": "sha512-mQwxWlK+zosxxDTqiFb9ZQBNgd794scgkhVwca7h9sEhvA52f3VzbOK+TOWeS8eSrFXnfuKrxElSPc5oLAetfw==" + }, "void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", @@ -6084,125 +13686,712 @@ "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", "dev": true, "requires": { - "async": "2.5.0", + "async": "2.6.0", "chokidar": "1.7.0", "graceful-fs": "4.1.11" } }, + "wbuf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", + "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "dev": true, + "requires": { + "minimalistic-assert": "1.0.0" + } + }, + "webdriver-js-extender": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz", + "integrity": "sha1-gcUzqeM9W/tZe05j4s2yW1R3dRU=", + "dev": true, + "requires": { + "@types/selenium-webdriver": "2.53.43", + "selenium-webdriver": "2.53.3" + }, + "dependencies": { + "sax": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz", + "integrity": "sha1-VjsZx8HeiS4Jv8Ty/DDjwn8JUrk=", + "dev": true + }, + "selenium-webdriver": { + "version": "2.53.3", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz", + "integrity": "sha1-0p/1qVff8aG0ncRXdW5OS/vc4IU=", + "dev": true, + "requires": { + "adm-zip": "0.4.4", + "rimraf": "2.6.2", + "tmp": "0.0.24", + "ws": "1.1.5", + "xml2js": "0.4.4" + } + }, + "tmp": { + "version": "0.0.24", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz", + "integrity": "sha1-1qXhmNFKmDXMby18PZ4wJCjIzxI=", + "dev": true + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "dev": true, + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + } + }, + "xml2js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz", + "integrity": "sha1-MREBAAMAiuGSQOuhdJe1fHKcVV0=", + "dev": true, + "requires": { + "sax": "0.6.1", + "xmlbuilder": "9.0.4" + } + } + } + }, "webpack": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.7.0.tgz", - "integrity": "sha512-MjAA0ZqO1ba7ZQJRnoCdbM56mmFpipOPUv/vQpwwfSI42p5PVDdoiuK2AL2FwFUVgT859Jr43bFZXRg/LNsqvg==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", + "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", "dev": true, "requires": { - "acorn": "5.1.2", + "acorn": "5.3.0", "acorn-dynamic-import": "2.0.2", - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "async": "2.5.0", - "enhanced-resolve": "3.3.0", - "interpret": "1.0.4", + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", "json-loader": "0.5.7", "json5": "0.5.1", "loader-runner": "2.3.0", - "loader-utils": "0.2.17", + "loader-utils": "1.1.0", "memory-fs": "0.4.1", "mkdirp": "0.5.1", - "node-libs-browser": "2.0.0", + "node-libs-browser": "2.1.0", "source-map": "0.5.7", - "supports-color": "3.2.3", + "supports-color": "4.5.0", "tapable": "0.2.8", - "uglify-js": "2.8.29", + "uglifyjs-webpack-plugin": "0.4.6", "watchpack": "1.4.0", - "webpack-sources": "1.0.1", + "webpack-sources": "1.1.0", + "yargs": "8.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + } + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "0.1.8", + "source-map": "0.4.4" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + } + }, + "webpack-dev-server": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.1.tgz", + "integrity": "sha512-ombhu5KsO/85sVshIDTyQ5HF3xjZR3N0sf5Ao6h3vFwpNyzInEzA1GV3QPVjTMLTNckp8PjfG1PFGznzBwS5lg==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "2.0.0", + "compression": "1.7.1", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.2", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "1.0.0", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.1", + "opn": "5.1.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.2", + "serve-index": "1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "5.1.0", + "webpack-dev-middleware": "1.12.2", "yargs": "6.6.0" }, "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.5", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.0.tgz", + "integrity": "sha512-P4O8UQRdGiMLWSizsApmXVQDBS6KCt7dSexgLKBmH5Hr1CZq7vsnscFh8oR1sP1ab1Zj0uCHCEzZeV6SfUf3rA==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.1", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.1" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "chokidar": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.0.tgz", + "integrity": "sha512-OgXCNv2U6TnG04D3tth0gsvdbV4zdbxFG3sYUqcoQMoEFVd1j1pZR6TZ8iknC45o9IJ6PeQI/J6wT/+cHcniAw==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.0", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "has-flag": "1.0.0" + "is-extglob": "2.1.1" } }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "kind-of": "3.2.2" }, "dependencies": { - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" + "is-buffer": "1.1.6" } } } }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.5.tgz", + "integrity": "sha512-ykttrLPQrz1PUJcXjwsTUjGoPJ64StIGNE2lGVD1c9CuguJ+L7/navsE8IcDNndOoCMvYV0qc/exfVbMHkUhvA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.0", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.7", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + } + }, + "supports-color": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, "yargs": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", @@ -6222,52 +14411,83 @@ "which-module": "1.0.0", "y18n": "3.2.1", "yargs-parser": "4.2.1" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - } - } + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "3.0.0" } } } }, - "webpack-dev-middleware": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz", - "integrity": "sha1-007++y7dp+HTtdvgcolRMhllFwk=", + "webpack-merge": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.1.tgz", + "integrity": "sha512-geQsZ86YkXOVOjvPC5yv3JSNnL6/X3Kzh935AQ/gJNEYXEfJDQFu/sdFuktS9OW2JcH/SJec8TGfRdrpHshH7A==", "dev": true, "requires": { - "memory-fs": "0.4.1", - "mime": "1.4.1", - "path-is-absolute": "1.0.1", - "range-parser": "1.2.0", - "time-stamp": "2.0.0" + "lodash": "4.17.4" } }, "webpack-sources": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", - "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", "dev": true, "requires": { "source-list-map": "2.0.0", - "source-map": "0.5.7" + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.0.3.tgz", + "integrity": "sha1-wGBtQAkLBwzeQovsjfNgMhbkcus=", + "dev": true, + "requires": { + "webpack-core": "0.6.9" } }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true + }, "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", @@ -6283,6 +14503,15 @@ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", "dev": true }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", @@ -6290,11 +14519,21 @@ "dev": true }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true }, + "worker-farm": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", + "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", + "dev": true, + "requires": { + "errno": "0.1.6", + "xtend": "4.0.1" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -6303,43 +14542,6 @@ "requires": { "string-width": "1.0.2", "strip-ansi": "3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - } } }, "wrappy": { @@ -6349,39 +14551,66 @@ "dev": true }, "ws": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", - "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "dev": true, "requires": { - "options": "0.0.6", - "ultron": "1.0.2" + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1", + "ultron": "1.1.1" } }, - "wtf-8": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", - "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", - "dev": true - }, "xml-char-classes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", "dev": true }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": "1.2.4", + "xmlbuilder": "9.0.4" + } + }, + "xmlbuilder": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.4.tgz", + "integrity": "sha1-UZy0ymhtAFqEINNJbz8MruzKWA8=", + "dev": true + }, "xmlhttprequest-ssl": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", - "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", "dev": true }, + "xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", + "dev": true, + "optional": true + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, + "xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "requires": { + "cuint": "0.2.2" + } + }, "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", @@ -6395,22 +14624,38 @@ "dev": true }, "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", "dev": true, - "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", + "camelcase": "3.0.0", + "cliui": "3.2.0", "decamelize": "1.2.0", - "window-size": "0.1.0" + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } } }, "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", "dev": true, "requires": { "camelcase": "3.0.0" @@ -6430,11 +14675,16 @@ "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", "dev": true }, - "zone.js": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.12.tgz", - "integrity": "sha1-hv9QU8mK7CkaC/S7rFAdaUoFz7s=", + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", "dev": true + }, + "zone.js": { + "version": "0.8.20", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.20.tgz", + "integrity": "sha512-FXlA37ErSXCMy5RNBcGFgCI/Zivqzr0D19GuvDxhcYIJc7xkFp6c29DKyODJu0Zo+EMyur/WPPgcBh1EHjB9jA==" } } } diff --git a/package.json b/package.json index d12fd05..2dee439 100644 --- a/package.json +++ b/package.json @@ -1,86 +1,93 @@ { "name": "angular-handsontable", - "version": "1.0.0-beta3", - "description": "Official Angular 2 directive for Handsontable", + "version": "1.0.0-beta4", + "description": "Official Angular.io directive for Handsontable", "repository": { "type": "git", - "url": "git+https://github.com/handsontable/angular-handsontable.git" + "url": "https://github.com/handsontable/angular-handsontable.git" + }, + "author": { + "name": "Handsoncode", + "email": "hello@handsontable.com" }, "keywords": [ "angular", "angular2", "angular4", + "angular5", + "ngx", "handsontable", + "data", + "grid", "table", + "editor", + "grid-editor", + "data-grid", + "data-table", "spreadsheet", - "datatable", - "data" + "excel", + "tabular-data", + "edit-cell", + "editable-table", + "data-spreadsheet" ], - "main": "index.ts", - "js:next": "dist/index.js", - "browser": "bundles/index.umd.js", - "module": "dist/index.js", - "typings": "./dist/index.d.ts", - "author": "Handsoncode ", "license": "MIT", "bugs": { "url": "https://github.com/handsontable/angular-handsontable/issues" }, "scripts": { - "build:dist": "npm run clean:dist && ngc -p ./tsconfig.json", - "build:bundles": "npm run clean:bundles && cross-env NODE_ENV=production webpack", - "build": "npm run build:bundles && npm run build:dist", - "clean:dist": "rimraf dist", - "clean:bundles": "rimraf bundles", - "clean": "npm run clean:dist && npm run clean:bundles", - "prepublish": "npm run clean && npm run build", - "test": "npm run build && karma start", - "test:watch": "tsc && karma start --no-single-run --auto-watch", - "watch": "cross-env NODE_ENV=watch webpack --watch", - "release": "generate-release" - }, - "peerDependencies": { - "@angular/core": "^2.4.7 || ^4.0.0" + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "build:app": "rimraf src/lib && rimraf dist && npm run build:lib && cpr dist src/lib && ng build --app packages && rimraf src/lib", + "build:lib": "rimraf dist && rimraf lib/ce/src/base && rimraf lib/pro/src/base && npm run build:lib:ce && npm run build:lib:pro && npm run copy:utils", + "build:lib:ce": "ng-packagr -p lib/ce/package.json", + "build:lib:pro": "ng-packagr -p lib/pro/package.json", + "copy:utils": "npm run copy:utils:ce && npm run copy:utils:pro", + "copy:utils:ce": "cpr LICENSE dist/ce/LICENSE && cpr CONTRIBUTING.md dist/ce/CONTRIBUTING.md && cpr README.md dist/ce/README.md", + "copy:utils:pro": "cpr LICENSE dist/pro/LICENSE && cpr CONTRIBUTING.md dist/pro/CONTRIBUTING.md && cpr README.md dist/pro/README.md", + "test": "npm run lint && npm run build:lib && ng test", + "lint": "ng lint", + "e2e": "ng e2e" }, "dependencies": { - "handsontable": "0.34.4" + "@angular/common": "~5.2.0", + "@angular/compiler": "~5.2.0", + "@angular/core": "~5.2.0", + "@angular/forms": "~5.2.0", + "@angular/http": "~5.2.0", + "@angular/platform-browser": "~5.2.0", + "@angular/platform-browser-dynamic": "~5.2.0", + "@angular/router": "~5.2.0", + "core-js": "^2.4.1", + "handsontable": "^0.35.1", + "handsontable-pro": "^1.15.1", + "rxjs": "^5.4.2", + "zone.js": "^0.8.19" }, "devDependencies": { - "@angular/common": "~4.2.0", - "@angular/compiler": "~4.2.0", - "@angular/compiler-cli": "~4.2.0", - "@angular/core": "~4.2.0", - "@angular/forms": "~4.2.0", - "@angular/http": "~4.2.0", - "@angular/platform-browser": "~4.2.0", - "@angular/platform-browser-dynamic": "~4.2.0", - "@angular/router": "~4.2.0", - "@types/jasmine": "2.5.36", - "@types/node": "^6.0.45", - "angular2-template-loader": "^0.6.0", - "awesome-typescript-loader": "^3.2.2", - "core-js": "^2.4.1", - "cross-env": "^5.0.1", - "extract-text-webpack-plugin": "3.0.0", - "file-loader": "^0.9.0", - "generate-release": "^0.13.1", - "html-loader": "^0.4.3", - "html-webpack-plugin": "^2.16.1", - "jasmine-core": "^2.4.1", - "karma": "^1.2.0", - "karma-chrome-launcher": "^2.0.0", + "@angular-devkit/schematics": "^0.0.52", + "@angular/cli": "^1.6.5", + "@angular/compiler-cli": "~5.2.0", + "@angular/language-service": "~5.2.0", + "@types/jasmine": "~2.8.0", + "@types/node": "~9.3.0", + "codelyzer": "~4.1.0", + "cpr": "^3.0.0", + "jasmine-core": "~2.9.0", + "jasmine-spec-reporter": "~4.2.0", + "karma": "~2.0.0", + "karma-chrome-launcher": "~2.2.0", + "karma-cli": "~1.0.1", "karma-coverage-istanbul-reporter": "^1.3.0", - "karma-firefox-launcher": "^1.0.1", - "karma-jasmine": "^1.0.2", + "karma-jasmine": "~1.1.0", "karma-jasmine-html-reporter": "^0.2.2", - "karma-sourcemap-loader": "^0.3.7", - "karma-webpack": "^2.0.1", - "null-loader": "^0.1.1", - "raw-loader": "^0.5.1", - "rimraf": "^2.5.2", - "rxjs": "^5.4.2", - "typescript": "^2.4.2", - "webpack": "^2.6.1", - "zone.js": "0.8.12" + "ng-packagr": "2.0.0-rc.11", + "protractor": "~5.2.0", + "rimraf": "^2.6.1", + "ts-node": "~4.1.0", + "tsickle": "^0.26.0", + "tslint": "~5.9.0", + "typescript": "~2.6.1" } } diff --git a/protractor.conf.js b/protractor.conf.js new file mode 100644 index 0000000..7ee3b5e --- /dev/null +++ b/protractor.conf.js @@ -0,0 +1,28 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './e2e/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: 'e2e/tsconfig.e2e.json' + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts new file mode 100644 index 0000000..0da1a27 --- /dev/null +++ b/src/app/app.component.spec.ts @@ -0,0 +1,22 @@ +import { TestBed, async } from '@angular/core/testing'; +import { HotTableModule } from '../../dist/pro'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + HotTableModule.forRoot() + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + + it('should create the app', async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); +}); diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 0000000..4d40595 --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-root', + template: `` +}) +export class AppComponent { + +} diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100644 index 0000000..c85bada --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,18 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; + +import { AppComponent } from './app.component'; +import { HotTableModule } from 'angular-handsontable/pro'; + +@NgModule({ + declarations: [ + AppComponent + ], + imports: [ + BrowserModule, + HotTableModule.forRoot(), + ], + providers: [], + bootstrap: [AppComponent] +}) +export class AppModule { } diff --git a/tests/03.hot-column.component.spec.ts b/src/app/hot-column.component.spec.ts similarity index 72% rename from tests/03.hot-column.component.spec.ts rename to src/app/hot-column.component.spec.ts index b32f99b..3716c84 100644 --- a/tests/03.hot-column.component.spec.ts +++ b/src/app/hot-column.component.spec.ts @@ -1,25 +1,27 @@ -import { DebugElement } from '@angular/core'; -import { async, TestBed, ComponentFixture } from '@angular/core/testing'; +import { TestBed, async, ComponentFixture } from '@angular/core/testing'; +import { element } from 'protractor'; +import * as Handsontable from 'handsontable-pro'; +import { HotTableModule } from '../../dist/pro'; import { TestComponent } from './test.component'; -import { TestModule } from './test.module'; -import { HotRegisterer } from '../src/hot-registerer.service'; -describe(`hot-column`, () => { +describe('HotColumnComponent', () => { let fixture: ComponentFixture; beforeEach(() => { TestBed.configureTestingModule({ declarations: [ TestComponent ], - imports: [ TestModule ] + imports: [ HotTableModule.forRoot() ], }); }); afterEach(() => { - fixture.destroy(); + if (fixture) { + fixture.destroy(); + } }); - it(`should be possible to render static hot-column element inside hot-table`, async(() => { + it(`should be possible to render static hot-column element inside hot-table`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -36,11 +38,11 @@ describe(`hot-column`, () => { const app = fixture.componentInstance; fixture.detectChanges(); - expect(app.hotRegisterer.getInstance('hot').countCols()).toBe(3); + expect(app.getHotInstance(app.id).countCols()).toBe(3); }); - })); + }); - it(`should be possible to change dynamically the number of columns`, async(() => { + it(`should be possible to change dynamically the number of columns`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -56,15 +58,15 @@ describe(`hot-column`, () => { app.prop['columns'] = [ {}, {}, {} ]; fixture.detectChanges(); - expect(app.hot('hot').countCols()).toBe(3); + expect(app.getHotInstance(app.id).countCols()).toBe(3); app.prop['columns'].push({}); fixture.detectChanges(); - expect(app.hot('hot').countCols()).toBe(4); + expect(app.getHotInstance(app.id).countCols()).toBe(4); }); - })); + }); - it(`should set allowHtml defined as bindings`, async(() => { + it(`should set allowHtml defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -88,12 +90,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['allowHtml']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['allowHtml']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['allowHtml']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['allowHtml']).toBe(true); }); - })); + }); - it(`should set allowInsertColumn defined as bindings`, async(() => { + it(`should set allowInsertColumn defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -117,12 +119,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['allowInsertColumn']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['allowInsertColumn']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['allowInsertColumn']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['allowInsertColumn']).toBe(true); }); - })); + }); - it(`should set allowInsertRow defined as bindings`, async(() => { + it(`should set allowInsertRow defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -146,12 +148,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['allowInsertRow']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['allowInsertRow']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['allowInsertRow']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['allowInsertRow']).toBe(true); }); - })); + }); - it(`should set allowInvalid defined as bindings`, async(() => { + it(`should set allowInvalid defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -176,12 +178,12 @@ describe(`hot-column`, () => { ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['allowInvalid']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['allowInvalid']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['allowInvalid']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['allowInvalid']).toBe(true); }); - })); + }); - it(`should set allowRemoveColumn defined as bindings`, async(() => { + it(`should set allowRemoveColumn defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -205,12 +207,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['allowRemoveColumn']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['allowRemoveColumn']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['allowRemoveColumn']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['allowRemoveColumn']).toBe(true); }); - })); + }); - it(`should set allowRemoveRow defined as bindings`, async(() => { + it(`should set allowRemoveRow defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -234,12 +236,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['allowRemoveRow']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['allowRemoveRow']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['allowRemoveRow']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['allowRemoveRow']).toBe(true); }); - })); + }); - it(`should set autoColumnSize defined as bindings`, async(() => { + it(`should set autoColumnSize defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -263,12 +265,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['autoColumnSize']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['autoColumnSize']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['autoColumnSize']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['autoColumnSize']).toBe(true); }); - })); + }); - it(`should set autoComplete defined as bindings`, async(() => { + it(`should set autoComplete defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -292,12 +294,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['autoComplete'][0]).toBe(1); - expect(app.hot('hot').getCellMeta(0, 1)['autoComplete'][0]).toBe('a'); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['autoComplete'][0]).toBe(1); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['autoComplete'][0]).toBe('a'); }); - })); + }); - it(`should set autoRowSize defined as bindings`, async(() => { + it(`should set autoRowSize defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -321,12 +323,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['autoRowSize']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['autoRowSize']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['autoRowSize']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['autoRowSize']).toBe(true); }); - })); + }); - it(`should set autoWrapCol defined as bindings`, async(() => { + it(`should set autoWrapCol defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -350,12 +352,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['autoWrapCol']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['autoWrapCol']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['autoWrapCol']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['autoWrapCol']).toBe(true); }); - })); + }); - it(`should set autoWrapRow defined as bindings`, async(() => { + it(`should set autoWrapRow defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -379,12 +381,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['autoWrapRow']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['autoWrapRow']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['autoWrapRow']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['autoWrapRow']).toBe(true); }); - })); + }); - it(`should set bindRowsWithHeaders defined as bindings`, async(() => { + it(`should set bindRowsWithHeaders defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -408,12 +410,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['bindRowsWithHeaders']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['bindRowsWithHeaders']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['bindRowsWithHeaders']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['bindRowsWithHeaders']).toBe(true); }); - })); + }); - it(`should set cell defined as bindings`, async(() => { + it(`should set cell defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -437,12 +439,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['cell'][0].readOnly).toBe(true); - expect(app.hot('hot').getCellMeta(0, 1)['cell'][0].readOnly).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['cell'][0].readOnly).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['cell'][0].readOnly).toBe(false); }); - })); + }); - it(`should set cells defined as bindings`, async(() => { + it(`should set cells defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -466,12 +468,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['cells']().data).toBe(1); - expect(app.hot('hot').getCellMeta(0, 1)['cells']().data).toBe(0); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['cells']().data).toBe(1); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['cells']().data).toBe(0); }); - })); + }); - it(`should set checkedTemplate defined as bindings`, async(() => { + it(`should set checkedTemplate defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -495,13 +497,13 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['checkedTemplate']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['checkedTemplate']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['checkedTemplate']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['checkedTemplate']).toBe(true); }); - })); + }); - it(`should set className defined as bindings`, async(() => { + it(`should set className defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -525,12 +527,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['className']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['className']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['className']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['className']).toBe(true); }); - })); + }); - it(`should set colHeaders defined as bindings`, async(() => { + it(`should set colHeaders defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -554,12 +556,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['colHeaders']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['colHeaders']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['colHeaders']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['colHeaders']).toBe(true); }); - })); + }); - it(`should set collapsibleColumns defined as bindings`, async(() => { + it(`should set collapsibleColumns defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -583,12 +585,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['collapsibleColumns']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['collapsibleColumns']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['collapsibleColumns']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['collapsibleColumns']).toBe(true); }); - })); + }); - it(`should set columnHeaderHeight defined as bindings`, async(() => { + it(`should set columnHeaderHeight defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -612,12 +614,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['columnHeaderHeight']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['columnHeaderHeight']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['columnHeaderHeight']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['columnHeaderHeight']).toBe(true); }); - })); + }); - it(`should set columns defined as bindings`, async(() => { + it(`should set columns defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -641,12 +643,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['columns'][1].data).toBe(void 0); - expect(app.hot('hot').getCellMeta(0, 1)['columns'][1].data).toBe(1); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['columns'][1].data).toBe(void 0); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['columns'][1].data).toBe(1); }); - })); + }); - it(`should set columnSorting defined as bindings`, async(() => { + it(`should set columnSorting defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -670,12 +672,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['columnSorting']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['columnSorting']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['columnSorting']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['columnSorting']).toBe(true); }); - })); + }); - it(`should set columnSummary defined as bindings`, async(() => { + it(`should set columnSummary defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -699,12 +701,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['columnSummary']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['columnSummary']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['columnSummary']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['columnSummary']).toBe(true); }); - })); + }); - it(`should set colWidths defined as bindings`, async(() => { + it(`should set colWidths defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -728,12 +730,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['colWidths']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['colWidths']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['colWidths']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['colWidths']).toBe(true); }); - })); + }); - it(`should set commentedCellClassName defined as bindings`, async(() => { + it(`should set commentedCellClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -757,12 +759,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['commentedCellClassName']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['commentedCellClassName']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['commentedCellClassName']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['commentedCellClassName']).toBe(true); }); - })); + }); - it(`should set comments defined as bindings`, async(() => { + it(`should set comments defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -786,12 +788,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['comments']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['comments']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['comments']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['comments']).toBe(true); }); - })); + }); - it(`should set contextMenu defined as bindings`, async(() => { + it(`should set contextMenu defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -815,12 +817,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['contextMenu']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['contextMenu']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['contextMenu']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['contextMenu']).toBe(true); }); - })); + }); - it(`should set copyable defined as bindings`, async(() => { + it(`should set copyable defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -844,41 +846,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['copyable']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['copyable']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['copyable']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['copyable']).toBe(true); }); - })); - - it(`should set copyColsLimit defined as bindings`, async(() => { - TestBed.overrideComponent(TestComponent, { - set: { - template: ` - - - - ` - } - }); - TestBed.compileComponents().then(() => { - fixture = TestBed.createComponent(TestComponent); - const app = fixture.componentInstance; - app.prop['settings'] = { - copyColsLimit: false - }; - app.prop['columns'] = [ - {}, - { - copyColsLimit: true - } - ]; - fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['copyColsLimit']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['copyColsLimit']).toBe(true); - }); - })); + }); - it(`should set copyPaste defined as bindings`, async(() => { + it(`should set copyPaste defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -902,41 +875,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['copyPaste']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['copyPaste']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['copyPaste']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['copyPaste']).toBe(true); }); - })); - - it(`should set copyRowsLimit defined as bindings`, async(() => { - TestBed.overrideComponent(TestComponent, { - set: { - template: ` - - - - ` - } - }); - TestBed.compileComponents().then(() => { - fixture = TestBed.createComponent(TestComponent); - const app = fixture.componentInstance; - app.prop['settings'] = { - copyRowsLimit: false - }; - app.prop['columns'] = [ - {}, - { - copyRowsLimit: true - } - ]; - fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['copyRowsLimit']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['copyRowsLimit']).toBe(true); - }); - })); + }); - it(`should set correctFormat defined as bindings`, async(() => { + it(`should set correctFormat defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -960,12 +904,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['correctFormat']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['correctFormat']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['correctFormat']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['correctFormat']).toBe(true); }); - })); + }); - it(`should set currentColClassName defined as bindings`, async(() => { + it(`should set currentColClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -989,12 +933,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['currentColClassName']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['currentColClassName']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['currentColClassName']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['currentColClassName']).toBe(true); }); - })); + }); - it(`should set currentHeaderClassName defined as bindings`, async(() => { + it(`should set currentHeaderClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1018,12 +962,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['currentHeaderClassName']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['currentHeaderClassName']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['currentHeaderClassName']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['currentHeaderClassName']).toBe(true); }); - })); + }); - it(`should set currentRowClassName defined as bindings`, async(() => { + it(`should set currentRowClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1047,12 +991,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['currentRowClassName']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['currentRowClassName']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['currentRowClassName']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['currentRowClassName']).toBe(true); }); - })); + }); - it(`should set customBorders defined as bindings`, async(() => { + it(`should set customBorders defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1076,12 +1020,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['customBorders']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['customBorders']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['customBorders']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['customBorders']).toBe(true); }); - })); + }); - it(`should set data defined as bindings`, async(() => { + it(`should set data defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1105,12 +1049,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['data']).toBe(void 0); - expect(app.hot('hot').getCellMeta(0, 1)['data']).toBe(0); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['data']).toBe(void 0); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['data']).toBe(0); }); - })); + }); - it(`should set dataSchema defined as bindings`, async(() => { + it(`should set dataSchema defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1134,12 +1078,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['dataSchema']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['dataSchema']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['dataSchema']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['dataSchema']).toBe(true); }); - })); + }); - it(`should set dateFormat defined as bindings`, async(() => { + it(`should set dateFormat defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1163,12 +1107,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['dateFormat']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['dateFormat']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['dateFormat']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['dateFormat']).toBe(true); }); - })); + }); - it(`should set debug defined as bindings`, async(() => { + it(`should set debug defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1192,12 +1136,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['debug']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['debug']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['debug']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['debug']).toBe(true); }); - })); + }); - it(`should set defaultDate defined as bindings`, async(() => { + it(`should set defaultDate defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1221,12 +1165,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['defaultDate']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['defaultDate']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['defaultDate']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['defaultDate']).toBe(true); }); - })); + }); - it(`should set disableVisualSelection defined as bindings`, async(() => { + it(`should set disableVisualSelection defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1250,12 +1194,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['disableVisualSelection']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['disableVisualSelection']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['disableVisualSelection']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['disableVisualSelection']).toBe(true); }); - })); + }); - it(`should set dropdownMenu defined as bindings`, async(() => { + it(`should set dropdownMenu defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1279,12 +1223,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['dropdownMenu']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['dropdownMenu']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['dropdownMenu']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['dropdownMenu']).toBe(true); }); - })); + }); - it(`should set editor defined as bindings`, async(() => { + it(`should set editor defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1308,12 +1252,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['editor']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['editor']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['editor']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['editor']).toBe(true); }); - })); + }); - it(`should set enterBeginsEditing defined as bindings`, async(() => { + it(`should set enterBeginsEditing defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1337,12 +1281,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['enterBeginsEditing']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['enterBeginsEditing']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['enterBeginsEditing']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['enterBeginsEditing']).toBe(true); }); - })); + }); - it(`should set enterMoves defined as bindings`, async(() => { + it(`should set enterMoves defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1366,12 +1310,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['enterMoves']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['enterMoves']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['enterMoves']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['enterMoves']).toBe(true); }); - })); + }); - it(`should set fillHandle defined as bindings`, async(() => { + it(`should set fillHandle defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1395,12 +1339,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['fillHandle']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['fillHandle']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['fillHandle']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['fillHandle']).toBe(true); }); - })); + }); - it(`should set filter defined as bindings`, async(() => { + it(`should set filter defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1424,12 +1368,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['filter']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['filter']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['filter']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['filter']).toBe(true); }); - })); + }); - it(`should set filteringCaseSensitive defined as bindings`, async(() => { + it(`should set filteringCaseSensitive defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1453,12 +1397,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['filteringCaseSensitive']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['filteringCaseSensitive']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['filteringCaseSensitive']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['filteringCaseSensitive']).toBe(true); }); - })); + }); - it(`should set filters defined as bindings`, async(() => { + it(`should set filters defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1482,12 +1426,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['filters']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['filters']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['filters']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['filters']).toBe(true); }); - })); + }); - it(`should set fixedColumnsLeft defined as bindings`, async(() => { + it(`should set fixedColumnsLeft defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1511,12 +1455,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['fixedColumnsLeft']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['fixedColumnsLeft']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['fixedColumnsLeft']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['fixedColumnsLeft']).toBe(true); }); - })); + }); - it(`should set fixedRowsBottom defined as bindings`, async(() => { + it(`should set fixedRowsBottom defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1540,12 +1484,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['fixedRowsBottom']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['fixedRowsBottom']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['fixedRowsBottom']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['fixedRowsBottom']).toBe(true); }); - })); + }); - it(`should set fixedRowsTop defined as bindings`, async(() => { + it(`should set fixedRowsTop defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1569,41 +1513,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['fixedRowsTop']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['fixedRowsTop']).toBe(true); - }); - })); - - it(`should set format defined as bindings`, async(() => { - TestBed.overrideComponent(TestComponent, { - set: { - template: ` - - - - ` - } - }); - TestBed.compileComponents().then(() => { - fixture = TestBed.createComponent(TestComponent); - const app = fixture.componentInstance; - app.prop['settings'] = { - format: false - }; - app.prop['columns'] = [ - {}, - { - format: true - } - ]; - fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['format']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['format']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['fixedRowsTop']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['fixedRowsTop']).toBe(true); }); - })); + }); - it(`should set formulas defined as bindings`, async(() => { + it(`should set formulas defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1627,12 +1542,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['formulas']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['formulas']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['formulas']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['formulas']).toBe(true); }); - })); + }); - it(`should set fragmentSelection defined as bindings`, async(() => { + it(`should set fragmentSelection defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1656,12 +1571,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['fragmentSelection']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['fragmentSelection']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['fragmentSelection']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['fragmentSelection']).toBe(true); }); - })); + }); - it(`should set ganttChart defined as bindings`, async(() => { + it(`should set ganttChart defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1685,12 +1600,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['ganttChart']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['ganttChart']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['ganttChart']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['ganttChart']).toBe(true); }); - })); + }); - it(`should set headerTooltips defined as bindings`, async(() => { + it(`should set headerTooltips defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1714,12 +1629,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['headerTooltips']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['headerTooltips']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['headerTooltips']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['headerTooltips']).toBe(true); }); - })); + }); - it(`should set height defined as bindings`, async(() => { + it(`should set height defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1743,12 +1658,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['height']).toBe(10); - expect(app.hot('hot').getCellMeta(0, 1)['height']).toBe(100); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['height']).toBe(10); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['height']).toBe(100); }); - })); + }); - it(`should set hiddenColumns defined as bindings`, async(() => { + it(`should set hiddenColumns defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1772,12 +1687,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['hiddenColumns']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['hiddenColumns']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['hiddenColumns']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['hiddenColumns']).toBe(true); }); - })); + }); - it(`should set hiddenRows defined as bindings`, async(() => { + it(`should set hiddenRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1801,12 +1716,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['hiddenRows']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['hiddenRows']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['hiddenRows']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['hiddenRows']).toBe(true); }); - })); + }); - it(`should set invalidCellClassName defined as bindings`, async(() => { + it(`should set invalidCellClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1830,12 +1745,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['invalidCellClassName']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['invalidCellClassName']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['invalidCellClassName']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['invalidCellClassName']).toBe(true); }); - })); + }); - it(`should set label defined as bindings`, async(() => { + it(`should set label defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1859,12 +1774,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['label']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['label']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['label']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['label']).toBe(true); }); - })); + }); - it(`should set language defined as bindings`, async(() => { + xit(`should set language defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1888,12 +1803,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['language']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['language']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['language']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['language']).toBe(true); }); - })); + }); - it(`should set manualColumnFreeze defined as bindings`, async(() => { + it(`should set manualColumnFreeze defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1917,12 +1832,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['manualColumnFreeze']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['manualColumnFreeze']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['manualColumnFreeze']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['manualColumnFreeze']).toBe(true); }); - })); + }); - it(`should set manualColumnMove defined as bindings`, async(() => { + it(`should set manualColumnMove defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1946,12 +1861,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['manualColumnMove']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['manualColumnMove']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['manualColumnMove']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['manualColumnMove']).toBe(true); }); - })); + }); - it(`should set manualColumnResize defined as bindings`, async(() => { + it(`should set manualColumnResize defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -1975,12 +1890,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['manualColumnResize']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['manualColumnResize']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['manualColumnResize']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['manualColumnResize']).toBe(true); }); - })); + }); - it(`should set manualRowMove defined as bindings`, async(() => { + it(`should set manualRowMove defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2004,12 +1919,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['manualRowMove']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['manualRowMove']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['manualRowMove']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['manualRowMove']).toBe(true); }); - })); + }); - it(`should set manualRowResize defined as bindings`, async(() => { + it(`should set manualRowResize defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2033,12 +1948,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['manualRowResize']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['manualRowResize']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['manualRowResize']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['manualRowResize']).toBe(true); }); - })); + }); - it(`should set maxCols defined as bindings`, async(() => { + it(`should set maxCols defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2062,12 +1977,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['maxCols']).toBe(100); - expect(app.hot('hot').getCellMeta(0, 1)['maxCols']).toBe(10); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['maxCols']).toBe(100); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['maxCols']).toBe(10); }); - })); + }); - it(`should set maxRows defined as bindings`, async(() => { + it(`should set maxRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2091,12 +2006,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['maxRows']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['maxRows']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['maxRows']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['maxRows']).toBe(true); }); - })); + }); - it(`should set mergeCells defined as bindings`, async(() => { + it(`should set mergeCells defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2120,12 +2035,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['mergeCells']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['mergeCells']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['mergeCells']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['mergeCells']).toBe(true); }); - })); + }); - it(`should set minCols defined as bindings`, async(() => { + it(`should set minCols defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2149,12 +2064,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['minCols']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['minCols']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['minCols']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['minCols']).toBe(true); }); - })); + }); - it(`should set minRows defined as bindings`, async(() => { + it(`should set minRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2178,12 +2093,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['minRows']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['minRows']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['minRows']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['minRows']).toBe(true); }); - })); + }); - it(`should set minSpareCols defined as bindings`, async(() => { + it(`should set minSpareCols defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2207,12 +2122,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['minSpareCols']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['minSpareCols']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['minSpareCols']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['minSpareCols']).toBe(true); }); - })); + }); - it(`should set minSpareRows defined as bindings`, async(() => { + it(`should set minSpareRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2236,12 +2151,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['minSpareRows']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['minSpareRows']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['minSpareRows']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['minSpareRows']).toBe(true); }); - })); + }); - it(`should set multiSelect defined as bindings`, async(() => { + it(`should set multiSelect defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2265,41 +2180,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['multiSelect']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['multiSelect']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['multiSelect']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['multiSelect']).toBe(true); }); - })); - - it(`should set nestedHeaders defined as bindings`, async(() => { - TestBed.overrideComponent(TestComponent, { - set: { - template: ` - - - - ` - } - }); - TestBed.compileComponents().then(() => { - fixture = TestBed.createComponent(TestComponent); - const app = fixture.componentInstance; - app.prop['settings'] = { - nestedHeaders: false - }; - app.prop['columns'] = [ - {}, - { - nestedHeaders: true - } - ]; - fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['nestedHeaders']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['nestedHeaders']).toBe(true); - }); - })); + }); - it(`should set noWordWrapClassName defined as bindings`, async(() => { + it(`should set noWordWrapClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2323,12 +2209,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['noWordWrapClassName']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['noWordWrapClassName']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['noWordWrapClassName']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['noWordWrapClassName']).toBe(true); }); - })); + }); - it(`should set observeChanges defined as bindings`, async(() => { + it(`should set observeChanges defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2352,12 +2238,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['observeChanges']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['observeChanges']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['observeChanges']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['observeChanges']).toBe(true); }); - })); + }); - it(`should set observeDOMVisibility defined as bindings`, async(() => { + it(`should set observeDOMVisibility defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2381,12 +2267,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['observeDOMVisibility']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['observeDOMVisibility']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['observeDOMVisibility']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['observeDOMVisibility']).toBe(true); }); - })); + }); - it(`should set outsideClickDeselects defined as bindings`, async(() => { + it(`should set outsideClickDeselects defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2410,41 +2296,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['outsideClickDeselects']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['outsideClickDeselects']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['outsideClickDeselects']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['outsideClickDeselects']).toBe(true); }); - })); - - it(`should set pasteMode defined as bindings`, async(() => { - TestBed.overrideComponent(TestComponent, { - set: { - template: ` - - - - ` - } - }); - TestBed.compileComponents().then(() => { - fixture = TestBed.createComponent(TestComponent); - const app = fixture.componentInstance; - app.prop['settings'] = { - pasteMode: false - }; - app.prop['columns'] = [ - {}, - { - pasteMode: true - } - ]; - fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['pasteMode']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['pasteMode']).toBe(true); - }); - })); + }); - it(`should set persistentState defined as bindings`, async(() => { + it(`should set persistentState defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2468,12 +2325,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['persistentState']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['persistentState']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['persistentState']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['persistentState']).toBe(true); }); - })); + }); - it(`should set placeholder defined as bindings`, async(() => { + it(`should set placeholder defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2497,12 +2354,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['placeholder']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['placeholder']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['placeholder']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['placeholder']).toBe(true); }); - })); + }); - it(`should set placeholderCellClassName defined as bindings`, async(() => { + it(`should set placeholderCellClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2526,12 +2383,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['placeholderCellClassName']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['placeholderCellClassName']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['placeholderCellClassName']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['placeholderCellClassName']).toBe(true); }); - })); + }); - it(`should set preventOverflow defined as bindings`, async(() => { + it(`should set preventOverflow defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2555,12 +2412,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['preventOverflow']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['preventOverflow']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['preventOverflow']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['preventOverflow']).toBe(true); }); - })); + }); - it(`should set readOnly defined as bindings`, async(() => { + it(`should set readOnly defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2584,12 +2441,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['readOnly']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['readOnly']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['readOnly']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['readOnly']).toBe(true); }); - })); + }); - it(`should set readOnlyCellClassName defined as bindings`, async(() => { + it(`should set readOnlyCellClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2613,12 +2470,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['readOnlyCellClassName']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['readOnlyCellClassName']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['readOnlyCellClassName']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['readOnlyCellClassName']).toBe(true); }); - })); + }); - it(`should set renderAllRows defined as bindings`, async(() => { + it(`should set renderAllRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2642,12 +2499,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['renderAllRows']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['renderAllRows']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['renderAllRows']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['renderAllRows']).toBe(true); }); - })); + }); - it(`should set renderer defined as bindings`, async(() => { + it(`should set renderer defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2671,12 +2528,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['renderer']).toBe('date'); - expect(app.hot('hot').getCellMeta(0, 1)['renderer']).toBe('text'); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['renderer']).toBe('date'); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['renderer']).toBe('text'); }); - })); + }); - it(`should set rowHeaders defined as bindings`, async(() => { + it(`should set rowHeaders defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2700,12 +2557,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['rowHeaders']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['rowHeaders']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['rowHeaders']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['rowHeaders']).toBe(true); }); - })); + }); - it(`should set rowHeaderWidth defined as bindings`, async(() => { + it(`should set rowHeaderWidth defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2729,12 +2586,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['rowHeaderWidth']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['rowHeaderWidth']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['rowHeaderWidth']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['rowHeaderWidth']).toBe(true); }); - })); + }); - it(`should set rowHeights defined as bindings`, async(() => { + it(`should set rowHeights defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2758,12 +2615,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['rowHeights']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['rowHeights']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['rowHeights']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['rowHeights']).toBe(true); }); - })); + }); - it(`should set search defined as bindings`, async(() => { + it(`should set search defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2787,12 +2644,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['search']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['search']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['search']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['search']).toBe(true); }); - })); + }); - it(`should set selectOptions defined as bindings`, async(() => { + it(`should set selectOptions defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2816,12 +2673,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['selectOptions']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['selectOptions']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['selectOptions']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['selectOptions']).toBe(true); }); - })); + }); - it(`should set skipColumnOnPaste defined as bindings`, async(() => { + it(`should set skipColumnOnPaste defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2845,12 +2702,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['skipColumnOnPaste']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['skipColumnOnPaste']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['skipColumnOnPaste']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['skipColumnOnPaste']).toBe(true); }); - })); + }); - it(`should set sortByRelevance defined as bindings`, async(() => { + it(`should set sortByRelevance defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2874,12 +2731,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['sortByRelevance']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['sortByRelevance']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['sortByRelevance']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['sortByRelevance']).toBe(true); }); - })); + }); - it(`should set sortFunction defined as bindings`, async(() => { + it(`should set sortFunction defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2903,12 +2760,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['sortFunction']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['sortFunction']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['sortFunction']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['sortFunction']).toBe(true); }); - })); + }); - it(`should set sortIndicator defined as bindings`, async(() => { + it(`should set sortIndicator defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2932,12 +2789,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['sortIndicator']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['sortIndicator']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['sortIndicator']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['sortIndicator']).toBe(true); }); - })); + }); - it(`should set source defined as bindings`, async(() => { + it(`should set source defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2961,12 +2818,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['source']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['source']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['source']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['source']).toBe(true); }); - })); + }); - it(`should set startCols defined as bindings`, async(() => { + it(`should set startCols defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -2990,12 +2847,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['startCols']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['startCols']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['startCols']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['startCols']).toBe(true); }); - })); + }); - it(`should set startRows defined as bindings`, async(() => { + it(`should set startRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3019,12 +2876,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['startRows']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['startRows']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['startRows']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['startRows']).toBe(true); }); - })); + }); - it(`should set stretchH defined as bindings`, async(() => { + it(`should set stretchH defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3048,12 +2905,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['stretchH']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['stretchH']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['stretchH']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['stretchH']).toBe(true); }); - })); + }); - it(`should set strict defined as bindings`, async(() => { + it(`should set strict defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3077,12 +2934,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['strict']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['strict']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['strict']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['strict']).toBe(true); }); - })); + }); - it(`should set tableClassName defined as bindings`, async(() => { + it(`should set tableClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3106,12 +2963,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['tableClassName']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['tableClassName']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['tableClassName']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['tableClassName']).toBe(true); }); - })); + }); - it(`should set tabMoves defined as bindings`, async(() => { + it(`should set tabMoves defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3135,12 +2992,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['tabMoves']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['tabMoves']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['tabMoves']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['tabMoves']).toBe(true); }); - })); + }); - it(`should set title defined as bindings`, async(() => { + it(`should set title defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3164,12 +3021,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['title']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['title']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['title']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['title']).toBe(true); }); - })); + }); - it(`should set trimDropdown defined as bindings`, async(() => { + it(`should set trimDropdown defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3193,12 +3050,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['trimDropdown']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['trimDropdown']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['trimDropdown']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['trimDropdown']).toBe(true); }); - })); + }); - it(`should set trimRows defined as bindings`, async(() => { + it(`should set trimRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3222,12 +3079,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['trimRows']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['trimRows']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['trimRows']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['trimRows']).toBe(true); }); - })); + }); - it(`should set trimWhitespace defined as bindings`, async(() => { + it(`should set trimWhitespace defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3251,12 +3108,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['trimWhitespace']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['trimWhitespace']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['trimWhitespace']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['trimWhitespace']).toBe(true); }); - })); + }); - it(`should set type defined as bindings`, async(() => { + it(`should set type defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3280,12 +3137,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['type']).toBe('date'); - expect(app.hot('hot').getCellMeta(0, 1)['type']).toBe('text'); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['type']).toBe('date'); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['type']).toBe('text'); }); - })); + }); - it(`should set uncheckedTemplate defined as bindings`, async(() => { + it(`should set uncheckedTemplate defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3309,12 +3166,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['uncheckedTemplate']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['uncheckedTemplate']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['uncheckedTemplate']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['uncheckedTemplate']).toBe(true); }); - })); + }); - it(`should set undo defined as bindings`, async(() => { + it(`should set undo defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3338,12 +3195,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['undo']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['undo']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['undo']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['undo']).toBe(true); }); - })); + }); - it(`should set validator defined as bindings`, async(() => { + it(`should set validator defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3367,12 +3224,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['validator']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['validator']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['validator']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['validator']).toBe(true); }); - })); + }); - it(`should set viewportColumnRenderingOffset defined as bindings`, async(() => { + it(`should set viewportColumnRenderingOffset defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3396,12 +3253,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['viewportColumnRenderingOffset']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['viewportColumnRenderingOffset']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['viewportColumnRenderingOffset']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['viewportColumnRenderingOffset']).toBe(true); }); - })); + }); - it(`should set viewportRowRenderingOffset defined as bindings`, async(() => { + it(`should set viewportRowRenderingOffset defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3425,12 +3282,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['viewportRowRenderingOffset']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['viewportRowRenderingOffset']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['viewportRowRenderingOffset']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['viewportRowRenderingOffset']).toBe(true); }); - })); + }); - it(`should set visibleRows defined as bindings`, async(() => { + it(`should set visibleRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3454,12 +3311,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['visibleRows']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['visibleRows']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['visibleRows']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['visibleRows']).toBe(true); }); - })); + }); - it(`should set width defined as bindings`, async(() => { + it(`should set width defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3483,12 +3340,12 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['width']).toBe(void 0); - expect(app.hot('hot').getCellMeta(0, 1)['width']).toBe(10); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['width']).toBe(void 0); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['width']).toBe(10); }); - })); + }); - it(`should set wordWrap defined as bindings`, async(() => { + it(`should set wordWrap defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -3512,8 +3369,8 @@ describe(`hot-column`, () => { } ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['wordWrap']).toBe(false); - expect(app.hot('hot').getCellMeta(0, 1)['wordWrap']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['wordWrap']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(0, 1)['wordWrap']).toBe(true); }); - })); -}); \ No newline at end of file + }); +}); diff --git a/tests/02.hot-table.component.spec.ts b/src/app/hot-table.component.spec.ts similarity index 62% rename from tests/02.hot-table.component.spec.ts rename to src/app/hot-table.component.spec.ts index 0563da9..926a01e 100644 --- a/tests/02.hot-table.component.spec.ts +++ b/src/app/hot-table.component.spec.ts @@ -1,21 +1,19 @@ -import { DebugElement } from '@angular/core'; -import { async, TestBed, ComponentFixture } from '@angular/core/testing'; +import { TestBed, async, ComponentFixture } from '@angular/core/testing'; +import * as Handsontable from 'handsontable-pro'; +import { element } from 'protractor'; +import { HotTableModule } from '../../dist/pro'; import { TestComponent } from './test.component'; -import { TestModule } from './test.module'; -import { HotRegisterer } from '../src/hot-registerer.service'; -import Handsontable from 'handsontable'; - -describe('hot-table', () => { +describe('HotTableComponent', () => { let fixture: ComponentFixture; - beforeEach(() => { + beforeEach((() => { TestBed.configureTestingModule({ - declarations: [ TestComponent ], - imports: [ TestModule ] + imports: [ HotTableModule.forRoot() ], + declarations: [ TestComponent ], }); - }); + })); afterEach(() => { if (fixture) { @@ -23,7 +21,7 @@ describe('hot-table', () => { } }); - it(`should render 'hot-table'`, async(() => { + it(`should render 'hot-table'`, () => { TestBed.overrideComponent(TestComponent, { set: { template: `` @@ -31,19 +29,19 @@ describe('hot-table', () => { }); TestBed.compileComponents().then(() => { fixture = TestBed.createComponent(TestComponent); - const element = fixture.nativeElement; + const elem = fixture.nativeElement; fixture.detectChanges(); - expect(element.querySelectorAll('hot-table').length).toBe(1); + expect(elem.querySelectorAll('.handsontable').length).toBeGreaterThan(0); }); - })); + }); describe('inputs', () => { - it(`should add reference to 'hotRegisterer' by attribute`, async(() => { + it(`should add reference to 'hotRegisterer' by attribute`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -52,11 +50,11 @@ describe('hot-table', () => { fixture.detectChanges(); - expect(app.hot('hot')).toBeTruthy(); + expect(app.getHotInstance(app.id)).toBeTruthy(); }); - })); + }); - it(`should register every hot-table component with added ID attribute`, async(() => { + it(`should register every hot-table component with added ID attribute`, () => { TestBed.overrideComponent(TestComponent, { set: { template: ` @@ -74,16 +72,16 @@ describe('hot-table', () => { fixture.detectChanges(); - expect(app.hot('hot')).toBeTruthy(); - expect(app.hot('hot1')).toBeTruthy(); - expect(app.hot('hot2')).toBeTruthy(); + expect(app.getHotInstance(app.prop['hotTableId'])).toBeDefined(); + expect(app.getHotInstance('hot1')).toBeDefined(); + expect(app.getHotInstance('hot2')).toBeDefined(); }); - })); + }); - it(`should set 'settings' defined as bindings`, async(() => { + it(`should set 'settings' defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -95,14 +93,14 @@ describe('hot-table', () => { }; fixture.detectChanges(); - expect(app.hot('hot').getDataAtCell(0, 0)).toBe('A1'); + expect(app.getHotInstance(app.id).getDataAtCell(0, 0)).toBe('A1'); }); - })); + }); - it(`should set allowEmpty defined as bindings`, async(() => { + it(`should set allowEmpty defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -111,18 +109,18 @@ describe('hot-table', () => { app.prop['allowEmpty'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowEmpty']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['allowEmpty']).toBe(false); app.prop['allowEmpty'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowEmpty']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['allowEmpty']).toBe(true); }); - })); + }); - it(`should set allowHtml defined as bindings`, async(() => { + it(`should set allowHtml defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -131,18 +129,18 @@ describe('hot-table', () => { app.prop['allowHtml'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowHtml']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['allowHtml']).toBe(false); app.prop['allowHtml'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowHtml']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['allowHtml']).toBe(true); }); - })); + }); - it(`should set allowInsertColumn defined as bindings`, async(() => { + it(`should set allowInsertColumn defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -151,18 +149,18 @@ describe('hot-table', () => { app.prop['allowInsertColumn'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowInsertColumn']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['allowInsertColumn']).toBe(false); app.prop['allowInsertColumn'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowInsertColumn']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['allowInsertColumn']).toBe(true); }); - })); + }); - it(`should set allowInsertRow defined as bindings`, async(() => { + it(`should set allowInsertRow defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -171,18 +169,18 @@ describe('hot-table', () => { app.prop['allowInsertRow'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowInsertRow']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['allowInsertRow']).toBe(false); app.prop['allowInsertRow'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowInsertRow']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['allowInsertRow']).toBe(true); }); - })); + }); - it(`should set allowInvalid defined as bindings`, async(() => { + it(`should set allowInvalid defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -191,18 +189,18 @@ describe('hot-table', () => { app.prop['allowInvalid'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowInvalid']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['allowInvalid']).toBe(false); app.prop['allowInvalid'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowInvalid']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['allowInvalid']).toBe(true); }); - })); + }); - it(`should set allowRemoveColumn defined as bindings`, async(() => { + it(`should set allowRemoveColumn defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -211,18 +209,18 @@ describe('hot-table', () => { app.prop['allowRemoveColumn'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowRemoveColumn']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['allowRemoveColumn']).toBe(false); app.prop['allowRemoveColumn'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowRemoveColumn']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['allowRemoveColumn']).toBe(true); }); - })); + }); - it(`should set allowRemoveRow defined as bindings`, async(() => { + it(`should set allowRemoveRow defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -231,18 +229,18 @@ describe('hot-table', () => { app.prop['allowRemoveRow'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowRemoveRow']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['allowRemoveRow']).toBe(false); app.prop['allowRemoveRow'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['allowRemoveRow']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['allowRemoveRow']).toBe(true); }); - })); + }); - it(`should set autoColumnSize defined as bindings`, async(() => { + it(`should set autoColumnSize defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -251,22 +249,22 @@ describe('hot-table', () => { app.prop['autoColumnSize'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['autoColumnSize']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['autoColumnSize']).toBe(false); app.prop['autoColumnSize'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['autoColumnSize']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['autoColumnSize']).toBe(true); app.prop['autoColumnSize'] = { syncLimit: '40%' }; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['autoColumnSize']['syncLimit']).toBe('40%'); + expect(app.getHotInstance(app.id).getSettings()['autoColumnSize']['syncLimit']).toBe('40%'); }); - })); + }); - it(`should set autoComplete defined as bindings`, async(() => { + it(`should set autoComplete defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -274,18 +272,18 @@ describe('hot-table', () => { const app = fixture.componentInstance; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['autoComplete']).toBeUndefined(); + expect(app.getHotInstance(app.id).getSettings()['autoComplete']).toBeUndefined(); app.prop['autoComplete'] = ['A']; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['autoComplete'][0]).toBe('A'); + expect(app.getHotInstance(app.id).getSettings()['autoComplete'][0]).toBe('A'); }); - })); + }); - it(`should set autoRowSize defined as bindings`, async(() => { + it(`should set autoRowSize defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -294,22 +292,22 @@ describe('hot-table', () => { app.prop['autoRowSize'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['autoRowSize']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['autoRowSize']).toBe(false); app.prop['autoRowSize'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['autoRowSize']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['autoRowSize']).toBe(true); app.prop['autoRowSize'] = { syncLimit: '40%' }; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['autoRowSize']['syncLimit']).toBe('40%'); + expect(app.getHotInstance(app.id).getSettings()['autoRowSize']['syncLimit']).toBe('40%'); }); - })); + }); - it(`should set autoWrapCol defined as bindings`, async(() => { + it(`should set autoWrapCol defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -318,18 +316,18 @@ describe('hot-table', () => { app.prop['autoWrapCol'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['autoWrapCol']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['autoWrapCol']).toBe(false); app.prop['autoWrapCol'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['autoWrapCol']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['autoWrapCol']).toBe(true); }); - })); + }); - it(`should set autoWrapRow defined as bindings`, async(() => { + it(`should set autoWrapRow defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -338,18 +336,18 @@ describe('hot-table', () => { app.prop['autoWrapRow'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['autoWrapRow']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['autoWrapRow']).toBe(false); app.prop['autoWrapRow'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['autoWrapRow']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['autoWrapRow']).toBe(true); }); - })); + }); - it(`should set bindRowsWithHeaders defined as bindings`, async(() => { + it(`should set bindRowsWithHeaders defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -358,18 +356,18 @@ describe('hot-table', () => { app.prop['bindRowsWithHeaders'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['autoWrapRow']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['autoWrapRow']).toBe(false); app.prop['bindRowsWithHeaders'] = 'loose'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['bindRowsWithHeaders']).toBe('loose'); + expect(app.getHotInstance(app.id).getSettings()['bindRowsWithHeaders']).toBe('loose'); }); - })); + }); - it(`should set cell defined as bindings`, async(() => { + it(`should set cell defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -380,14 +378,14 @@ describe('hot-table', () => { {row: 0, col: 0, readOnly: true} ]; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(0, 0)['readOnly']).toBe(true); + expect(app.getHotInstance(app.id).getCellMeta(0, 0)['readOnly']).toBe(true); }); - })); + }); - it(`should set cells defined as bindings`, async(() => { + it(`should set cells defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -401,14 +399,14 @@ describe('hot-table', () => { }; fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(2, 2)['className']).toBe('cell_2_2'); + expect(app.getHotInstance(app.id).getCellMeta(2, 2)['className']).toBe('cell_2_2'); }); - })); + }); - it(`should set checkedTemplate defined as bindings`, async(() => { + it(`should set checkedTemplate defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -418,14 +416,14 @@ describe('hot-table', () => { app.prop['checkedTemplate'] = false fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(2, 2)['checkedTemplate']).toBe(false); + expect(app.getHotInstance(app.id).getCellMeta(2, 2)['checkedTemplate']).toBe(false); }); - })); + }); - it(`should set className defined as bindings`, async(() => { + it(`should set className defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -435,14 +433,14 @@ describe('hot-table', () => { app.prop['className'] = 'test' fixture.detectChanges(); - expect(app.hot('hot').getCellMeta(2, 2)['className']).toBe('test'); + expect(app.getHotInstance(app.id).getCellMeta(2, 2)['className']).toBe('test'); }); - })); + }); - it(`should set colHeaders defined as bindings`, async(() => { + it(`should set colHeaders defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -451,38 +449,44 @@ describe('hot-table', () => { app.prop['headers'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['colHeaders']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['colHeaders']).toBe(false); app.prop['headers'] = 'Header'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['colHeaders']).toBe('Header'); + expect(app.getHotInstance(app.id).getSettings()['colHeaders']).toBe('Header'); }); - })); + }); - it(`should set collapsibleColumns defined as bindings`, async(() => { + it(`should set collapsibleColumns defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { fixture = TestBed.createComponent(TestComponent); const app = fixture.componentInstance; - app.prop['collapsibleColumns'] = true; + app.prop['nestedHeaders'] = ['H', {label: 'I', colspan: 2}, {label: 'J', colspan: 2}, {label: 'K', colspan: 2}, 'M']; + + app.prop['collapsibleColumns'] = [ + {row: -2, col: 1, collapsible: true}, + {row: -2, col: 3, collapsible: true} + ]; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['collapsibleColumns']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['collapsibleColumns']).toBeDefined(); app.prop['collapsibleColumns'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['collapsibleColumns']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['collapsibleColumns']).toBe(false); }); - })); + }); - it(`should set columnHeaderHeight defined as bindings`, async(() => { + it(`should set columnHeaderHeight defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -491,18 +495,18 @@ describe('hot-table', () => { app.prop['columnHeaderHeight'] = 40; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['columnHeaderHeight']).toBe(40); + expect(app.getHotInstance(app.id).getSettings()['columnHeaderHeight']).toBe(40); app.prop['columnHeaderHeight'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['columnHeaderHeight']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['columnHeaderHeight']).toBe(10); }); - })); + }); - it(`should set columns defined as bindings`, async(() => { + it(`should set columns defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -511,17 +515,17 @@ describe('hot-table', () => { app.prop['columns'] = [{}, {}, {}]; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['columns'].length).toBe(3); + expect(app.getHotInstance(app.id).getSettings()['columns'].length).toBe(3); app.prop['columns'] = [{}]; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['columns'].length).toBe(1); + expect(app.getHotInstance(app.id).getSettings()['columns'].length).toBe(1); }); - })); + }); it(`should set columnSorting defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -531,18 +535,18 @@ describe('hot-table', () => { app.prop['columnSorting'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['columnSorting']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['columnSorting']).toBe(true); app.prop['columnSorting'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['columnSorting']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['columnSorting']).toBe(false); }); }); - it(`should set columnSummary defined as bindings`, async(() => { + it(`should set columnSummary defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -551,14 +555,14 @@ describe('hot-table', () => { app.prop['columnSummary'] = {attr: 1}; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['columnSummary']['attr']).toBe(1); + expect(app.getHotInstance(app.id).getSettings()['columnSummary']['attr']).toBe(1); }); - })); + }); - it(`should set colWidths defined as bindings`, async(() => { + it(`should set colWidths defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -567,18 +571,18 @@ describe('hot-table', () => { app.prop['colWidths'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['colWidths']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['colWidths']).toBe(10); app.prop['colWidths'] = 40; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['colWidths']).toBe(40); + expect(app.getHotInstance(app.id).getSettings()['colWidths']).toBe(40); }); - })); + }); - it(`should set commentedCellClassName defined as bindings`, async(() => { + it(`should set commentedCellClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -587,14 +591,14 @@ describe('hot-table', () => { app.prop['commentedCellClassName'] = 'test'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['commentedCellClassName']).toBe('test'); + expect(app.getHotInstance(app.id).getSettings()['commentedCellClassName']).toBe('test'); }); - })); + }); - it(`should set comments defined as bindings`, async(() => { + it(`should set comments defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -603,14 +607,14 @@ describe('hot-table', () => { app.prop['comments'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['comments']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['comments']).toBe(true); }); - })); + }); - it(`should set contextMenu defined as bindings`, async(() => { + it(`should set contextMenu defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -619,14 +623,14 @@ describe('hot-table', () => { app.prop['contextMenu'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['contextMenu']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['contextMenu']).toBe(true); }); - })); + }); - it(`should set copyable defined as bindings`, async(() => { + it(`should set copyable defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -635,30 +639,14 @@ describe('hot-table', () => { app.prop['copyable'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['copyable']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['copyable']).toBe(true); }); - })); - - it(`should set copyColsLimit defined as bindings`, async(() => { - TestBed.overrideComponent(TestComponent, { - set: { - template: `` - } - }); - TestBed.compileComponents().then(() => { - fixture = TestBed.createComponent(TestComponent); - const app = fixture.componentInstance; - - app.prop['copyColsLimit'] = 10; - fixture.detectChanges(); - expect(app.hot('hot').getSettings()['copyColsLimit']).toBe(10); - }); - })); + }); - it(`should set copyPaste defined as bindings`, async(() => { + it(`should set copyPaste defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -667,30 +655,14 @@ describe('hot-table', () => { app.prop['copyPaste'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['copyPaste']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['copyPaste']).toBe(false); }); - })); - - it(`should set copyRowsLimit defined as bindings`, async(() => { - TestBed.overrideComponent(TestComponent, { - set: { - template: `` - } - }); - TestBed.compileComponents().then(() => { - fixture = TestBed.createComponent(TestComponent); - const app = fixture.componentInstance; - - app.prop['copyRowsLimit'] = 10; - fixture.detectChanges(); - expect(app.hot('hot').getSettings()['copyRowsLimit']).toBe(10); - }); - })); + }); - it(`should set correctFormat defined as bindings`, async(() => { + it(`should set correctFormat defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -699,14 +671,14 @@ describe('hot-table', () => { app.prop['correctFormat'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['correctFormat']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['correctFormat']).toBe(true); }); - })); + }); - it(`should set currentColClassName defined as bindings`, async(() => { + it(`should set currentColClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -715,14 +687,14 @@ describe('hot-table', () => { app.prop['currentColClassName'] = 'test'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['currentColClassName']).toBe('test'); + expect(app.getHotInstance(app.id).getSettings()['currentColClassName']).toBe('test'); }); - })); + }); - it(`should set currentHeaderClassName defined as bindings`, async(() => { + it(`should set currentHeaderClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -731,14 +703,14 @@ describe('hot-table', () => { app.prop['currentHeaderClassName'] = 'test'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['currentHeaderClassName']).toBe('test'); + expect(app.getHotInstance(app.id).getSettings()['currentHeaderClassName']).toBe('test'); }); - })); + }); - it(`should set currentRowClassName defined as bindings`, async(() => { + it(`should set currentRowClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -747,14 +719,14 @@ describe('hot-table', () => { app.prop['currentRowClassName'] = 'test'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['currentRowClassName']).toBe('test'); + expect(app.getHotInstance(app.id).getSettings()['currentRowClassName']).toBe('test'); }); - })); + }); - it(`should set customBorders defined as bindings`, async(() => { + it(`should set customBorders defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -763,14 +735,14 @@ describe('hot-table', () => { app.prop['customBorders'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['customBorders']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['customBorders']).toBe(true); }); - })); + }); - it(`should set data defined as bindings`, async(() => { + it(`should set data defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -779,14 +751,14 @@ describe('hot-table', () => { app.prop['data'] = [[1, 2, 3]]; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['data'][0][0]).toBe(1); + expect(app.getHotInstance(app.id).getSettings()['data'][0][0]).toBe(1); }); - })); + }); - it(`should set dataSchema defined as bindings`, async(() => { + it(`should set dataSchema defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -795,14 +767,14 @@ describe('hot-table', () => { app.prop['dataSchema'] = {attr: null}; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['dataSchema']['attr']).toBe(null); + expect(app.getHotInstance(app.id).getSettings()['dataSchema']['attr']).toBe(null); }); - })); + }); - it(`should set dateFormat defined as bindings`, async(() => { + it(`should set dateFormat defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -811,14 +783,14 @@ describe('hot-table', () => { app.prop['dateFormat'] = 'hh:mm:ss'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['dateFormat']).toBe('hh:mm:ss'); + expect(app.getHotInstance(app.id).getSettings()['dateFormat']).toBe('hh:mm:ss'); }); - })); + }); - it(`should set debug defined as bindings`, async(() => { + it(`should set debug defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -827,14 +799,14 @@ describe('hot-table', () => { app.prop['debug'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['debug']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['debug']).toBe(true); }); - })); + }); - it(`should set defaultDate defined as bindings`, async(() => { + it(`should set defaultDate defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -843,14 +815,14 @@ describe('hot-table', () => { app.prop['defaultDate'] = '1970-01-01'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['defaultDate']).toBe('1970-01-01'); + expect(app.getHotInstance(app.id).getSettings()['defaultDate']).toBe('1970-01-01'); }); - })); + }); - it(`should set disableVisualSelection defined as bindings`, async(() => { + it(`should set disableVisualSelection defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -859,14 +831,14 @@ describe('hot-table', () => { app.prop['disableVisualSelection'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['disableVisualSelection']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['disableVisualSelection']).toBe(true); }); - })); + }); - it(`should set dropdownMenu defined as bindings`, async(() => { + it(`should set dropdownMenu defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -875,14 +847,14 @@ describe('hot-table', () => { app.prop['dropdownMenu'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['dropdownMenu']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['dropdownMenu']).toBe(true); }); - })); + }); - it(`should set editor defined as bindings`, async(() => { + it(`should set editor defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -891,14 +863,14 @@ describe('hot-table', () => { app.prop['editor'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['editor']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['editor']).toBe(false); }); - })); + }); - it(`should set enterBeginsEditing defined as bindings`, async(() => { + it(`should set enterBeginsEditing defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -907,14 +879,14 @@ describe('hot-table', () => { app.prop['enterBeginsEditing'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['enterBeginsEditing']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['enterBeginsEditing']).toBe(false); }); - })); + }); - it(`should set enterMoves defined as bindings`, async(() => { + it(`should set enterMoves defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -923,14 +895,14 @@ describe('hot-table', () => { app.prop['enterMoves'] = {attr: 1}; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['enterMoves']['attr']).toBe(1); + expect(app.getHotInstance(app.id).getSettings()['enterMoves']['attr']).toBe(1); }); - })); + }); - it(`should set fillHandle defined as bindings`, async(() => { + it(`should set fillHandle defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -939,14 +911,14 @@ describe('hot-table', () => { app.prop['fillHandle'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['fillHandle']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['fillHandle']).toBe(false); }); - })); + }); - it(`should set filter defined as bindings`, async(() => { + it(`should set filter defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -955,14 +927,14 @@ describe('hot-table', () => { app.prop['filter'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['filter']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['filter']).toBe(true); }); - })); + }); - it(`should set filteringCaseSensitive defined as bindings`, async(() => { + it(`should set filteringCaseSensitive defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -971,14 +943,14 @@ describe('hot-table', () => { app.prop['filteringCaseSensitive'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['filteringCaseSensitive']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['filteringCaseSensitive']).toBe(true); }); - })); + }); - it(`should set filters defined as bindings`, async(() => { + it(`should set filters defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -987,14 +959,14 @@ describe('hot-table', () => { app.prop['filters'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['filters']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['filters']).toBe(true); }); - })); + }); - it(`should set fixedColumnsLeft defined as bindings`, async(() => { + it(`should set fixedColumnsLeft defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1003,14 +975,14 @@ describe('hot-table', () => { app.prop['fixedColumnsLeft'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['fixedColumnsLeft']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['fixedColumnsLeft']).toBe(10); }); - })); + }); - it(`should set fixedRowsBottom defined as bindings`, async(() => { + it(`should set fixedRowsBottom defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1019,14 +991,14 @@ describe('hot-table', () => { app.prop['fixedRowsBottom'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['fixedRowsBottom']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['fixedRowsBottom']).toBe(10); }); - })); + }); - it(`should set fixedRowsTop defined as bindings`, async(() => { + it(`should set fixedRowsTop defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1035,30 +1007,14 @@ describe('hot-table', () => { app.prop['fixedRowsTop'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['fixedRowsTop']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['fixedRowsTop']).toBe(10); }); - })); - - it(`should set format defined as bindings`, async(() => { - TestBed.overrideComponent(TestComponent, { - set: { - template: `` - } - }); - TestBed.compileComponents().then(() => { - fixture = TestBed.createComponent(TestComponent); - const app = fixture.componentInstance; - - app.prop['format'] = '$0.00,0'; - fixture.detectChanges(); - expect(app.hot('hot').getSettings()['format']).toBe('$0.00,0'); - }); - })); + }); - it(`should set formulas defined as bindings`, async(() => { + it(`should set formulas defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1067,14 +1023,14 @@ describe('hot-table', () => { app.prop['formulas'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['formulas']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['formulas']).toBe(true); }); - })); + }); - it(`should set fragmentSelection defined as bindings`, async(() => { + it(`should set fragmentSelection defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1083,30 +1039,30 @@ describe('hot-table', () => { app.prop['fragmentSelection'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['fragmentSelection']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['fragmentSelection']).toBe(true); }); - })); + }); - it(`should set ganttChart defined as bindings`, async(() => { + it(`should set ganttChart defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { fixture = TestBed.createComponent(TestComponent); const app = fixture.componentInstance; - app.prop['ganttChart'] = {attr:1}; + app.prop['ganttChart'] = { attr: 1 }; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['ganttChart']['attr']).toBe(1); + expect(app.getHotInstance(app.id).getSettings()['ganttChart']['attr']).toBe(1); }); - })); + }); - it(`should set headerTooltips defined as bindings`, async(() => { + it(`should set headerTooltips defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1115,14 +1071,14 @@ describe('hot-table', () => { app.prop['headerTooltips'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['headerTooltips']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['headerTooltips']).toBe(true); }); - })); + }); - it(`should set height defined as bindings`, async(() => { + it(`should set height defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1131,14 +1087,14 @@ describe('hot-table', () => { app.prop['height'] = 100; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['height']).toBe(100); + expect(app.getHotInstance(app.id).getSettings()['height']).toBe(100); }); - })); + }); - it(`should set hiddenColumns defined as bindings`, async(() => { + it(`should set hiddenColumns defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1147,14 +1103,14 @@ describe('hot-table', () => { app.prop['hiddenColumns'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['hiddenColumns']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['hiddenColumns']).toBe(true); }); - })); + }); - it(`should set hiddenRows defined as bindings`, async(() => { + it(`should set hiddenRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1163,14 +1119,14 @@ describe('hot-table', () => { app.prop['hiddenRows'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['hiddenRows']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['hiddenRows']).toBe(true); }); - })); + }); - it(`should set invalidCellClassName defined as bindings`, async(() => { + it(`should set invalidCellClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1179,30 +1135,31 @@ describe('hot-table', () => { app.prop['invalidCellClassName'] = 'invalid'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['invalidCellClassName']).toBe('invalid'); + expect(app.getHotInstance(app.id).getSettings()['invalidCellClassName']).toBe('invalid'); }); - })); + }); - it(`should set label defined as bindings`, async(() => { + it(`should set label defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { fixture = TestBed.createComponent(TestComponent); const app = fixture.componentInstance; - app.prop['label'] = {attr:1}; + app.prop['label'] = { attr: 1 }; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['label']['attr']).toBe(1); + expect(app.getHotInstance(app.id).getSettings()['label']['attr']).toBe(1); }); - })); + }); - it(`should set language defined as bindings`, async(() => { + // TODO: change with + xit(`should set language defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1211,14 +1168,14 @@ describe('hot-table', () => { app.prop['language'] = 'en'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['language']).toBe('en'); + expect(app.getHotInstance(app.id).getSettings()['language']).toBe('en'); }); - })); + }); - it(`should set manualColumnFreeze defined as bindings`, async(() => { + it(`should set manualColumnFreeze defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1227,14 +1184,14 @@ describe('hot-table', () => { app.prop['manualColumnFreeze'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['manualColumnFreeze']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['manualColumnFreeze']).toBe(true); }); - })); + }); - it(`should set manualColumnMove defined as bindings`, async(() => { + it(`should set manualColumnMove defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1243,14 +1200,14 @@ describe('hot-table', () => { app.prop['manualColumnMove'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['manualColumnMove']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['manualColumnMove']).toBe(true); }); - })); + }); - it(`should set manualColumnResize defined as bindings`, async(() => { + it(`should set manualColumnResize defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1259,14 +1216,14 @@ describe('hot-table', () => { app.prop['manualColumnResize'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['manualColumnResize']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['manualColumnResize']).toBe(true); }); - })); + }); - it(`should set manualRowMove defined as bindings`, async(() => { + it(`should set manualRowMove defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1275,14 +1232,14 @@ describe('hot-table', () => { app.prop['manualRowMove'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['manualRowMove']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['manualRowMove']).toBe(true); }); - })); + }); - it(`should set manualRowResize defined as bindings`, async(() => { + it(`should set manualRowResize defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1291,14 +1248,14 @@ describe('hot-table', () => { app.prop['manualRowResize'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['manualRowResize']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['manualRowResize']).toBe(true); }); - })); + }); - it(`should set maxCols defined as bindings`, async(() => { + it(`should set maxCols defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1307,14 +1264,14 @@ describe('hot-table', () => { app.prop['maxCols'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['maxCols']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['maxCols']).toBe(10); }); - })); + }); - it(`should set maxRows defined as bindings`, async(() => { + it(`should set maxRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1323,14 +1280,14 @@ describe('hot-table', () => { app.prop['maxRows'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['maxRows']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['maxRows']).toBe(10); }); - })); + }); - it(`should set mergeCells defined as bindings`, async(() => { + it(`should set mergeCells defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1339,14 +1296,14 @@ describe('hot-table', () => { app.prop['mergeCells'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['mergeCells']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['mergeCells']).toBe(true); }); - })); + }); - it(`should set minCols defined as bindings`, async(() => { + it(`should set minCols defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1355,14 +1312,14 @@ describe('hot-table', () => { app.prop['minCols'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['minCols']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['minCols']).toBe(10); }); - })); + }); - it(`should set minRows defined as bindings`, async(() => { + it(`should set minRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1371,14 +1328,14 @@ describe('hot-table', () => { app.prop['minRows'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['minRows']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['minRows']).toBe(10); }); - })); + }); - it(`should set minSpareCols defined as bindings`, async(() => { + it(`should set minSpareCols defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1387,14 +1344,14 @@ describe('hot-table', () => { app.prop['minSpareCols'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['minSpareCols']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['minSpareCols']).toBe(10); }); - })); + }); - it(`should set minSpareRows defined as bindings`, async(() => { + it(`should set minSpareRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1403,14 +1360,14 @@ describe('hot-table', () => { app.prop['minSpareRows'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['minSpareRows']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['minSpareRows']).toBe(10); }); - })); + }); - it(`should set multiSelect defined as bindings`, async(() => { + it(`should set multiSelect defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1419,30 +1376,31 @@ describe('hot-table', () => { app.prop['multiSelect'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['multiSelect']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['multiSelect']).toBe(true); }); - })); + }); - it(`should set nestedHeaders defined as bindings`, async(() => { + it(`should set nestedHeaders defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { fixture = TestBed.createComponent(TestComponent); const app = fixture.componentInstance; - app.prop['nestedHeaders'] = [1, 2, 3]; + app.prop['nestedHeaders'] = [['1', '2', '3']]; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['nestedHeaders'][1]).toBe(2); + + expect(app.getHotInstance(app.id).getSettings()['nestedHeaders'][0][1]).toBe('2'); }); - })); + }); - it(`should set noWordWrapClassName defined as bindings`, async(() => { + it(`should set noWordWrapClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1451,15 +1409,15 @@ describe('hot-table', () => { app.prop['noWordWrapClassName'] = 'test'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['noWordWrapClassName']).toBe('test'); + expect(app.getHotInstance(app.id).getSettings()['noWordWrapClassName']).toBe('test'); }); - })); + }); xit(`should set observeChanges defined as bindings`, () => { - // Error during cleanup of component + // Error during cleanup of component TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1468,14 +1426,14 @@ describe('hot-table', () => { app.prop['observeChanges'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['observeChanges']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['observeChanges']).toBe(true); }); }); - it(`should set observeDOMVisibility defined as bindings`, async(() => { + it(`should set observeDOMVisibility defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1484,14 +1442,14 @@ describe('hot-table', () => { app.prop['observeDOMVisibility'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['observeDOMVisibility']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['observeDOMVisibility']).toBe(true); }); - })); + }); - it(`should set outsideClickDeselects defined as bindings`, async(() => { + it(`should set outsideClickDeselects defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1500,30 +1458,14 @@ describe('hot-table', () => { app.prop['outsideClickDeselects'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['outsideClickDeselects']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['outsideClickDeselects']).toBe(false); }); - })); - - it(`should set pasteMode defined as bindings`, async(() => { - TestBed.overrideComponent(TestComponent, { - set: { - template: `` - } - }); - TestBed.compileComponents().then(() => { - fixture = TestBed.createComponent(TestComponent); - const app = fixture.componentInstance; - - app.prop['pasteMode'] = 'test'; - fixture.detectChanges(); - expect(app.hot('hot').getSettings()['pasteMode']).toBe('test'); - }); - })); + }); - it(`should set persistentState defined as bindings`, async(() => { + it(`should set persistentState defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1532,14 +1474,14 @@ describe('hot-table', () => { app.prop['persistentState'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['persistentState']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['persistentState']).toBe(true); }); - })); + }); - it(`should set placeholder defined as bindings`, async(() => { + it(`should set placeholder defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1548,14 +1490,14 @@ describe('hot-table', () => { app.prop['placeholder'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['placeholder']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['placeholder']).toBe(true); }); - })); + }); - it(`should set placeholderCellClassName defined as bindings`, async(() => { + it(`should set placeholderCellClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1564,14 +1506,14 @@ describe('hot-table', () => { app.prop['placeholderCellClassName'] = 'test'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['placeholderCellClassName']).toBe('test'); + expect(app.getHotInstance(app.id).getSettings()['placeholderCellClassName']).toBe('test'); }); - })); + }); - it(`should set preventOverflow defined as bindings`, async(() => { + it(`should set preventOverflow defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1580,18 +1522,18 @@ describe('hot-table', () => { app.prop['preventOverflow'] = 'horizontal'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['preventOverflow']).toBe('horizontal'); + expect(app.getHotInstance(app.id).getSettings()['preventOverflow']).toBe('horizontal'); app.prop['preventOverflow'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['preventOverflow']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['preventOverflow']).toBe(false); }); - })); + }); - it(`should set readOnly defined as bindings`, async(() => { + it(`should set readOnly defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1600,14 +1542,14 @@ describe('hot-table', () => { app.prop['readOnly'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['readOnly']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['readOnly']).toBe(true); }); - })); + }); - it(`should set readOnlyCellClassName defined as bindings`, async(() => { + it(`should set readOnlyCellClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1616,14 +1558,14 @@ describe('hot-table', () => { app.prop['readOnlyCellClassName'] = 'test'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['readOnlyCellClassName']).toBe('test'); + expect(app.getHotInstance(app.id).getSettings()['readOnlyCellClassName']).toBe('test'); }); - })); + }); - it(`should set renderAllRows defined as bindings`, async(() => { + it(`should set renderAllRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1632,14 +1574,14 @@ describe('hot-table', () => { app.prop['renderAllRows'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['renderAllRows']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['renderAllRows']).toBe(true); }); - })); + }); - it(`should set renderer defined as bindings`, async(() => { + it(`should set renderer defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1648,14 +1590,14 @@ describe('hot-table', () => { app.prop['renderer'] = 'text'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['renderer']).toBe('text'); + expect(app.getHotInstance(app.id).getSettings()['renderer']).toBe('text'); }); - })); + }); - it(`should set rowHeaders defined as bindings`, async(() => { + it(`should set rowHeaders defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1664,14 +1606,14 @@ describe('hot-table', () => { app.prop['rowHeaders'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['rowHeaders']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['rowHeaders']).toBe(true); }); - })); + }); - it(`should set rowHeaderWidth defined as bindings`, async(() => { + it(`should set rowHeaderWidth defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1680,14 +1622,14 @@ describe('hot-table', () => { app.prop['rowHeaderWidth'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['rowHeaderWidth']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['rowHeaderWidth']).toBe(10); }); - })); + }); - it(`should set rowHeights defined as bindings`, async(() => { + it(`should set rowHeights defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1696,14 +1638,14 @@ describe('hot-table', () => { app.prop['rowHeights'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['rowHeights']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['rowHeights']).toBe(10); }); - })); + }); - it(`should set search defined as bindings`, async(() => { + it(`should set search defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1712,14 +1654,14 @@ describe('hot-table', () => { app.prop['search'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['search']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['search']).toBe(true); }); - })); + }); - it(`should set selectOptions defined as bindings`, async(() => { + it(`should set selectOptions defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1728,14 +1670,14 @@ describe('hot-table', () => { app.prop['selectOptions'] = ['test']; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['selectOptions'][0]).toBe('test'); + expect(app.getHotInstance(app.id).getSettings()['selectOptions'][0]).toBe('test'); }); - })); + }); - it(`should set skipColumnOnPaste defined as bindings`, async(() => { + it(`should set skipColumnOnPaste defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1744,14 +1686,14 @@ describe('hot-table', () => { app.prop['skipColumnOnPaste'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['skipColumnOnPaste']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['skipColumnOnPaste']).toBe(true); }); - })); + }); - it(`should set sortByRelevance defined as bindings`, async(() => { + it(`should set sortByRelevance defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1760,14 +1702,14 @@ describe('hot-table', () => { app.prop['sortByRelevance'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['sortByRelevance']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['sortByRelevance']).toBe(true); }); - })); + }); - it(`should set sortFunction defined as bindings`, async(() => { + it(`should set sortFunction defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1778,14 +1720,14 @@ describe('hot-table', () => { return 'test' }; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['sortFunction']()).toBe('test'); + expect(app.getHotInstance(app.id).getSettings()['sortFunction']()).toBe('test'); }); - })); + }); - it(`should set sortIndicator defined as bindings`, async(() => { + it(`should set sortIndicator defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1794,14 +1736,14 @@ describe('hot-table', () => { app.prop['sortIndicator'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['sortIndicator']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['sortIndicator']).toBe(true); }); - })); + }); - it(`should set source defined as bindings`, async(() => { + it(`should set source defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1810,14 +1752,14 @@ describe('hot-table', () => { app.prop['source'] = [0, 1, 2]; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['source'][1]).toBe(1); + expect(app.getHotInstance(app.id).getSettings()['source'][1]).toBe(1); }); - })); + }); - it(`should set startCols defined as bindings`, async(() => { + it(`should set startCols defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1826,14 +1768,14 @@ describe('hot-table', () => { app.prop['startCols'] = 1; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['startCols']).toBe(1); + expect(app.getHotInstance(app.id).getSettings()['startCols']).toBe(1); }); - })); + }); - it(`should set startRows defined as bindings`, async(() => { + it(`should set startRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1842,14 +1784,14 @@ describe('hot-table', () => { app.prop['startRows'] = 1; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['startRows']).toBe(1); + expect(app.getHotInstance(app.id).getSettings()['startRows']).toBe(1); }); - })); + }); - it(`should set stretchH defined as bindings`, async(() => { + it(`should set stretchH defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1858,14 +1800,14 @@ describe('hot-table', () => { app.prop['stretchH'] = 'all'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['stretchH']).toBe('all'); + expect(app.getHotInstance(app.id).getSettings()['stretchH']).toBe('all'); }); - })); + }); - it(`should set strict defined as bindings`, async(() => { + it(`should set strict defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1874,14 +1816,14 @@ describe('hot-table', () => { app.prop['strict'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['strict']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['strict']).toBe(true); }); - })); + }); - it(`should set tableClassName defined as bindings`, async(() => { + it(`should set tableClassName defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1890,14 +1832,14 @@ describe('hot-table', () => { app.prop['tableClassName'] = 'test'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['tableClassName']).toBe('test'); + expect(app.getHotInstance(app.id).getSettings()['tableClassName']).toBe('test'); }); - })); + }); - it(`should set tabMoves defined as bindings`, async(() => { + it(`should set tabMoves defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1906,14 +1848,14 @@ describe('hot-table', () => { app.prop['tabMoves'] = {attr: 1}; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['tabMoves']['attr']).toBe(1); + expect(app.getHotInstance(app.id).getSettings()['tabMoves']['attr']).toBe(1); }); - })); + }); - it(`should set title defined as bindings`, async(() => { + it(`should set title defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1922,14 +1864,14 @@ describe('hot-table', () => { app.prop['title'] = 'test'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['title']).toBe('test'); + expect(app.getHotInstance(app.id).getSettings()['title']).toBe('test'); }); - })); + }); - it(`should set trimDropdown defined as bindings`, async(() => { + it(`should set trimDropdown defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1938,14 +1880,14 @@ describe('hot-table', () => { app.prop['trimDropdown'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['trimDropdown']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['trimDropdown']).toBe(true); }); - })); + }); - it(`should set trimRows defined as bindings`, async(() => { + it(`should set trimRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1954,14 +1896,14 @@ describe('hot-table', () => { app.prop['trimRows'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['trimRows']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['trimRows']).toBe(true); }); - })); + }); - it(`should set trimWhitespace defined as bindings`, async(() => { + it(`should set trimWhitespace defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1970,14 +1912,14 @@ describe('hot-table', () => { app.prop['trimWhitespace'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['trimWhitespace']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['trimWhitespace']).toBe(true); }); - })); + }); - it(`should set type defined as bindings`, async(() => { + it(`should set type defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -1986,14 +1928,14 @@ describe('hot-table', () => { app.prop['type'] = 'date'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['type']).toBe('date'); + expect(app.getHotInstance(app.id).getSettings()['type']).toBe('date'); }); - })); + }); - it(`should set uncheckedTemplate defined as bindings`, async(() => { + it(`should set uncheckedTemplate defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2002,14 +1944,14 @@ describe('hot-table', () => { app.prop['uncheckedTemplate'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['uncheckedTemplate']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['uncheckedTemplate']).toBe(true); }); - })); + }); - it(`should set undo defined as bindings`, async(() => { + it(`should set undo defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2018,14 +1960,14 @@ describe('hot-table', () => { app.prop['undo'] = true; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['undo']).toBe(true); + expect(app.getHotInstance(app.id).getSettings()['undo']).toBe(true); }); - })); + }); - it(`should set validator defined as bindings`, async(() => { + it(`should set validator defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2034,14 +1976,14 @@ describe('hot-table', () => { app.prop['validator'] = 'test'; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['validator']).toBe('test'); + expect(app.getHotInstance(app.id).getSettings()['validator']).toBe('test'); }); - })); + }); - it(`should set viewportColumnRenderingOffset defined as bindings`, async(() => { + it(`should set viewportColumnRenderingOffset defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2050,14 +1992,14 @@ describe('hot-table', () => { app.prop['viewportColumnRenderingOffset'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['viewportColumnRenderingOffset']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['viewportColumnRenderingOffset']).toBe(10); }); - })); + }); - it(`should set viewportRowRenderingOffset defined as bindings`, async(() => { + it(`should set viewportRowRenderingOffset defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2066,14 +2008,14 @@ describe('hot-table', () => { app.prop['viewportRowRenderingOffset'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['viewportRowRenderingOffset']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['viewportRowRenderingOffset']).toBe(10); }); - })); + }); - it(`should set visibleRows defined as bindings`, async(() => { + it(`should set visibleRows defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2082,14 +2024,14 @@ describe('hot-table', () => { app.prop['visibleRows'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['visibleRows']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['visibleRows']).toBe(10); }); - })); + }); - it(`should set width defined as bindings`, async(() => { + it(`should set width defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2098,14 +2040,14 @@ describe('hot-table', () => { app.prop['width'] = 10; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['width']).toBe(10); + expect(app.getHotInstance(app.id).getSettings()['width']).toBe(10); }); - })); + }); - it(`should set wordWrap defined as bindings`, async(() => { + it(`should set wordWrap defined as bindings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2114,16 +2056,16 @@ describe('hot-table', () => { app.prop['wordWrap'] = false; fixture.detectChanges(); - expect(app.hot('hot').getSettings()['wordWrap']).toBe(false); + expect(app.getHotInstance(app.id).getSettings()['wordWrap']).toBe(false); }); - })); + }); }); describe('outputs', () => { - it(`should run afterAddChild hook defined in settings`, async(() => { + it(`should run afterAddChild hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2137,14 +2079,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterAddChild')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterAddChild')).toBe('test'); }); - })); + }); - it(`should run afterBeginEditing hook defined in settings`, async(() => { + it(`should run afterBeginEditing hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2158,14 +2100,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterBeginEditing')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterBeginEditing')).toBe('test'); }); - })); + }); - it(`should run afterCellMetaReset hook defined in settings`, async(() => { + it(`should run afterCellMetaReset hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2179,14 +2121,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterCellMetaReset')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterCellMetaReset')).toBe('test'); }); - })); + }); - it(`should run afterChange hook defined in settings`, async(() => { + it(`should run afterChange hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2200,14 +2142,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterChange')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterChange')).toBe('test'); }); - })); + }); - it(`should run afterChangesObserved hook defined in settings`, async(() => { + it(`should run afterChangesObserved hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2221,14 +2163,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterChangesObserved')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterChangesObserved')).toBe('test'); }); - })); + }); - it(`should run afterColumnMove hook defined in settings`, async(() => { + it(`should run afterColumnMove hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2242,14 +2184,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterColumnMove')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterColumnMove')).toBe('test'); }); - })); + }); - it(`should run afterColumnResize hook defined in settings`, async(() => { + it(`should run afterColumnResize hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2263,14 +2205,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterColumnResize')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterColumnResize')).toBe('test'); }); - })); + }); - it(`should run afterColumnSort hook defined in settings`, async(() => { + it(`should run afterColumnSort hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2284,14 +2226,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterColumnSort')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterColumnSort')).toBe('test'); }); - })); + }); - it(`should run afterContextMenuDefaultOptions hook defined in settings`, async(() => { + it(`should run afterContextMenuDefaultOptions hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2306,14 +2248,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterContextMenuDefaultOptions', {items: []})).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterContextMenuDefaultOptions', {items: []})).toBe('test'); }); - })); + }); - it(`should run afterContextMenuHide hook defined in settings`, async(() => { + it(`should run afterContextMenuHide hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2327,14 +2269,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterContextMenuHide')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterContextMenuHide')).toBe('test'); }); - })); + }); - it(`should run afterContextMenuShow hook defined in settings`, async(() => { + it(`should run afterContextMenuShow hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2348,14 +2290,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterContextMenuShow')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterContextMenuShow')).toBe('test'); }); - })); + }); - it(`should run afterCopy hook defined in settings`, async(() => { + it(`should run afterCopy hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2369,14 +2311,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterCopy')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterCopy')).toBe('test'); }); - })); + }); - it(`should run afterCopyLimit hook defined in settings`, async(() => { + it(`should run afterCopyLimit hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2390,14 +2332,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterCopyLimit')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterCopyLimit')).toBe('test'); }); - })); + }); - it(`should run afterCreateCol hook defined in settings`, async(() => { + it(`should run afterCreateCol hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2411,14 +2353,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterCreateCol')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterCreateCol')).toBe('test'); }); - })); + }); - it(`should run afterCreateRow hook defined in settings`, async(() => { + it(`should run afterCreateRow hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2432,14 +2374,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterCreateRow')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterCreateRow')).toBe('test'); }); - })); + }); - it(`should run afterCut hook defined in settings`, async(() => { + it(`should run afterCut hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2453,14 +2395,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterCut')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterCut')).toBe('test'); }); - })); + }); - it(`should run afterDeselect hook defined in settings`, async(() => { + it(`should run afterDeselect hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2474,14 +2416,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterDeselect')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterDeselect')).toBe('test'); }); - })); + }); - it(`should run afterDestroy hook defined in settings`, async(() => { + it(`should run afterDestroy hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2495,14 +2437,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterDestroy')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterDestroy')).toBe('test'); }); - })); + }); - it(`should run afterDetachChild hook defined in settings`, async(() => { + it(`should run afterDetachChild hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2516,14 +2458,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterDetachChild')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterDetachChild')).toBe('test'); }); - })); + }); - it(`should run afterDocumentKeyDown hook defined in settings`, async(() => { + it(`should run afterDocumentKeyDown hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2537,14 +2479,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterDocumentKeyDown')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterDocumentKeyDown')).toBe('test'); }); - })); + }); - it(`should run afterDropdownMenuDefaultOptions hook defined in settings`, async(() => { + it(`should run afterDropdownMenuDefaultOptions hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2558,14 +2500,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterDropdownMenuDefaultOptions')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterDropdownMenuDefaultOptions')).toBe('test'); }); - })); + }); - it(`should run afterDropdownMenuHide hook defined in settings`, async(() => { + it(`should run afterDropdownMenuHide hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2579,14 +2521,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterDropdownMenuHide')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterDropdownMenuHide')).toBe('test'); }); - })); + }); - it(`should run afterDropdownMenuShow hook defined in settings`, async(() => { + it(`should run afterDropdownMenuShow hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2600,14 +2542,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterDropdownMenuShow')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterDropdownMenuShow')).toBe('test'); }); - })); + }); - it(`should run afterFilter hook defined in settings`, async(() => { + it(`should run afterFilter hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2621,14 +2563,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterFilter')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterFilter')).toBe('test'); }); - })); + }); - it(`should run afterGetCellMeta hook defined in settings`, async(() => { + it(`should run afterGetCellMeta hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2642,14 +2584,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterGetCellMeta')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterGetCellMeta')).toBe('test'); }); - })); + }); - it(`should run afterGetColHeader hook defined in settings`, async(() => { + it(`should run afterGetColHeader hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2657,41 +2599,47 @@ describe('hot-table', () => { const app = fixture.componentInstance; app.prop['settings'] = { + colHeaders: true, afterGetColHeader: function() { return 'test'; } } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterGetColHeader')).toBe('test'); + + const elem = fixture.nativeElement; + const TH = elem.querySelector('th'); + + expect(app.getHotInstance(app.id).runHooks('afterGetColHeader', 0, TH)).toBe('test'); }); - })); + }); - it(`should run afterGetColumnHeaderRenderers hook defined in settings`, async(() => { + it(`should run afterGetColumnHeaderRenderers hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { fixture = TestBed.createComponent(TestComponent); const app = fixture.componentInstance; + let afterGetColumnHeaderRenderersCount = 0; app.prop['settings'] = { afterGetColumnHeaderRenderers: function() { - return 'test'; + afterGetColumnHeaderRenderersCount++; } } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterGetColumnHeaderRenderers')).toBe('test'); + expect(afterGetColumnHeaderRenderersCount).toBeGreaterThan(0); }); - })); + }); - it(`should run afterGetRowHeader hook defined in settings`, async(() => { + it(`should run afterGetRowHeader hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2705,14 +2653,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterGetRowHeader')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterGetRowHeader')).toBe('test'); }); - })); + }); - it(`should run afterGetRowHeaderRenderers hook defined in settings`, async(() => { + it(`should run afterGetRowHeaderRenderers hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2726,14 +2674,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterGetRowHeaderRenderers')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterGetRowHeaderRenderers')).toBe('test'); }); - })); + }); - it(`should run afterInit hook defined in settings`, async(() => { + it(`should run afterInit hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2747,14 +2695,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterInit')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterInit')).toBe('test'); }); - })); + }); - it(`should run afterLoadData hook defined in settings`, async(() => { + it(`should run afterLoadData hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2768,14 +2716,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterLoadData')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterLoadData')).toBe('test'); }); - })); + }); - it(`should run afterModifyTransformEnd hook defined in settings`, async(() => { + it(`should run afterModifyTransformEnd hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2789,14 +2737,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterModifyTransformEnd')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterModifyTransformEnd')).toBe('test'); }); - })); + }); - it(`should run afterModifyTransformStart hook defined in settings`, async(() => { + it(`should run afterModifyTransformStart hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2810,14 +2758,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterModifyTransformStart')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterModifyTransformStart')).toBe('test'); }); - })); + }); - it(`should run afterMomentumScroll hook defined in settings`, async(() => { + it(`should run afterMomentumScroll hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2831,14 +2779,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterMomentumScroll')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterMomentumScroll')).toBe('test'); }); - })); + }); - it(`should run afterOnCellCornerDblClick hook defined in settings`, async(() => { + it(`should run afterOnCellCornerDblClick hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2851,15 +2799,15 @@ describe('hot-table', () => { } } fixture.detectChanges(); - app.hot('hot').selectCell(0, 0); - expect(app.hot('hot').runHooks('afterOnCellCornerDblClick')).toBe('test'); + app.getHotInstance(app.id).selectCell(0, 0); + expect(app.getHotInstance(app.id).runHooks('afterOnCellCornerDblClick')).toBe('test'); }); - })); + }); - it(`should run afterOnCellCornerMouseDown hook defined in settings`, async(() => { + it(`should run afterOnCellCornerMouseDown hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2873,14 +2821,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterOnCellCornerMouseDown')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterOnCellCornerMouseDown')).toBe('test'); }); - })); + }); - it(`should run afterOnCellMouseDown hook defined in settings`, async(() => { + it(`should run afterOnCellMouseDown hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2894,14 +2842,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterOnCellMouseDown')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterOnCellMouseDown')).toBe('test'); }); - })); + }); - it(`should run afterOnCellMouseOver hook defined in settings`, async(() => { + it(`should run afterOnCellMouseOver hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2915,14 +2863,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterOnCellMouseOver')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterOnCellMouseOver')).toBe('test'); }); - })); + }); - it(`should run afterOnCellMouseOut hook defined in settings`, async(() => { + it(`should run afterOnCellMouseOut hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2936,14 +2884,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterOnCellMouseOut')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterOnCellMouseOut')).toBe('test'); }); - })); + }); - it(`should run afterPluginsInitialized hook defined in settings`, async(() => { + it(`should run afterPluginsInitialized hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2957,14 +2905,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterPluginsInitialized')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterPluginsInitialized')).toBe('test'); }); - })); + }); - it(`should run afterRedo hook defined in settings`, async(() => { + it(`should run afterRedo hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2978,14 +2926,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterRedo')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterRedo')).toBe('test'); }); - })); + }); - it(`should run afterRemoveCol hook defined in settings`, async(() => { + it(`should run afterRemoveCol hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -2999,14 +2947,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterRemoveCol')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterRemoveCol')).toBe('test'); }); - })); + }); - it(`should run afterRemoveRow hook defined in settings`, async(() => { + it(`should run afterRemoveRow hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3020,14 +2968,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterRemoveRow')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterRemoveRow')).toBe('test'); }); - })); + }); - it(`should run afterRender hook defined in settings`, async(() => { + it(`should run afterRender hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3041,14 +2989,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterRender')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterRender')).toBe('test'); }); - })); + }); - it(`should run afterRenderer hook defined in settings`, async(() => { + it(`should run afterRenderer hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3062,14 +3010,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterRenderer')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterRenderer')).toBe('test'); }); - })); + }); - it(`should run afterRowMove hook defined in settings`, async(() => { + it(`should run afterRowMove hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3083,14 +3031,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterRowMove')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterRowMove')).toBe('test'); }); - })); + }); - it(`should run afterRowResize hook defined in settings`, async(() => { + it(`should run afterRowResize hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3104,14 +3052,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterRowResize')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterRowResize')).toBe('test'); }); - })); + }); - it(`should run afterScrollHorizontally hook defined in settings`, async(() => { + it(`should run afterScrollHorizontally hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3125,14 +3073,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterScrollHorizontally')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterScrollHorizontally')).toBe('test'); }); - })); + }); - it(`should run afterScrollVertically hook defined in settings`, async(() => { + it(`should run afterScrollVertically hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3146,14 +3094,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterScrollVertically')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterScrollVertically')).toBe('test'); }); - })); + }); - it(`should run afterSelection hook defined in settings`, async(() => { + it(`should run afterSelection hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3167,14 +3115,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterSelection')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterSelection')).toBe('test'); }); - })); + }); - it(`should run afterSelectionByProp hook defined in settings`, async(() => { + it(`should run afterSelectionByProp hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3188,14 +3136,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterSelectionByProp')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterSelectionByProp')).toBe('test'); }); - })); + }); - it(`should run afterSelectionEnd hook defined in settings`, async(() => { + it(`should run afterSelectionEnd hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3209,14 +3157,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterSelectionEnd')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterSelectionEnd')).toBe('test'); }); - })); + }); - it(`should run afterSelectionEndByProp hook defined in settings`, async(() => { + it(`should run afterSelectionEndByProp hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3230,14 +3178,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterSelectionEndByProp')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterSelectionEndByProp')).toBe('test'); }); - })); + }); - it(`should run afterSetCellMeta hook defined in settings`, async(() => { + it(`should run afterSetCellMeta hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3251,14 +3199,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterSetCellMeta')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterSetCellMeta')).toBe('test'); }); - })); + }); - it(`should run afterSetDataAtCell hook defined in settings`, async(() => { + it(`should run afterSetDataAtCell hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3272,14 +3220,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterSetDataAtCell')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterSetDataAtCell')).toBe('test'); }); - })); + }); - it(`should run afterSetDataAtRowProp hook defined in settings`, async(() => { + it(`should run afterSetDataAtRowProp hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3293,14 +3241,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterSetDataAtRowProp')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterSetDataAtRowProp')).toBe('test'); }); - })); + }); - it(`should run afterTrimRow hook defined in settings`, async(() => { + it(`should run afterTrimRow hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3314,14 +3262,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterTrimRow')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterTrimRow')).toBe('test'); }); - })); + }); - it(`should run afterUndo hook defined in settings`, async(() => { + it(`should run afterUndo hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3335,14 +3283,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterUndo')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterUndo')).toBe('test'); }); - })); + }); - it(`should run afterUntrimRow hook defined in settings`, async(() => { + it(`should run afterUntrimRow hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3356,14 +3304,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterUntrimRow')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterUntrimRow')).toBe('test'); }); - })); + }); - it(`should run afterUpdateSettings hook defined in settings`, async(() => { + it(`should run afterUpdateSettings hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3377,14 +3325,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterUpdateSettings')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterUpdateSettings')).toBe('test'); }); - })); + }); - it(`should run afterValidate hook defined in settings`, async(() => { + it(`should run afterValidate hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3398,14 +3346,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterValidate')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterValidate')).toBe('test'); }); - })); + }); - it(`should run afterViewportColumnCalculatorOverride hook defined in settings`, async(() => { + it(`should run afterViewportColumnCalculatorOverride hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3419,14 +3367,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterViewportColumnCalculatorOverride')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterViewportColumnCalculatorOverride')).toBe('test'); }); - })); + }); - it(`should run afterViewportRowCalculatorOverride hook defined in settings`, async(() => { + it(`should run afterViewportRowCalculatorOverride hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3440,14 +3388,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('afterViewportRowCalculatorOverride')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('afterViewportRowCalculatorOverride')).toBe('test'); }); - })); + }); - it(`should run beforeAddChild hook defined in settings`, async(() => { + it(`should run beforeAddChild hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3461,14 +3409,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeAddChild')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeAddChild')).toBe('test'); }); - })); + }); - it(`should run beforeAutofill hook defined in settings`, async(() => { + it(`should run beforeAutofill hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3482,14 +3430,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeAutofill')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeAutofill')).toBe('test'); }); - })); + }); - it(`should run beforeAutofillInsidePopulate hook defined in settings`, async(() => { + it(`should run beforeAutofillInsidePopulate hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3503,14 +3451,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeAutofillInsidePopulate')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeAutofillInsidePopulate')).toBe('test'); }); - })); + }); - it(`should run beforeCellAlignment hook defined in settings`, async(() => { + it(`should run beforeCellAlignment hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3524,14 +3472,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeCellAlignment')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeCellAlignment')).toBe('test'); }); - })); + }); - it(`should run beforeChange hook defined in settings`, async(() => { + it(`should run beforeChange hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3545,14 +3493,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeChange', [[0, 0, '', '']])).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeChange', [[0, 0, '', '']])).toBe('test'); }); - })); + }); - it(`should run beforeChangeRender hook defined in settings`, async(() => { + it(`should run beforeChangeRender hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3566,14 +3514,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeChangeRender')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeChangeRender')).toBe('test'); }); - })); + }); - it(`should run beforeColumnMove hook defined in settings`, async(() => { + it(`should run beforeColumnMove hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3587,14 +3535,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeColumnMove')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeColumnMove')).toBe('test'); }); - })); + }); - it(`should run beforeColumnResize hook defined in settings`, async(() => { + it(`should run beforeColumnResize hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3608,14 +3556,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeColumnResize')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeColumnResize')).toBe('test'); }); - })); + }); - it(`should run beforeColumnSort hook defined in settings`, async(() => { + it(`should run beforeColumnSort hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3629,14 +3577,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeColumnSort')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeColumnSort')).toBe('test'); }); - })); + }); - it(`should run beforeContextMenuSetItems hook defined in settings`, async(() => { + it(`should run beforeContextMenuSetItems hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3650,14 +3598,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeContextMenuSetItems')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeContextMenuSetItems')).toBe('test'); }); - })); + }); - it(`should run beforeCopy hook defined in settings`, async(() => { + it(`should run beforeCopy hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3671,14 +3619,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeCopy')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeCopy')).toBe('test'); }); - })); + }); - it(`should run beforeCreateCol hook defined in settings`, async(() => { + it(`should run beforeCreateCol hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3692,14 +3640,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeCreateCol')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeCreateCol')).toBe('test'); }); - })); + }); - it(`should run beforeCreateRow hook defined in settings`, async(() => { + it(`should run beforeCreateRow hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3713,14 +3661,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeCreateRow')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeCreateRow')).toBe('test'); }); - })); + }); - it(`should run beforeCut hook defined in settings`, async(() => { + it(`should run beforeCut hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3734,14 +3682,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeCut')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeCut')).toBe('test'); }); - })); + }); - it(`should run beforeDetachChild hook defined in settings`, async(() => { + it(`should run beforeDetachChild hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3755,14 +3703,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeDetachChild')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeDetachChild')).toBe('test'); }); - })); + }); - it(`should run beforeDrawBorders hook defined in settings`, async(() => { + it(`should run beforeDrawBorders hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3776,14 +3724,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeDrawBorders')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeDrawBorders')).toBe('test'); }); - })); + }); - it(`should run beforeDropdownMenuSetItems hook defined in settings`, async(() => { + it(`should run beforeDropdownMenuSetItems hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3797,14 +3745,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeDropdownMenuSetItems')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeDropdownMenuSetItems')).toBe('test'); }); - })); + }); - it(`should run beforeFilter hook defined in settings`, async(() => { + it(`should run beforeFilter hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3818,14 +3766,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeFilter')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeFilter')).toBe('test'); }); - })); + }); - it(`should run beforeGetCellMeta hook defined in settings`, async(() => { + it(`should run beforeGetCellMeta hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3839,14 +3787,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeGetCellMeta')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeGetCellMeta')).toBe('test'); }); - })); + }); - it(`should run beforeInit hook defined in settings`, async(() => { + it(`should run beforeInit hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3860,14 +3808,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeInit')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeInit')).toBe('test'); }); - })); + }); - it(`should run beforeInitWalkontable hook defined in settings`, async(() => { + it(`should run beforeInitWalkontable hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3881,14 +3829,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeInitWalkontable')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeInitWalkontable')).toBe('test'); }); - })); + }); - it(`should run beforeKeyDown hook defined in settings`, async(() => { + it(`should run beforeKeyDown hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3902,14 +3850,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeKeyDown')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeKeyDown')).toBe('test'); }); - })); + }); - it(`should run beforeOnCellMouseDown hook defined in settings`, async(() => { + it(`should run beforeOnCellMouseDown hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3923,14 +3871,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeOnCellMouseDown')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeOnCellMouseDown')).toBe('test'); }); - })); + }); - it(`should run beforeOnCellMouseOut hook defined in settings`, async(() => { + it(`should run beforeOnCellMouseOut hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3944,14 +3892,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeOnCellMouseOut')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeOnCellMouseOut')).toBe('test'); }); - })); + }); - it(`should run beforeOnCellMouseOver hook defined in settings`, async(() => { + it(`should run beforeOnCellMouseOver hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3965,14 +3913,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeOnCellMouseOver')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeOnCellMouseOver')).toBe('test'); }); - })); + }); - it(`should run beforePaste hook defined in settings`, async(() => { + it(`should run beforePaste hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -3986,14 +3934,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforePaste')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforePaste')).toBe('test'); }); - })); + }); - it(`should run beforeRedo hook defined in settings`, async(() => { + it(`should run beforeRedo hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4007,14 +3955,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeRedo')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeRedo')).toBe('test'); }); - })); + }); - it(`should run beforeRemoveCol hook defined in settings`, async(() => { + it(`should run beforeRemoveCol hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4028,14 +3976,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeRemoveCol')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeRemoveCol')).toBe('test'); }); - })); + }); - it(`should run beforeRemoveRow hook defined in settings`, async(() => { + it(`should run beforeRemoveRow hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4049,14 +3997,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeRemoveRow')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeRemoveRow')).toBe('test'); }); - })); + }); - it(`should run beforeRender hook defined in settings`, async(() => { + it(`should run beforeRender hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4070,14 +4018,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeRender')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeRender')).toBe('test'); }); - })); + }); - it(`should run beforeRenderer hook defined in settings`, async(() => { + it(`should run beforeRenderer hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4091,14 +4039,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeRenderer')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeRenderer')).toBe('test'); }); - })); + }); - it(`should run beforeRowMove hook defined in settings`, async(() => { + it(`should run beforeRowMove hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4112,14 +4060,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeRowMove')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeRowMove')).toBe('test'); }); - })); + }); - it(`should run beforeRowResize hook defined in settings`, async(() => { + it(`should run beforeRowResize hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4133,14 +4081,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeRowResize')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeRowResize')).toBe('test'); }); - })); + }); - it(`should run beforeSetRangeEnd hook defined in settings`, async(() => { + it(`should run beforeSetRangeEnd hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4154,14 +4102,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeSetRangeEnd')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeSetRangeEnd')).toBe('test'); }); - })); + }); - it(`should run beforeSetRangeStart hook defined in settings`, async(() => { + it(`should run beforeSetRangeStart hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4175,14 +4123,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeSetRangeStart')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeSetRangeStart')).toBe('test'); }); - })); + }); - it(`should run beforeStretchingColumnWidth hook defined in settings`, async(() => { + it(`should run beforeStretchingColumnWidth hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4196,14 +4144,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeStretchingColumnWidth')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeStretchingColumnWidth')).toBe('test'); }); - })); + }); - it(`should run beforeTouchScroll hook defined in settings`, async(() => { + it(`should run beforeTouchScroll hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4217,14 +4165,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeTouchScroll')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeTouchScroll')).toBe('test'); }); - })); + }); - it(`should run beforeUndo hook defined in settings`, async(() => { + it(`should run beforeUndo hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4238,14 +4186,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeUndo')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeUndo')).toBe('test'); }); - })); + }); - it(`should run beforeValidate hook defined in settings`, async(() => { + it(`should run beforeValidate hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4259,14 +4207,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeValidate')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeValidate')).toBe('test'); }); - })); + }); - it(`should run beforeValueRender hook defined in settings`, async(() => { + it(`should run beforeValueRender hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4280,14 +4228,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('beforeValueRender')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('beforeValueRender')).toBe('test'); }); - })); + }); - it(`should run construct hook defined in settings`, async(() => { + it(`should run construct hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4301,14 +4249,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('construct')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('construct')).toBe('test'); }); - })); + }); - it(`should run hiddenColumn hook defined in settings`, async(() => { + it(`should run hiddenColumn hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4322,14 +4270,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('hiddenColumn')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('hiddenColumn')).toBe('test'); }); - })); + }); - it(`should run hiddenRow hook defined in settings`, async(() => { + it(`should run hiddenRow hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4343,14 +4291,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('hiddenRow')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('hiddenRow')).toBe('test'); }); - })); + }); - it(`should run init hook defined in settings`, async(() => { + it(`should run init hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4364,14 +4312,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('init')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('init')).toBe('test'); }); - })); + }); - it(`should run manualRowHeights hook defined in settings`, async(() => { + it(`should run manualRowHeights hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4385,14 +4333,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('manualRowHeights')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('manualRowHeights')).toBe('test'); }); - })); + }); - it(`should run modifyAutofillRange hook defined in settings`, async(() => { + it(`should run modifyAutofillRange hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4406,14 +4354,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyAutofillRange')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyAutofillRange')).toBe('test'); }); - })); + }); - it(`should run modifyCol hook defined in settings`, async(() => { + it(`should run modifyCol hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4427,14 +4375,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyCol')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyCol')).toBe('test'); }); - })); + }); - it(`should run modifyColHeader hook defined in settings`, async(() => { + it(`should run modifyColHeader hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4448,14 +4396,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyColHeader')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyColHeader')).toBe('test'); }); - })); + }); - it(`should run modifyColumnHeaderHeight hook defined in settings`, async(() => { + it(`should run modifyColumnHeaderHeight hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4469,14 +4417,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyColumnHeaderHeight')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyColumnHeaderHeight')).toBe('test'); }); - })); + }); - it(`should run modifyColWidth hook defined in settings`, async(() => { + it(`should run modifyColWidth hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4490,14 +4438,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyColWidth')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyColWidth')).toBe('test'); }); - })); + }); - it(`should run modifyCopyableRange hook defined in settings`, async(() => { + it(`should run modifyCopyableRange hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4511,14 +4459,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyCopyableRange')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyCopyableRange')).toBe('test'); }); - })); + }); - it(`should run modifyData hook defined in settings`, async(() => { + it(`should run modifyData hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4532,14 +4480,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyData')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyData')).toBe('test'); }); - })); + }); - it(`should run modifyRow hook defined in settings`, async(() => { + it(`should run modifyRow hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4553,14 +4501,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyRow')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyRow')).toBe('test'); }); - })); + }); - it(`should run modifyRowHeader hook defined in settings`, async(() => { + it(`should run modifyRowHeader hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4574,14 +4522,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyRowHeader')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyRowHeader')).toBe('test'); }); - })); + }); - it(`should run modifyRowHeaderWidth hook defined in settings`, async(() => { + it(`should run modifyRowHeaderWidth hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4595,14 +4543,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyRowHeaderWidth')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyRowHeaderWidth')).toBe('test'); }); - })); + }); - it(`should run modifyRowHeight hook defined in settings`, async(() => { + it(`should run modifyRowHeight hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4616,14 +4564,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyRowHeight')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyRowHeight')).toBe('test'); }); - })); + }); - it(`should run modifyRowData hook defined in settings`, async(() => { + it(`should run modifyRowData hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4637,14 +4585,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyRowData')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyRowData')).toBe('test'); }); - })); + }); - it(`should run modifyTransformEnd hook defined in settings`, async(() => { + it(`should run modifyTransformEnd hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4658,14 +4606,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyTransformEnd')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyTransformEnd')).toBe('test'); }); - })); + }); - it(`should run modifyTransformStart hook defined in settings`, async(() => { + it(`should run modifyTransformStart hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4679,14 +4627,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('modifyTransformStart')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('modifyTransformStart')).toBe('test'); }); - })); + }); - it(`should run persistentStateLoad hook defined in settings`, async(() => { + it(`should run persistentStateLoad hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4700,14 +4648,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('persistentStateLoad')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('persistentStateLoad')).toBe('test'); }); - })); + }); - it(`should run persistentStateReset hook defined in settings`, async(() => { + it(`should run persistentStateReset hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4721,14 +4669,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('persistentStateReset')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('persistentStateReset')).toBe('test'); }); - })); + }); - it(`should run persistentStateSave hook defined in settings`, async(() => { + it(`should run persistentStateSave hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4742,14 +4690,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('persistentStateSave')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('persistentStateSave')).toBe('test'); }); - })); + }); - it(`should run skipLengthCache hook defined in settings`, async(() => { + it(`should run skipLengthCache hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4763,14 +4711,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('skipLengthCache')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('skipLengthCache')).toBe('test'); }); - })); + }); - it(`should run unmodifyCol hook defined in settings`, async(() => { + it(`should run unmodifyCol hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4784,14 +4732,14 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('unmodifyCol')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('unmodifyCol')).toBe('test'); }); - })); + }); - it(`should run unmodifyRow hook defined in settings`, async(() => { + it(`should run unmodifyRow hook defined in settings`, () => { TestBed.overrideComponent(TestComponent, { set: { - template: `` + template: `` } }); TestBed.compileComponents().then(() => { @@ -4805,8 +4753,8 @@ describe('hot-table', () => { } fixture.detectChanges(); - expect(app.hot('hot').runHooks('unmodifyRow')).toBe('test'); + expect(app.getHotInstance(app.id).runHooks('unmodifyRow')).toBe('test'); }); - })); + }); }); -}); \ No newline at end of file +}); diff --git a/src/app/test.component.ts b/src/app/test.component.ts new file mode 100644 index 0000000..134b7cd --- /dev/null +++ b/src/app/test.component.ts @@ -0,0 +1,21 @@ +import { Component } from '@angular/core'; +import * as Handsontable from 'handsontable-pro'; + +import { HotTableRegisterer } from '../../dist/pro'; + +@Component({ + selector: 'app-root', + template: `` +}) +export class TestComponent { + id: string = 'hot'; + public prop: object = {}; + + constructor ( + private _registerer: HotTableRegisterer + ) { } + + getHotInstance(instance: string): Handsontable { + return this._registerer.getInstance(instance); + }; +} diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts new file mode 100644 index 0000000..3612073 --- /dev/null +++ b/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/src/environments/environment.ts b/src/environments/environment.ts new file mode 100644 index 0000000..b7f639a --- /dev/null +++ b/src/environments/environment.ts @@ -0,0 +1,8 @@ +// The file contents for the current environment will overwrite these during build. +// The build system defaults to the dev environment which uses `environment.ts`, but if you do +// `ng build --env=prod` then `environment.prod.ts` will be used instead. +// The list of which env maps to which file can be found in `.angular-cli.json`. + +export const environment = { + production: false +}; diff --git a/src/favicon.ico b/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8081c7ceaf2be08bf59010158c586170d9d2d517 GIT binary patch literal 5430 zcmc(je{54#6vvCoAI3i*G5%$U7!sA3wtMZ$fH6V9C`=eXGJb@R1%(I_{vnZtpD{6n z5Pl{DmxzBDbrB>}`90e12m8T*36WoeDLA&SD_hw{H^wM!cl_RWcVA!I+x87ee975; z@4kD^=bYPn&pmG@(+JZ`rqQEKxW<}RzhW}I!|ulN=fmjVi@x{p$cC`)5$a!)X&U+blKNvN5tg=uLvuLnuqRM;Yc*swiexsoh#XPNu{9F#c`G zQLe{yWA(Y6(;>y|-efAy11k<09(@Oo1B2@0`PtZSkqK&${ zgEY}`W@t{%?9u5rF?}Y7OL{338l*JY#P!%MVQY@oqnItpZ}?s z!r?*kwuR{A@jg2Chlf0^{q*>8n5Ir~YWf*wmsh7B5&EpHfd5@xVaj&gqsdui^spyL zB|kUoblGoO7G(MuKTfa9?pGH0@QP^b#!lM1yHWLh*2iq#`C1TdrnO-d#?Oh@XV2HK zKA{`eo{--^K&MW66Lgsktfvn#cCAc*(}qsfhrvOjMGLE?`dHVipu1J3Kgr%g?cNa8 z)pkmC8DGH~fG+dlrp(5^-QBeEvkOvv#q7MBVLtm2oD^$lJZx--_=K&Ttd=-krx(Bb zcEoKJda@S!%%@`P-##$>*u%T*mh+QjV@)Qa=Mk1?#zLk+M4tIt%}wagT{5J%!tXAE;r{@=bb%nNVxvI+C+$t?!VJ@0d@HIyMJTI{vEw0Ul ze(ha!e&qANbTL1ZneNl45t=#Ot??C0MHjjgY8%*mGisN|S6%g3;Hlx#fMNcL<87MW zZ>6moo1YD?P!fJ#Jb(4)_cc50X5n0KoDYfdPoL^iV`k&o{LPyaoqMqk92wVM#_O0l z09$(A-D+gVIlq4TA&{1T@BsUH`Bm=r#l$Z51J-U&F32+hfUP-iLo=jg7Xmy+WLq6_tWv&`wDlz#`&)Jp~iQf zZP)tu>}pIIJKuw+$&t}GQuqMd%Z>0?t%&BM&Wo^4P^Y z)c6h^f2R>X8*}q|bblAF?@;%?2>$y+cMQbN{X$)^R>vtNq_5AB|0N5U*d^T?X9{xQnJYeU{ zoZL#obI;~Pp95f1`%X3D$Mh*4^?O?IT~7HqlWguezmg?Ybq|7>qQ(@pPHbE9V?f|( z+0xo!#m@Np9PljsyxBY-UA*{U*la#8Wz2sO|48_-5t8%_!n?S$zlGe+NA%?vmxjS- zHE5O3ZarU=X}$7>;Okp(UWXJxI%G_J-@IH;%5#Rt$(WUX?6*Ux!IRd$dLP6+SmPn= z8zjm4jGjN772R{FGkXwcNv8GBcZI#@Y2m{RNF_w8(Z%^A*!bS*!}s6sh*NnURytky humW;*g7R+&|Ledvc- { - if (AVAILABLE_HOOKS.indexOf(key) > -1) { - mergedSettings[key] = (p1, p2, p3, p4, p5, p6) => { - return component._ngZone.run(() => { - return component['settings'][key](p1, p2, p3, p4, p5, p6); - }) - }; - } else { - mergedSettings[key] = component['settings'][key]; - } - }); - } - - AVAILABLE_OPTIONS.forEach((key) => { - let option = component[key]; - - if (option !== void 0) { - mergedSettings[key] = option; - } - }); - - AVAILABLE_HOOKS.forEach((key) => { - let hook = component[key]; - - if (hook && hook.observers.length > 0) { - mergedSettings[key] = (p1, p2, p3, p4, p5, p6) => { - component._ngZone.run(() => { - component[key].emit([p1, p2, p3, p4, p5, p6]); - }); - }; - } - }); - - return mergedSettings; - } - - prepareChanges(changes: SimpleChanges): object { - let result: object = {}; - const parameters: string[] = Object.keys(changes); - - parameters.forEach((param) => { - if (changes.hasOwnProperty(param)) { - result[param] = changes[param].currentValue; - } - }); - - return result; - } -} diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..191f74e --- /dev/null +++ b/src/index.html @@ -0,0 +1,14 @@ + + + + + NgPackaged + + + + + + + Loading... + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..a9ca1ca --- /dev/null +++ b/src/main.ts @@ -0,0 +1,11 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/src/polyfills.ts b/src/polyfills.ts new file mode 100644 index 0000000..bc94e7a --- /dev/null +++ b/src/polyfills.ts @@ -0,0 +1,72 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following to support `@angular/animation`. */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + + +/** Evergreen browsers require these. **/ +import 'core-js/es6/reflect'; +import 'core-js/es7/reflect'; + + +/** ALL Firefox browsers require the following to support `@angular/animation`. **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + + + +/*************************************************************************************************** + * Zone JS is required by Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ + +/** + * Date, currency, decimal and percent pipes. + * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 + */ +// import 'intl'; // Run `npm install --save intl`. +/** + * Need to import at least one locale-data with intl. + */ +// import 'intl/locale-data/jsonp/en'; diff --git a/src/styles.css b/src/styles.css new file mode 100644 index 0000000..cdda508 --- /dev/null +++ b/src/styles.css @@ -0,0 +1,2 @@ +/* You can add global styles to this file, and also import other style files */ +@import '~handsontable-pro/dist/handsontable.full.css'; \ No newline at end of file diff --git a/src/test.ts b/src/test.ts new file mode 100644 index 0000000..9bf7226 --- /dev/null +++ b/src/test.ts @@ -0,0 +1,32 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/long-stack-trace-zone'; +import 'zone.js/dist/proxy.js'; +import 'zone.js/dist/sync-test'; +import 'zone.js/dist/jasmine-patch'; +import 'zone.js/dist/async-test'; +import 'zone.js/dist/fake-async-test'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any. +declare var __karma__: any; +declare var require: any; + +// Prevent Karma from running prematurely. +__karma__.loaded = function () {}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); +// Finally, start Karma to run the tests. +__karma__.start(); diff --git a/src/tsconfig.app.json b/src/tsconfig.app.json new file mode 100644 index 0000000..902005b --- /dev/null +++ b/src/tsconfig.app.json @@ -0,0 +1,24 @@ +{ + "extends": "../tsconfig.json", + "angularCompilerOptions": { + "paths": { + "angular-handsontable": ["../lib/ce/src/public_api.ts"], + "angular-handsontable/pro": ["../lib/pro/src/public_api.ts"] + } + }, + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "es2015", + "baseUrl": "", + "types": [], + "paths": { + "angular-handsontable": ["../lib/ce/src/public_api.ts"], + "angular-handsontable/pro": ["../lib/pro/src/public_api.ts"] + } + }, + "exclude": [ + "test.ts", + "**/*.spec.ts", + "app/test.component.ts" + ] +} diff --git a/src/tsconfig.packages.json b/src/tsconfig.packages.json new file mode 100644 index 0000000..eee5fe8 --- /dev/null +++ b/src/tsconfig.packages.json @@ -0,0 +1,24 @@ +{ + "extends": "../tsconfig.json", + "angularCompilerOptions": { + "paths": { + "angular-handsontable": ["../dist/ce"], + "angular-handsontable/pro": ["../dist/pro"] + } + }, + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "es2015", + "baseUrl": "", + "types": [], + "paths": { + "angular-handsontable": ["../dist/ce"], + "angular-handsontable/pro": ["../dist/pro"] + } + }, + "exclude": [ + "test.ts", + "**/*.spec.ts", + "app/test.component.ts" + ] +} diff --git a/src/tsconfig.spec.json b/src/tsconfig.spec.json new file mode 100644 index 0000000..80a97dd --- /dev/null +++ b/src/tsconfig.spec.json @@ -0,0 +1,24 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "module": "commonjs", + "target": "es5", + "baseUrl": "", + "types": [ + "jasmine", + "node" + ], + "paths": { + "angular-handsontable": ["../dist"], + "angular-handsontable/pro": ["../dist/pro"] + } + }, + "files": [ + "test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/src/typings.d.ts b/src/typings.d.ts new file mode 100644 index 0000000..ef5c7bd --- /dev/null +++ b/src/typings.d.ts @@ -0,0 +1,5 @@ +/* SystemJS module definition */ +declare var module: NodeModule; +interface NodeModule { + id: string; +} diff --git a/tests/01.test.component.spec.ts b/tests/01.test.component.spec.ts deleted file mode 100644 index 7e216f7..0000000 --- a/tests/01.test.component.spec.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { DebugElement } from '@angular/core'; -import { async, TestBed, ComponentFixture } from '@angular/core/testing'; - -import { TestComponent } from './test.component'; -import { TestModule } from './test.module'; - -import Handsontable from 'handsontable'; - -describe('test-component', () => { - let fixture: ComponentFixture; - - beforeEach(() => { - TestBed.configureTestingModule({ - declarations: [ TestComponent ], - imports: [ TestModule ] - }); - }); - - afterEach(() => { - fixture.destroy(); - }); - - it('should create the app', async(() => { - TestBed.compileComponents().then(() => { - fixture = TestBed.createComponent(TestComponent); - const app = fixture.componentInstance; - - fixture.detectChanges(); - expect(app).toBeTruthy(); - }); - })); -}); \ No newline at end of file diff --git a/tests/test.component.ts b/tests/test.component.ts deleted file mode 100644 index ab622b4..0000000 --- a/tests/test.component.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Component, DebugElement, NgModule } from '@angular/core'; -import Handsontable from 'handsontable'; -import { HotRegisterer } from '../src/hot-registerer.service'; - -@Component({ - selector: 'test-component', - template: ``, - providers: [ HotRegisterer ], -}) -export class TestComponent { - public prop: object = {}; - - hot(instance: string): Handsontable { - return this.hotRegisterer.getInstance(instance); - }; - - constructor(public hotRegisterer: HotRegisterer) { } -} diff --git a/tests/test.module.ts b/tests/test.module.ts deleted file mode 100644 index 60a610c..0000000 --- a/tests/test.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NgModule } from '@angular/core'; - -import { HotTableComponent } from '../src/hot-table.component'; -import { HotColumnComponent } from '../src/hot-column.component'; - -@NgModule({ - declarations: [ HotTableComponent, HotColumnComponent ], - exports: [ HotTableComponent, HotColumnComponent ], -}) - -export class TestModule { } \ No newline at end of file diff --git a/tsconfig.bundles.json b/tsconfig.bundles.json deleted file mode 100644 index af0b71c..0000000 --- a/tsconfig.bundles.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "declaration": true, - "outDir": "tmp", - "target": "es5", - "module": "es2015", - "moduleResolution": "node", - "sourceMap": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "typeRoots": [ - "node_modules/@types" - ], - "lib": ["es2016", "dom"], - "noImplicitAny": false, - "suppressImplicitAnyIndexErrors": true - }, - "compileOnSave": false, - "exclude": [ - "tests/*" - ] -} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index fdfda24..0f54316 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,26 +1,27 @@ { + "compileOnSave": false, "compilerOptions": { - "declaration": true, - "outDir": "dist", - "target": "es5", - "module": "es2015", + "outDir": "./dist/out-tsc", + "baseUrl": "src", + "sourceMap": true, + "declaration": false, "moduleResolution": "node", - "stripInternal": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "types": [], - "lib": ["es2016", "dom"], - "noImplicitAny": false, - "skipLibCheck": true, - "suppressImplicitAnyIndexErrors": true - }, - "compileOnSave": false, - "angularCompilerOptions": { - "annotateForClosureCompiler": true, - "strictMetadataEmit": true, - "skipTemplateCodegen": true + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2016", + "dom" + ], + "paths": { + "angular-handsontable": ["dist/ce"], + "angular-handsontable/pro": ["dist/pro"], + } }, "exclude": [ - "tests/*" + ".ng_build" ] -} \ No newline at end of file +} diff --git a/tslint.json b/tslint.json index dd117b3..a5b697e 100644 --- a/tslint.json +++ b/tslint.json @@ -3,7 +3,6 @@ "node_modules/codelyzer" ], "rules": { - "arrow-return-shorthand": true, "callable-types": true, "class-name": true, "comment-format": [ @@ -46,22 +45,14 @@ ], "no-construct": true, "no-debugger": true, - "no-duplicate-super": true, "no-empty": false, "no-empty-interface": true, "no-eval": true, - "no-inferrable-types": [ - true, - "ignore-params" - ], - "no-misused-new": true, - "no-non-null-assertion": true, "no-shadowed-variable": true, "no-string-literal": false, "no-string-throw": true, "no-switch-case-fall-through": true, "no-trailing-whitespace": true, - "no-unnecessary-initializer": true, "no-unused-expression": true, "no-use-before-declare": true, "no-var-keyword": true, @@ -96,7 +87,6 @@ "variable-declaration": "nospace" } ], - "typeof-compare": true, "unified-signatures": true, "variable-name": false, "whitespace": [ @@ -127,9 +117,6 @@ "use-life-cycle-interface": true, "use-pipe-transform-interface": true, "component-class-suffix": true, - "directive-class-suffix": true, - "no-access-missing-member": true, - "templates-use-public": true, - "invoke-injectable": true + "directive-class-suffix": true } } diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 0b9c3ff..0000000 --- a/webpack.config.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -var webpack = require('webpack'); - -var env = process.env.NODE_ENV; -var configFactory = require('./config/webpack.' + env); - -module.exports = configFactory; \ No newline at end of file From 2f32cfbbd858af2f3af8c111a1ba734c310aaebb Mon Sep 17 00:00:00 2001 From: swistach Date: Fri, 9 Feb 2018 13:10:04 +0100 Subject: [PATCH 2/3] Prerealeas changes --- lib/ce/package.json | 6 +++--- lib/pro/package.json | 6 +++--- package.json | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/ce/package.json b/lib/ce/package.json index 711c0b6..8ef6f74 100644 --- a/lib/ce/package.json +++ b/lib/ce/package.json @@ -1,6 +1,6 @@ { - "name": "@angular-handsontable/ce", - "version": "1.0.0", + "name": "@handsontable/angular", + "version": "1.0.0-beta4", "description": "Official Angular.io directive for Handsontable", "repository": { "type": "git", @@ -36,7 +36,7 @@ "url": "https://github.com/handsontable/angular-handsontable/issues" }, "peerDependencies": { - "handsontable": "0.35.0", + "handsontable": "0.35.1", "zone.js": "^0.8.19" }, "ngPackage": { diff --git a/lib/pro/package.json b/lib/pro/package.json index 0c32a3a..3f8f0aa 100644 --- a/lib/pro/package.json +++ b/lib/pro/package.json @@ -1,6 +1,6 @@ { - "name": "@angular-handsontable/pro", - "version": "1.0.0", + "name": "@handsontable-pro/angular", + "version": "1.0.0-beta4", "description": "Official Angular.io directive for Handsontable", "repository": { "type": "git", @@ -36,7 +36,7 @@ "url": "https://github.com/handsontable/angular-handsontable/issues" }, "peerDependencies": { - "handsontable-pro": "1.15.0", + "handsontable-pro": "1.15.1", "zone.js": "^0.8.19" }, "ngPackage": { diff --git a/package.json b/package.json index 2dee439..0a6ed15 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-handsontable", - "version": "1.0.0-beta4", + "version": "1.0.0-beta3", "description": "Official Angular.io directive for Handsontable", "repository": { "type": "git", From a2575eef4d6e63b12425e43b8ffe881148fd0656 Mon Sep 17 00:00:00 2001 From: swistach Date: Fri, 9 Feb 2018 13:11:13 +0100 Subject: [PATCH 3/3] 1.0.0-beta4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0a6ed15..2dee439 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-handsontable", - "version": "1.0.0-beta3", + "version": "1.0.0-beta4", "description": "Official Angular.io directive for Handsontable", "repository": { "type": "git",