jquery.dgtable 0.5.52 → 0.5.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/jquery.dgtable.cjs.js +5 -1
- package/dist/jquery.dgtable.cjs.js.map +1 -1
- package/dist/jquery.dgtable.cjs.min.js +2 -2
- package/dist/jquery.dgtable.cjs.min.js.map +1 -1
- package/dist/jquery.dgtable.es6.js +5 -1
- package/dist/jquery.dgtable.es6.js.map +1 -1
- package/dist/jquery.dgtable.es6.min.js +2 -2
- package/dist/jquery.dgtable.es6.min.js.map +1 -1
- package/dist/jquery.dgtable.umd.js +6 -2
- package/dist/jquery.dgtable.umd.js.map +1 -1
- package/dist/jquery.dgtable.umd.min.js +2 -2
- package/dist/jquery.dgtable.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/src/index.js +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["node_modules/core-js/internals/global.js","node_modules/core-js/internals/fails.js","node_modules/core-js/internals/descriptors.js","node_modules/core-js/internals/function-call.js","node_modules/core-js/internals/object-property-is-enumerable.js","node_modules/core-js/internals/create-property-descriptor.js","node_modules/core-js/internals/function-uncurry-this.js","node_modules/core-js/internals/classof-raw.js","node_modules/core-js/internals/indexed-object.js","node_modules/core-js/internals/require-object-coercible.js","node_modules/core-js/internals/to-indexed-object.js","node_modules/core-js/internals/is-callable.js","node_modules/core-js/internals/is-object.js","node_modules/core-js/internals/get-built-in.js","node_modules/core-js/internals/object-is-prototype-of.js","node_modules/core-js/internals/engine-user-agent.js","node_modules/core-js/internals/engine-v8-version.js","node_modules/core-js/internals/native-symbol.js","node_modules/core-js/internals/use-symbol-as-uid.js","node_modules/core-js/internals/is-symbol.js","node_modules/core-js/internals/try-to-string.js","node_modules/core-js/internals/a-callable.js","node_modules/core-js/internals/get-method.js","node_modules/core-js/internals/ordinary-to-primitive.js","node_modules/core-js/internals/set-global.js","node_modules/core-js/internals/shared-store.js","node_modules/core-js/internals/shared.js","node_modules/core-js/internals/to-object.js","node_modules/core-js/internals/has-own-property.js","node_modules/core-js/internals/uid.js","node_modules/core-js/internals/well-known-symbol.js","node_modules/core-js/internals/to-primitive.js","node_modules/core-js/internals/to-property-key.js","node_modules/core-js/internals/document-create-element.js","node_modules/core-js/internals/ie8-dom-define.js","node_modules/core-js/internals/object-get-own-property-descriptor.js","node_modules/core-js/internals/v8-prototype-define-bug.js","node_modules/core-js/internals/an-object.js","node_modules/core-js/internals/object-define-property.js","node_modules/core-js/internals/create-non-enumerable-property.js","node_modules/core-js/internals/inspect-source.js","node_modules/core-js/internals/native-weak-map.js","node_modules/core-js/internals/shared-key.js","node_modules/core-js/internals/hidden-keys.js","node_modules/core-js/internals/internal-state.js","node_modules/core-js/internals/function-name.js","node_modules/core-js/internals/redefine.js","node_modules/core-js/internals/to-integer-or-infinity.js","node_modules/core-js/internals/to-absolute-index.js","node_modules/core-js/internals/to-length.js","node_modules/core-js/internals/length-of-array-like.js","node_modules/core-js/internals/array-includes.js","node_modules/core-js/internals/object-keys-internal.js","node_modules/core-js/internals/enum-bug-keys.js","node_modules/core-js/internals/object-get-own-property-names.js","node_modules/core-js/internals/object-get-own-property-symbols.js","node_modules/core-js/internals/own-keys.js","node_modules/core-js/internals/copy-constructor-properties.js","node_modules/core-js/internals/is-forced.js","node_modules/core-js/internals/export.js","node_modules/core-js/internals/to-string-tag-support.js","node_modules/core-js/internals/classof.js","node_modules/core-js/internals/to-string.js","node_modules/core-js/internals/create-property.js","node_modules/core-js/internals/array-slice-simple.js","node_modules/core-js/internals/array-sort.js","node_modules/core-js/internals/array-method-is-strict.js","node_modules/core-js/internals/engine-ff-version.js","node_modules/core-js/internals/engine-is-ie-or-edge.js","node_modules/core-js/internals/engine-webkit-version.js","node_modules/core-js/modules/es.array.sort.js","src/util.js","src/row_collection.js","src/column_collection.js","src/css_util.js","src/SelectionHelper.js","src/by_column_filter.js","src/index.js"],"sourcesContent":["var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var call = Function.prototype.call;\n\nmodule.exports = call.bind ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = bind && bind.bind(call, call);\n\nmodule.exports = bind ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.20.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2022 Denis Pushkarev (zloirock.ru)'\n});\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = items.length;\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) delete array[index++];\n\n return array;\n }\n});\n","'use strict';\r\n\r\nconst indexOf = Array.prototype.indexOf;\r\n\r\nexport const includes = function includes (array, item) {\r\n return indexOf.call(array, item) >= 0;\r\n};\r\n\r\nexport const find = function find (array, predicate) {\r\n for (let i = 0, len = array.length; i >= 0 && i < len; i += 1) {\r\n if (predicate(array[i], i, array))\r\n return array[i];\r\n }\r\n};\r\n\r\nexport const htmlEncode = function htmlEncode (text) {\r\n return text.replace(/&/g, \"&\")\r\n .replace(/</g, \"<\")\r\n .replace(/>/g, \">\")\r\n .replace(/'/g, \"'\")\r\n .replace(/\"/g, \""\")\r\n .replace(/\\n/g, '<br />');\r\n};\r\n","'use strict';\r\n\r\n// Define class RowCollection\r\nfunction RowCollection () {\r\n\r\n // Instantiate an Array. Seems like the `.length = ` of an inherited Array does not work well.\r\n // I will not use the IFRAME solution either in fear of memory leaks, and we're supporting large datasets...\r\n let collection = [];\r\n\r\n // Synthetically set the 'prototype'\r\n Object.assign(collection, RowCollection.prototype);\r\n\r\n // Call initializer\r\n collection.initialize.apply(collection, arguments);\r\n\r\n return collection;\r\n}\r\n\r\n// Inherit Array\r\nRowCollection.prototype = [];\r\n\r\nRowCollection.prototype.initialize = function (options) {\r\n\r\n options = options || {};\r\n\r\n /** @field {string} sortColumn */\r\n this.sortColumn = options.sortColumn == null ? [] : options.sortColumn;\r\n};\r\n\r\n/**\r\n * @param {Object|Object[]} rows - row or array of rows to add to this collection\r\n * @param {number?} at - position to insert rows at\r\n */\r\nRowCollection.prototype.add = function (rows, at) {\r\n let isArray = ('splice' in rows && 'length' in rows), i, len;\r\n if (isArray) {\r\n if (typeof at === 'number') {\r\n for (i = 0, len = rows.length; i < len; i++) {\r\n this.splice(at++, 0, rows[i]);\r\n }\r\n } else {\r\n for (i = 0, len = rows.length; i < len; i++) {\r\n this.push(rows[i]);\r\n }\r\n }\r\n } else {\r\n if (typeof at === 'number') {\r\n this.splice(at, 0, rows);\r\n } else {\r\n this.push(rows);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {Object|Object[]=} rows Row or array of rows to add to this collection\r\n */\r\nRowCollection.prototype.reset = function (rows) {\r\n this.length = 0;\r\n if (rows) {\r\n this.add(rows);\r\n }\r\n};\r\n\r\n/**\r\n * @param {Function} filterFunc - Filtering function\r\n * @param {Object|null} args? - Options to pass to the function\r\n * @returns {RowCollection} success result\r\n */\r\nRowCollection.prototype.filteredCollection = function (filterFunc, args) {\r\n if (filterFunc && args) {\r\n let rows = new RowCollection({ sortColumn: this.sortColumn });\r\n\r\n for (let i = 0, len = this.length, row; i < len; i++) {\r\n row = this[i];\r\n if (filterFunc(row, args)) {\r\n row['__i'] = i;\r\n rows.push(row);\r\n }\r\n }\r\n return rows;\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * @type {function(columnName: string, descending: boolean, defaultComparator: function(a,b):number)|null|undefined}\r\n */\r\nRowCollection.prototype.onComparatorRequired = null;\r\n\r\n/**\r\n * @type {Function|null|undefined}\r\n */\r\nRowCollection.prototype.onSort = null;\r\n\r\nlet nativeSort = RowCollection.prototype.sort;\r\n\r\nfunction getDefaultComparator(column, descending) {\r\n let columnName = column.column;\r\n let comparePath = column.comparePath || columnName;\r\n if (typeof comparePath === 'string') {\r\n comparePath = comparePath.split('.');\r\n }\r\n let pathLength = comparePath.length,\r\n hasPath = pathLength > 1,\r\n i;\r\n\r\n let lessVal = descending ? 1 : -1, moreVal = descending ? -1 : 1;\r\n return function(leftRow, rightRow) {\r\n let leftVal = leftRow[comparePath[0]],\r\n rightVal = rightRow[comparePath[0]];\r\n if (hasPath) {\r\n for (i = 1; i < pathLength; i++) {\r\n leftVal = leftVal && leftVal[comparePath[i]];\r\n rightVal = rightVal && rightVal[comparePath[i]];\r\n }\r\n }\r\n if (leftVal === rightVal) return 0;\r\n if (leftVal == null) return lessVal;\r\n if (rightVal == null) return moreVal;\r\n if (leftVal < rightVal) return lessVal;\r\n return moreVal;\r\n };\r\n}\r\n\r\n/**\r\n * @param {Boolean=false} silent\r\n * @returns {RowCollection} self\r\n */\r\nRowCollection.prototype.sort = function (silent) {\r\n if (this.sortColumn.length) {\r\n let comparators = [], i, comparator;\r\n\r\n for (i = 0; i < this.sortColumn.length; i++) {\r\n comparator = null;\r\n const defaultComparator = getDefaultComparator(this.sortColumn[i], this.sortColumn[i].descending);\r\n if (this.onComparatorRequired) {\r\n comparator = this.onComparatorRequired(this.sortColumn[i].column, this.sortColumn[i].descending, defaultComparator);\r\n }\r\n if (!comparator) {\r\n comparator = defaultComparator;\r\n }\r\n comparators.push(comparator.bind(this));\r\n }\r\n\r\n if (comparators.length === 1) {\r\n nativeSort.call(this, comparators[0]);\r\n } else {\r\n let len = comparators.length,\r\n value;\r\n\r\n comparator = function(leftRow, rightRow) {\r\n for (i = 0; i < len; i++) {\r\n value = comparators[i](leftRow, rightRow);\r\n if (value !== 0) {\r\n return value;\r\n }\r\n }\r\n return value;\r\n };\r\n\r\n nativeSort.call(this, comparator);\r\n }\r\n\r\n if (!silent) {\r\n if (this.onSort) {\r\n this.onSort();\r\n }\r\n }\r\n }\r\n return this;\r\n};\r\n\r\nexport default RowCollection;\r\n","'use strict';\r\n\r\n// Define class RowCollection\r\nfunction ColumnCollection () {\r\n\r\n // Instantiate an Array. Seems like the `.length = ` of an inherited Array does not work well.\r\n // I will not use the IFRAME solution either in fear of memory leaks, and we're supporting large datasets...\r\n let collection = [];\r\n\r\n // Synthetically set the 'prototype'\r\n Object.assign(collection, ColumnCollection.prototype);\r\n\r\n // Call initializer\r\n collection.initialize.apply(collection, arguments);\r\n\r\n return collection;\r\n}\r\n\r\n// Inherit Array\r\nColumnCollection.prototype = [];\r\n\r\nColumnCollection.prototype.initialize = function () {\r\n\r\n};\r\n\r\n/**\r\n * Get the column by this name\r\n * @param {String} column column name\r\n * @returns {Object} the column object\r\n */\r\nColumnCollection.prototype.get = function (column) {\r\n for (let i = 0, len = this.length; i < len; i++) {\r\n if (this[i].name == column) {\r\n return this[i];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Get the index of the column by this name\r\n * @param {String} column column name\r\n * @returns {int} the index of this column\r\n */\r\nColumnCollection.prototype.indexOf = function (column) {\r\n for (let i = 0, len = this.length; i < len; i++) {\r\n if (this[i].name == column) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\n/**\r\n * Get the column by the specified order\r\n * @param {Number} order the column's order\r\n * @returns {Object} the column object\r\n */\r\nColumnCollection.prototype.getByOrder = function (order) {\r\n for (let i = 0, len = this.length; i < len; i++) {\r\n if (this[i].order == order) {\r\n return this[i];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Normalize order\r\n * @returns {ColumnCollection} self\r\n */\r\nColumnCollection.prototype.normalizeOrder = function () {\r\n let ordered = [], i;\r\n for (i = 0; i < this.length; i++) {\r\n ordered.push(this[i]);\r\n }\r\n ordered.sort(function(col1, col2){ return col1.order < col2.order ? -1 : (col1.order > col2.order ? 1 : 0); });\r\n for (i = 0; i < ordered.length; i++) {\r\n ordered[i].order = i;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Get the array of columns, order by the order property\r\n * @returns {Array<Object>} ordered array of columns\r\n */\r\nColumnCollection.prototype.getColumns = function () {\r\n let cols = [];\r\n for (let i = 0, column; i < this.length; i++) {\r\n column = this[i];\r\n cols.push(column);\r\n }\r\n cols.sort((col1, col2) => col1.order < col2.order ? -1 : (col1.order > col2.order ? 1 : 0));\r\n return cols;\r\n};\r\n\r\n/**\r\n * Get the array of visible columns, order by the order property\r\n * @returns {Array<Object>} ordered array of visible columns\r\n */\r\nColumnCollection.prototype.getVisibleColumns = function () {\r\n let cols = [];\r\n for (let i = 0, column; i < this.length; i++) {\r\n column = this[i];\r\n if (column.visible) {\r\n cols.push(column);\r\n }\r\n }\r\n cols.sort((col1, col2) => col1.order < col2.order ? -1 : (col1.order > col2.order ? 1 : 0));\r\n return cols;\r\n};\r\n\r\n/**\r\n * @returns {int} maximum order currently in the array\r\n */\r\nColumnCollection.prototype.getMaxOrder = function () {\r\n let order = 0;\r\n for (let i = 0, column; i < this.length; i++) {\r\n column = this[i];\r\n if (column.order > order) {\r\n order = column.order;\r\n }\r\n }\r\n return order;\r\n};\r\n\r\n/**\r\n * Move a column to a new spot in the collection\r\n * @param {Object} src the column to move\r\n * @param {Object} dest the destination column\r\n * @returns {ColumnCollection} self\r\n */\r\nColumnCollection.prototype.moveColumn = function (src, dest) {\r\n if (src && dest) {\r\n let srcOrder = src.order, destOrder = dest.order, i, col;\r\n if (srcOrder < destOrder) {\r\n for (i = srcOrder + 1; i <= destOrder; i++) {\r\n col = this.getByOrder(i);\r\n col.order--;\r\n }\r\n } else {\r\n for (i = srcOrder - 1; i >= destOrder; i--) {\r\n col = this.getByOrder(i);\r\n col.order++;\r\n }\r\n }\r\n src.order = destOrder;\r\n }\r\n return this;\r\n};\r\n\r\nexport default ColumnCollection;","/* eslint-env browser */\r\n\r\n'use strict';\r\n\r\nconst CssUtil = {};\r\n\r\nlet _isTransformSupported = null;\r\n\r\nCssUtil.getSupportedTransform = () => {\r\n if (_isTransformSupported === null) {\r\n let prefixes = ['transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform'];\r\n let div = document.createElement('div');\r\n _isTransformSupported = false;\r\n for (let item of prefixes) {\r\n if (div && div.style[item] !== undefined) {\r\n _isTransformSupported = item;\r\n break;\r\n }\r\n }\r\n }\r\n return _isTransformSupported;\r\n};\r\n\r\nexport default CssUtil;\r\n","/* eslint-env browser */\r\n\r\n'use strict';\r\n\r\n// saveSelection/restoreSelection courtesy of Tim Down, with my improvements\r\n// https://stackoverflow.com/questions/13949059/persisting-the-changes-of-range-objects-after-selection-in-html/13950376#13950376\r\n\r\nfunction isChildOf(child, parent) {\r\n while ((child = child.parentNode) && child !== parent);\r\n return !!child;\r\n}\r\n\r\nclass SelectionHelper {\r\n\r\n static saveSelection(el) {\r\n let range = window.getSelection().getRangeAt(0);\r\n\r\n if (el !== range.commonAncestorContainer && !isChildOf(range.commonAncestorContainer, el))\r\n return null;\r\n\r\n let preSelectionRange = range.cloneRange();\r\n preSelectionRange.selectNodeContents(el);\r\n preSelectionRange.setEnd(range.startContainer, range.startOffset);\r\n let start = preSelectionRange.toString().length;\r\n\r\n return {\r\n start: start,\r\n end: start + range.toString().length,\r\n };\r\n }\r\n\r\n static restoreSelection(el, savedSel) {\r\n let charIndex = 0;\r\n let nodeStack = [el], node, foundStart = false, stop = false;\r\n let range = document.createRange();\r\n range.setStart(el, 0);\r\n range.collapse(true);\r\n\r\n while (!stop && (node = nodeStack.pop())) {\r\n if (node.nodeType === 3) {\r\n let nextCharIndex = charIndex + node.length;\r\n if (!foundStart && savedSel.start >= charIndex && savedSel.start <= nextCharIndex) {\r\n range.setStart(node, savedSel.start - charIndex);\r\n foundStart = true;\r\n }\r\n if (foundStart && savedSel.end >= charIndex && savedSel.end <= nextCharIndex) {\r\n range.setEnd(node, savedSel.end - charIndex);\r\n stop = true;\r\n }\r\n charIndex = nextCharIndex;\r\n } else {\r\n let i = node.childNodes.length;\r\n while (i--) {\r\n nodeStack.push(node.childNodes[i]);\r\n }\r\n }\r\n }\r\n\r\n let sel = window.getSelection();\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n }\r\n}\r\n\r\nexport default SelectionHelper;\r\n","'use strict';\r\n\r\nfunction ByColumnFilter (row, args) {\r\n \r\n let column = args.column;\r\n let keyword = args.keyword == null ? '' : args.keyword.toString();\r\n \r\n if (!keyword || !column) return true;\r\n\r\n let actualVal = row[column];\r\n if (actualVal == null) {\r\n return false;\r\n }\r\n \r\n actualVal = actualVal.toString();\r\n \r\n if (!args.caseSensitive) {\r\n actualVal = actualVal.toLowerCase();\r\n keyword = keyword.toLowerCase();\r\n }\r\n \r\n return actualVal.indexOf(keyword) !== -1;\r\n}\r\n\r\nexport default ByColumnFilter;","/* eslint-env browser */\r\n\r\n'use strict';\r\n\r\nimport jQuery from 'jquery';\r\nimport { find, htmlEncode, includes } from './util';\r\nimport RowCollection from './row_collection';\r\nimport ColumnCollection from './column_collection';\r\nimport CssUtil from './css_util';\r\nimport SelectionHelper from './SelectionHelper';\r\nimport {\r\n getScrollHorz,\r\n setScrollHorz,\r\n} from '@danielgindi/dom-utils/lib/ScrollHelper';\r\nimport {\r\n getElementWidth,\r\n getElementHeight,\r\n setElementWidth,\r\n} from '@danielgindi/dom-utils/lib/Css';\r\nimport ByColumnFilter from './by_column_filter';\r\n\r\nconst nativeIndexOf = Array.prototype.indexOf;\r\nconst $ = jQuery;\r\n\r\nlet userAgent = navigator.userAgent;\r\nlet ieVersion = userAgent.indexOf('MSIE ') !== -1 ? parseFloat(userAgent.substr(userAgent.indexOf('MSIE ') + 5)) : null;\r\nlet hasIeDragAndDropBug = ieVersion && ieVersion < 10;\r\nlet createElement = document.createElement.bind(document);\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nconst IsSafeSymbol = ('safe');\r\n\r\nfunction webkitRenderBugfix(el) {\r\n // BUGFIX: WebKit has a bug where it does not relayout, and this affects us because scrollbars\r\n // are still calculated even though they are not there yet. This is the last resort.\r\n let oldDisplay = el.style.display;\r\n el.style.display = 'none';\r\n //noinspection BadExpressionStatementJS\r\n el.offsetHeight; // No need to store this anywhere, the reference is enough\r\n el.style.display = oldDisplay;\r\n return el;\r\n}\r\n\r\nfunction relativizeElement($el) {\r\n if (!includes(['relative', 'absolute', 'fixed'], $el.css('position'))) {\r\n $el.css('position', 'relative');\r\n }\r\n}\r\n\r\nconst isInputElementEvent = event => /^(?:INPUT|TEXTAREA|BUTTON|SELECT)$/.test(event.target.tagName);\r\n\r\n/** @class DGTable */\r\nlet DGTable = function DGTable () {\r\n if (!(this instanceof DGTable)) {\r\n // Allow constructing without `new`\r\n return new (Function.prototype.bind.apply(\r\n DGTable,\r\n [DGTable].concat(Array.prototype.slice.call(arguments, 0))));\r\n }\r\n\r\n this.initialize.apply(this, arguments);\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @type {string}\r\n */\r\nDGTable.VERSION = '@@VERSION';\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @type {string}\r\n */\r\nDGTable.prototype.VERSION = DGTable.VERSION;\r\n\r\n/**\r\n * @constructs\r\n * @param {DGTable.Options?} options - initialization options\r\n * @returns {DGTable}\r\n */\r\nDGTable.prototype.initialize = function (options) {\r\n let that = this;\r\n\r\n options = options || {};\r\n\r\n /**\r\n * @private\r\n * @type {DGTable.Options}\r\n * */\r\n let o = that.o = {};\r\n\r\n /**\r\n * @private\r\n * This is for encapsulating private data */\r\n let p = that.p = {};\r\n\r\n /** This is for encapsulating event callback */\r\n p.events = {};\r\n\r\n /**\r\n * @public\r\n * @expose\r\n * */\r\n that.el = (options.el && options.el instanceof Element) ? options.el : document.createElement('div');\r\n\r\n /**\r\n * @public\r\n * @expose\r\n * */\r\n let $el = that.$el = $(that.el);\r\n\r\n if (that.el !== options.el) {\r\n $el.addClass(options.className || 'dgtable-wrapper');\r\n }\r\n\r\n // Set control data\r\n $el\r\n .data('control', that)\r\n .data('dgtable', that);\r\n\r\n // For jQuery.UI or jquery.removeevent\r\n $el.on('remove', function () {\r\n that.destroy();\r\n });\r\n\r\n p.onMouseMoveResizeAreaBound = this._onMouseMoveResizeArea.bind(this);\r\n p.onEndDragColumnHeaderBound = this._onEndDragColumnHeader.bind(this);\r\n p.onTableScrolledHorizontallyBound = this._onTableScrolledHorizontally.bind(this);\r\n\r\n this.$el.on('dragend', p.onEndDragColumnHeaderBound);\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} _tableSkeletonNeedsRendering */\r\n p.tableSkeletonNeedsRendering = true;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} virtualTable */\r\n o.virtualTable = options.virtualTable === undefined ? true : !!options.virtualTable;\r\n\r\n /**\r\n * @private\r\n * @field {Number} rowsBufferSize */\r\n o.rowsBufferSize = options.rowsBufferSize || 3;\r\n\r\n /**\r\n * @private\r\n * @field {Number} minColumnWidth */\r\n o.minColumnWidth = Math.max(options.minColumnWidth || 35, 0);\r\n\r\n /**\r\n * @private\r\n * @field {Number} resizeAreaWidth */\r\n o.resizeAreaWidth = options.resizeAreaWidth || 8;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} resizableColumns */\r\n o.resizableColumns = options.resizableColumns === undefined ? true : !!options.resizableColumns;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} movableColumns */\r\n o.movableColumns = options.movableColumns === undefined ? true : !!options.movableColumns;\r\n\r\n /**\r\n * @private\r\n * @field {Number} sortableColumns */\r\n o.sortableColumns = options.sortableColumns === undefined ? 1 : (parseInt(options.sortableColumns, 10) || 1);\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} adjustColumnWidthForSortArrow */\r\n o.adjustColumnWidthForSortArrow = options.adjustColumnWidthForSortArrow === undefined ? true : !!options.adjustColumnWidthForSortArrow;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} convertColumnWidthsToRelative */\r\n o.convertColumnWidthsToRelative = options.convertColumnWidthsToRelative === undefined ? false : !!options.convertColumnWidthsToRelative;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} autoFillTableWidth */\r\n o.autoFillTableWidth = options.autoFillTableWidth === undefined ? false : !!options.autoFillTableWidth;\r\n\r\n /**\r\n * @private\r\n * @field {String} cellClasses */\r\n o.cellClasses = options.cellClasses === undefined ? '' : options.cellClasses;\r\n\r\n /**\r\n * @private\r\n * @field {String} resizerClassName */\r\n o.resizerClassName = options.resizerClassName === undefined ? 'dgtable-resize' : options.resizerClassName;\r\n\r\n /**\r\n * @private\r\n * @field {String} tableClassName */\r\n o.tableClassName = options.tableClassName === undefined ? 'dgtable' : options.tableClassName;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} allowCellPreview */\r\n o.allowCellPreview = options.allowCellPreview === undefined ? true : options.allowCellPreview;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} allowHeaderCellPreview */\r\n o.allowHeaderCellPreview = options.allowHeaderCellPreview === undefined ? true : options.allowHeaderCellPreview;\r\n\r\n /**\r\n * @private\r\n * @field {String} cellPreviewClassName */\r\n o.cellPreviewClassName = options.cellPreviewClassName === undefined ? 'dgtable-cell-preview' : options.cellPreviewClassName;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} cellPreviewAutoBackground */\r\n o.cellPreviewAutoBackground = options.cellPreviewAutoBackground === undefined ? true : options.cellPreviewAutoBackground;\r\n\r\n /**\r\n * @private\r\n * @field {function(columnName: string, descending: boolean, defaultComparator: function(a,b):number):(function(a,b):number)} onComparatorRequired */\r\n o.onComparatorRequired = options.onComparatorRequired === undefined ? null : options.onComparatorRequired;\r\n if (!o.onComparatorRequired && typeof options['comparatorCallback'] === 'function') {\r\n o.onComparatorRequired = options['comparatorCallback'];\r\n }\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} width */\r\n o.width = options.width === undefined ? DGTable.Width.NONE : options.width;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} relativeWidthGrowsToFillWidth */\r\n o.relativeWidthGrowsToFillWidth = options.relativeWidthGrowsToFillWidth === undefined ? true : !!options.relativeWidthGrowsToFillWidth;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} relativeWidthShrinksToFillWidth */\r\n o.relativeWidthShrinksToFillWidth = options.relativeWidthShrinksToFillWidth === undefined ? false : !!options.relativeWidthShrinksToFillWidth;\r\n\r\n this.setCellFormatter(options.cellFormatter);\r\n this.setHeaderCellFormatter(options.headerCellFormatter);\r\n this.setFilter(options.filter);\r\n\r\n /** @private\r\n * @field {Number} height */\r\n o.height = options.height;\r\n\r\n // Prepare columns\r\n that.setColumns(options.columns || [], false);\r\n\r\n // Set sorting columns\r\n let sortColumns = [];\r\n\r\n if (options.sortColumn) {\r\n\r\n let tmpSortColumns = options.sortColumn;\r\n\r\n if (tmpSortColumns && typeof tmpSortColumns !== 'object') {\r\n tmpSortColumns = [tmpSortColumns];\r\n }\r\n\r\n if (tmpSortColumns instanceof Array ||\r\n typeof tmpSortColumns === 'object') {\r\n\r\n for (let i = 0, len = tmpSortColumns.length; i < len; i++) {\r\n let sortColumn = tmpSortColumns[i];\r\n if (typeof sortColumn === 'string') {\r\n sortColumn = { column: sortColumn, descending: false };\r\n }\r\n let col = p.columns.get(sortColumn.column);\r\n if (!col) continue;\r\n\r\n sortColumns.push({\r\n column: sortColumn.column,\r\n comparePath: col.comparePath || col.dataPath,\r\n descending: sortColumn.descending,\r\n });\r\n }\r\n }\r\n }\r\n\r\n /** @field {RowCollection} _rows */\r\n p.rows = new RowCollection({ sortColumn: sortColumns });\r\n p.rows.onComparatorRequired = (column, descending, defaultComparator) => {\r\n if (o.onComparatorRequired) {\r\n return o.onComparatorRequired(column, descending, defaultComparator);\r\n }\r\n };\r\n\r\n /** @private\r\n * @field {RowCollection} _filteredRows */\r\n p.filteredRows = null;\r\n\r\n /*\r\n Setup hover mechanism.\r\n We need this to be high performance, as there may be MANY cells to call this on, on creation and destruction.\r\n Using native events to spare the overhead of jQuery's event binding, and even just the creation of the jQuery collection object.\r\n */\r\n\r\n /**\r\n * @param {MouseEvent} evt\r\n * @this {HTMLElement}\r\n * */\r\n let hoverMouseOverHandler = function (evt) {\r\n evt = evt || event;\r\n let relatedTarget = evt.fromElement || evt.relatedTarget;\r\n if (relatedTarget === this || $.contains(this, relatedTarget)) return;\r\n if (this['__previewCell'] && (relatedTarget === this['__previewCell'] || $.contains(this['__previewCell'], relatedTarget))) return;\r\n that._cellMouseOverEvent.call(that, this);\r\n };\r\n\r\n /**\r\n * @param {MouseEvent} evt\r\n * @this {HTMLElement}\r\n * */\r\n let hoverMouseOutHandler = function (evt) {\r\n evt = evt || event;\r\n let relatedTarget = evt.toElement || evt.relatedTarget;\r\n if (relatedTarget === this || $.contains(this, relatedTarget)) return;\r\n if (this['__previewCell'] && (relatedTarget === this['__previewCell'] || $.contains(this['__previewCell'], relatedTarget))) return;\r\n that._cellMouseOutEvent.call(that, this);\r\n };\r\n\r\n if ('addEventListener' in window) {\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * */\r\n p._bindCellHoverIn = function (el) {\r\n if (!el['__hoverIn']) {\r\n el.addEventListener('mouseover', el['__hoverIn'] = hoverMouseOverHandler.bind(el));\r\n }\r\n };\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * */\r\n p._unbindCellHoverIn = function (el) {\r\n if (el['__hoverIn']) {\r\n el.removeEventListener('mouseover', el['__hoverIn']);\r\n el['__hoverIn'] = null;\r\n }\r\n };\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * @returns {DGTable} self\r\n * */\r\n p._bindCellHoverOut = function (el) {\r\n if (!el['__hoverOut']) {\r\n el.addEventListener('mouseout', el['__hoverOut'] = hoverMouseOutHandler.bind(el['__cell'] || el));\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * @returns {DGTable} self\r\n * */\r\n p._unbindCellHoverOut = function (el) {\r\n if (el['__hoverOut']) {\r\n el.removeEventListener('mouseout', el['__hoverOut']);\r\n el['__hoverOut'] = null;\r\n }\r\n return this;\r\n };\r\n\r\n } else {\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * */\r\n p._bindCellHoverIn = function (el) {\r\n if (!el['__hoverIn']) {\r\n el.attachEvent('mouseover', el['__hoverIn'] = hoverMouseOverHandler.bind(el));\r\n }\r\n };\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * */\r\n p._unbindCellHoverIn = function (el) {\r\n if (el['__hoverIn']) {\r\n el.detachEvent('mouseover', el['__hoverIn']);\r\n el['__hoverIn'] = null;\r\n }\r\n };\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * */\r\n p._bindCellHoverOut = function (el) {\r\n if (!el['__hoverOut']) {\r\n el.attachEvent('mouseout', el['__hoverOut'] = hoverMouseOutHandler.bind(el['__cell'] || el));\r\n }\r\n };\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * @returns {DGTable} self\r\n * */\r\n p._unbindCellHoverOut = function (el) {\r\n if (el['__hoverOut']) {\r\n el.detachEvent('mouseout', el['__hoverOut']);\r\n el['__hoverOut'] = null;\r\n }\r\n return this;\r\n };\r\n\r\n }\r\n};\r\n\r\n/**\r\n * Add an event listener\r\n * @public\r\n * @expose\r\n * @param {String} eventName\r\n * @param {Function} callback\r\n * @returns {DGTable}\r\n */\r\nDGTable.prototype.on = function (eventName, callback) {\r\n let that = this, events = that.p.events;\r\n\r\n if (typeof callback !== 'function')\r\n return that;\r\n\r\n if (!hasOwnProperty.call(events, eventName))\r\n events[eventName] = [];\r\n\r\n events[eventName].push({\r\n cb: callback,\r\n once: false,\r\n });\r\n\r\n return that;\r\n};\r\n\r\n/**\r\n * Add an event listener for a one shot\r\n * @public\r\n * @expose\r\n * @param {String} eventName\r\n * @param {Function} callback\r\n * @returns {DGTable}\r\n */\r\nDGTable.prototype.once = function (eventName, callback) {\r\n let that = this, events = that.p.events;\r\n\r\n if (typeof callback !== 'function')\r\n return that;\r\n\r\n if (!hasOwnProperty.call(events, eventName))\r\n events[eventName] = [];\r\n\r\n events[eventName].push({\r\n cb: callback,\r\n once: true,\r\n });\r\n\r\n return that;\r\n};\r\n\r\n/**\r\n * Remove an event listener\r\n * @public\r\n * @expose\r\n * @param {String} eventName\r\n * @param {Function} callback\r\n * @returns {DGTable}\r\n */\r\nDGTable.prototype.off = function (eventName, callback) {\r\n let events = this.p.events;\r\n\r\n if (!hasOwnProperty.call(events, eventName))\r\n return this;\r\n\r\n let callbacks = events[eventName];\r\n for (let i = 0; i < callbacks.length; i++) {\r\n let item = callbacks[i];\r\n if (callback && item.cb !== callback) continue;\r\n callbacks.splice(i--, 1);\r\n }\r\n\r\n return this;\r\n};\r\n\r\nDGTable.prototype.trigger = function (eventName) {\r\n let events = this.p.events;\r\n\r\n if (hasOwnProperty.call(events, eventName)) {\r\n let callbacks = events[eventName];\r\n for (let i = 0; i < callbacks.length; i++) {\r\n let item = callbacks[i];\r\n if (item.once) {\r\n callbacks.splice(i--, 1);\r\n }\r\n item.cb.apply(this, Array.prototype.slice.call(arguments, 1));\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Detect column width mode\r\n * @private\r\n * @param {Number|String} width\r\n * @param {Number} minWidth\r\n * @returns {Object} parsed width\r\n */\r\nDGTable.prototype._parseColumnWidth = function (width, minWidth) {\r\n\r\n let widthSize = Math.max(0, parseFloat(width)),\r\n widthMode = ColumnWidthMode.AUTO; // Default\r\n\r\n if (widthSize > 0) {\r\n // Well, it's sure is not AUTO, as we have a value\r\n\r\n if (width === widthSize + '%') {\r\n // It's a percentage!\r\n\r\n widthMode = ColumnWidthMode.RELATIVE;\r\n widthSize /= 100;\r\n } else if (widthSize > 0 && widthSize < 1) {\r\n // It's a decimal value, as a relative value!\r\n\r\n widthMode = ColumnWidthMode.RELATIVE;\r\n } else {\r\n // It's an absolute size!\r\n\r\n if (widthSize < minWidth) {\r\n widthSize = minWidth;\r\n }\r\n widthMode = ColumnWidthMode.ABSOLUTE;\r\n }\r\n }\r\n\r\n return { width: widthSize, mode: widthMode };\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {COLUMN_OPTIONS} columnData\r\n */\r\nDGTable.prototype._initColumnFromData = function(columnData) {\r\n\r\n let parsedWidth = this._parseColumnWidth(columnData.width, columnData.ignoreMin ? 0 : this.o.minColumnWidth);\r\n\r\n let col = {\r\n name: columnData.name,\r\n label: columnData.label === undefined ? columnData.name : columnData.label,\r\n width: parsedWidth.width,\r\n widthMode: parsedWidth.mode,\r\n resizable: columnData.resizable === undefined ? true : columnData.resizable,\r\n sortable: columnData.sortable === undefined ? true : columnData.sortable,\r\n movable: columnData.movable === undefined ? true : columnData.movable,\r\n visible: columnData.visible === undefined ? true : columnData.visible,\r\n cellClasses: columnData.cellClasses === undefined ? this.o.cellClasses : columnData.cellClasses,\r\n ignoreMin: columnData.ignoreMin === undefined ? false : !!columnData.ignoreMin,\r\n };\r\n\r\n col.dataPath = columnData.dataPath === undefined ? col.name : columnData.dataPath;\r\n col.comparePath = columnData.comparePath === undefined ? col.dataPath : columnData.comparePath;\r\n\r\n if (typeof col.dataPath === 'string') {\r\n col.dataPath = col.dataPath.split('.');\r\n }\r\n if (typeof col.comparePath === 'string') {\r\n col.comparePath = col.comparePath.split('.');\r\n }\r\n\r\n return col;\r\n};\r\n\r\n/**\r\n * Destroy, releasing all memory, events and DOM elements\r\n * @public\r\n * @expose\r\n */\r\nDGTable.prototype.close = DGTable.prototype.remove = DGTable.prototype.destroy = function () {\r\n\r\n let that = this,\r\n p = that.p || {},\r\n $el = that.$el;\r\n\r\n if (that.__removed) {\r\n return that;\r\n }\r\n\r\n if (p.$resizer) {\r\n p.$resizer.remove();\r\n p.$resizer = null;\r\n }\r\n\r\n if (p.$tbody) {\r\n let trs = p.$tbody[0].childNodes;\r\n for (let i = 0, len = trs.length; i < len; i++) {\r\n that.trigger('rowdestroy', trs[i]);\r\n }\r\n }\r\n\r\n // Using quotes for __super__ because Google Closure Compiler has a bug...\r\n\r\n this._destroyHeaderCells()._unbindCellEventsForTable();\r\n if (p.$table) {\r\n p.$table.empty();\r\n }\r\n if (p.$tbody) {\r\n p.$tbody.empty();\r\n }\r\n\r\n if (p.workerListeners) {\r\n for (let j = 0; j < p.workerListeners.length; j++) {\r\n let worker = p.workerListeners[j];\r\n worker.worker.removeEventListener('message', worker.listener, false);\r\n }\r\n p.workerListeners.length = 0;\r\n }\r\n\r\n p.rows.length = p.columns.length = 0;\r\n\r\n if (p._deferredRender) {\r\n clearTimeout(p._deferredRender);\r\n }\r\n\r\n // Cleanup\r\n for (let prop in that) {\r\n if (hasOwnProperty.call(that, prop)) {\r\n that[prop] = null;\r\n }\r\n }\r\n\r\n that.__removed = true;\r\n\r\n if ($el) {\r\n $el.remove();\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._unbindCellEventsForTable = function() {\r\n const p = this.p;\r\n\r\n if (p.headerRow) {\r\n for (let i = 0, rows = p.headerRow.childNodes, rowCount = rows.length; i < rowCount; i++) {\r\n let rowToClean = rows[i];\r\n for (let j = 0, cells = rowToClean.childNodes, cellCount = cells.length; j < cellCount; j++) {\r\n p._unbindCellHoverIn(cells[j]);\r\n }\r\n }\r\n }\r\n\r\n if (p.tbody) {\r\n for (let i = 0, rows = p.tbody.childNodes, rowCount = rows.length; i < rowCount; i++) {\r\n this._unbindCellEventsForRow(rows[i]);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {HTMLElement} rowToClean\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._unbindCellEventsForRow = function(rowToClean) {\r\n const p = this.p;\r\n for (let i = 0, cells = rowToClean.childNodes, cellCount = cells.length; i < cellCount; i++) {\r\n p._unbindCellHoverIn(cells[i]);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.render = function () {\r\n const o = this.o, p = this.p;\r\n\r\n if (!this.el.offsetParent) {\r\n if (!p._deferredRender) {\r\n p._deferredRender = setTimeout(() => {\r\n p._deferredRender = null;\r\n if (!this.__removed && this.el.offsetParent) {\r\n this.render();\r\n }\r\n });\r\n }\r\n\r\n return this;\r\n }\r\n\r\n let renderedRows, rowCount;\r\n\r\n if (p.tableSkeletonNeedsRendering === true) {\r\n p.tableSkeletonNeedsRendering = false;\r\n\r\n if (o.width === DGTable.Width.AUTO) {\r\n // We need to do this to return to the specified widths instead. The arrows added to the column widths...\r\n this._clearSortArrows();\r\n }\r\n\r\n let lastScrollTop = p.table && p.table.parentNode ? p.table.scrollTop : NaN,\r\n lastScrollHorz = p.table && p.table.parentNode ? getScrollHorz(p.table) : NaN;\r\n\r\n this._renderSkeletonBase()\r\n ._renderSkeletonBody()\r\n .tableWidthChanged(true, false) // Take this chance to calculate required column widths\r\n ._renderSkeletonHeaderCells();\r\n\r\n if (!o.virtualTable) {\r\n let rows = p.filteredRows || p.rows;\r\n rowCount = rows.length;\r\n renderedRows = this.renderRows(0, rowCount - 1);\r\n p.$tbody.html('').append(renderedRows);\r\n }\r\n\r\n this._updateLastCellWidthFromScrollbar(true);\r\n\r\n this._updateTableWidth(true);\r\n\r\n // Show sort arrows\r\n for (let i = 0; i < p.rows.sortColumn.length; i++) {\r\n this._showSortArrow(p.rows.sortColumn[i].column, p.rows.sortColumn[i].descending);\r\n }\r\n if (o.adjustColumnWidthForSortArrow && p.rows.sortColumn.length) {\r\n this.tableWidthChanged(true);\r\n } else if (!o.virtualTable) {\r\n this.tableWidthChanged();\r\n }\r\n\r\n if (!isNaN(lastScrollTop))\r\n p.table.scrollTop = lastScrollTop;\r\n\r\n if (!isNaN(lastScrollHorz)) {\r\n setScrollHorz(p.table, lastScrollHorz);\r\n setScrollHorz(p.header, lastScrollHorz);\r\n }\r\n\r\n this.trigger('renderskeleton');\r\n\r\n if (o.virtualTable) {\r\n p.$table.on('scroll', this._onVirtualTableScrolled.bind(this));\r\n this.render();\r\n }\r\n\r\n } else if (o.virtualTable) {\r\n rowCount = (p.filteredRows || p.rows).length;\r\n let scrollTop = p.table.scrollTop;\r\n let firstVisible = Math.floor((scrollTop - p.virtualRowHeightFirst) / p.virtualRowHeight) + 1 - o.rowsBufferSize;\r\n let lastVisible = Math.ceil(((scrollTop - p.virtualRowHeightFirst + p.visibleHeight) / p.virtualRowHeight)) + o.rowsBufferSize;\r\n if (firstVisible < 0) firstVisible = 0;\r\n if (lastVisible >= rowCount) {\r\n lastVisible = rowCount - 1;\r\n }\r\n\r\n let oldFirstVisible = -1, oldLastVisible = -1;\r\n let tbodyChildNodes = p.tbody.childNodes;\r\n if (tbodyChildNodes.length) {\r\n oldFirstVisible = tbodyChildNodes[0]['rowIndex'];\r\n oldLastVisible = tbodyChildNodes[tbodyChildNodes.length - 1]['rowIndex'];\r\n }\r\n\r\n let countToRemove;\r\n\r\n if (oldFirstVisible !== -1 && oldFirstVisible < firstVisible) {\r\n countToRemove = Math.min(oldLastVisible + 1, firstVisible) - oldFirstVisible;\r\n for (let i = 0; i < countToRemove; i++) {\r\n this.trigger('rowdestroy', tbodyChildNodes[0]);\r\n this._unbindCellEventsForRow(tbodyChildNodes[0]);\r\n p.tbody.removeChild(tbodyChildNodes[0]);\r\n }\r\n oldFirstVisible += countToRemove;\r\n if (oldFirstVisible > oldLastVisible) {\r\n oldFirstVisible = oldLastVisible = -1;\r\n }\r\n } else if (oldLastVisible !== -1 && oldLastVisible > lastVisible) {\r\n countToRemove = oldLastVisible - Math.max(oldFirstVisible - 1, lastVisible);\r\n for (let i = 0; i < countToRemove; i++) {\r\n this.trigger('rowdestroy', tbodyChildNodes[tbodyChildNodes.length - 1]);\r\n this._unbindCellEventsForRow(tbodyChildNodes[tbodyChildNodes.length - 1]);\r\n p.tbody.removeChild(tbodyChildNodes[tbodyChildNodes.length - 1]);\r\n }\r\n if (oldLastVisible < oldFirstVisible) {\r\n oldFirstVisible = oldLastVisible = -1;\r\n }\r\n }\r\n\r\n if (firstVisible < oldFirstVisible) {\r\n renderedRows = this.renderRows(firstVisible, Math.min(lastVisible, oldFirstVisible - 1));\r\n p.$tbody.prepend(renderedRows);\r\n }\r\n if (lastVisible > oldLastVisible || oldLastVisible === -1) {\r\n renderedRows = this.renderRows(oldLastVisible === -1 ? firstVisible : oldLastVisible + 1, lastVisible);\r\n p.$tbody.append(renderedRows);\r\n }\r\n }\r\n this.trigger('render');\r\n return this;\r\n};\r\n\r\n/**\r\n * Forces a full render of the table\r\n * @public\r\n * @expose\r\n * @param {Boolean=true} render - Should render now?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.clearAndRender = function (render) {\r\n let p = this.p;\r\n\r\n p.tableSkeletonNeedsRendering = true;\r\n\r\n if (render === undefined || render) {\r\n this.render();\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Render rows\r\n * @private\r\n * @param {Number} first first row to render\r\n * @param {Number} last last row to render\r\n * @returns {DocumentFragment} fragment containing all rendered rows\r\n */\r\nDGTable.prototype.renderRows = function (first, last) {\r\n const o = this.o, p = this.p;\r\n\r\n let tableClassName = o.tableClassName,\r\n rowClassName = tableClassName + '-row',\r\n cellClassName = tableClassName + '-cell',\r\n rows = p.filteredRows || p.rows,\r\n isDataFiltered = !!p.filteredRows,\r\n allowCellPreview = o.allowCellPreview,\r\n visibleColumns = p.visibleColumns,\r\n isVirtual = o.virtualTable,\r\n virtualRowHeightFirst = p.virtualRowHeightFirst,\r\n virtualRowHeight = p.virtualRowHeight,\r\n top,\r\n physicalRowIndex;\r\n\r\n let colCount = visibleColumns.length;\r\n for (let colIndex = 0, column; colIndex < colCount; colIndex++) {\r\n column = visibleColumns[colIndex];\r\n column._finalWidth = (column.actualWidthConsideringScrollbarWidth || column.actualWidth);\r\n }\r\n\r\n let bodyFragment = document.createDocumentFragment();\r\n\r\n let isRtl = this._isTableRtl(),\r\n virtualRowXAttr = isRtl ? 'right' : 'left';\r\n\r\n const supportedTransform = CssUtil.getSupportedTransform();\r\n\r\n for (let i = first, rowCount = rows.length;\r\n i < rowCount && i <= last;\r\n i++) {\r\n\r\n let rowData = rows[i];\r\n physicalRowIndex = isDataFiltered ? rowData['__i'] : i;\r\n\r\n let row = createElement('div');\r\n row.className = rowClassName;\r\n row['rowIndex'] = i;\r\n row['physicalRowIndex'] = physicalRowIndex;\r\n\r\n for (let colIndex = 0; colIndex < colCount; colIndex++) {\r\n let column = visibleColumns[colIndex];\r\n let cell = createElement('div');\r\n cell['columnName'] = column.name;\r\n cell.setAttribute('data-column', column.name);\r\n cell.className = cellClassName;\r\n cell.style.width = column._finalWidth + 'px';\r\n if (column.cellClasses) cell.className += ' ' + column.cellClasses;\r\n if (allowCellPreview) {\r\n p._bindCellHoverIn(cell);\r\n }\r\n\r\n let cellInner = cell.appendChild(createElement('div'));\r\n cellInner.innerHTML = this._getHtmlForCell(rowData, column);\r\n\r\n row.appendChild(cell);\r\n }\r\n\r\n if (isVirtual) {\r\n top = i > 0 ? virtualRowHeightFirst + (i - 1) * virtualRowHeight : 0;\r\n row.style.position = 'absolute';\r\n row.style[virtualRowXAttr] = 0;\r\n\r\n if (supportedTransform === false) {\r\n row.style.top = `${top}px`;\r\n } else {\r\n row.style.top = '0px';\r\n row.style[supportedTransform] = `translateY(${top}px)`;\r\n }\r\n }\r\n\r\n bodyFragment.appendChild(row);\r\n\r\n this.trigger('rowcreate', i, physicalRowIndex, row, rowData);\r\n }\r\n\r\n return bodyFragment;\r\n};\r\n\r\n/**\r\n * Calculate virtual table height for scrollbar\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._calculateVirtualHeight = function () {\r\n let p = this.p;\r\n\r\n if (p.tbody) {\r\n let rowCount = (p.filteredRows || p.rows).length;\r\n let height = p.virtualRowHeight * rowCount;\r\n if (rowCount) {\r\n height += (p.virtualRowHeightFirst - p.virtualRowHeight);\r\n height += (p.virtualRowHeightLast - p.virtualRowHeight);\r\n }\r\n // At least 1 pixel - to show scrollers correctly.\r\n if (height < 1) {\r\n height = 1;\r\n }\r\n p.tbody.style.height = height + 'px';\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculate the size required for the table body width (which is the row's width)\r\n * @private\r\n * @returns {Number} calculated width\r\n */\r\nDGTable.prototype._calculateTbodyWidth = function () {\r\n const p = this.p;\r\n\r\n let tableClassName = this.o.tableClassName,\r\n rowClassName = tableClassName + '-row',\r\n cellClassName = tableClassName + '-cell',\r\n visibleColumns = p.visibleColumns,\r\n colCount = visibleColumns.length,\r\n cell,\r\n cellInner,\r\n colIndex,\r\n column;\r\n\r\n let $row = $('<div>').addClass(rowClassName).css('float', 'left');\r\n let sumActualWidth = 0;\r\n\r\n for (colIndex = 0; colIndex < colCount; colIndex++) {\r\n column = visibleColumns[colIndex];\r\n cell = createElement('div');\r\n cell.className = cellClassName;\r\n cell.style.width = column.actualWidth + 'px';\r\n if (column.cellClasses) cell.className += ' ' + column.cellClasses;\r\n cellInner = cell.appendChild(createElement('div'));\r\n $row.append(cell);\r\n sumActualWidth += column.actualWidth;\r\n }\r\n\r\n let $thisWrapper = $('<div>')\r\n .addClass(this.el.className)\r\n .css({ 'z-index': -1, 'position': 'absolute', left: '0', top: '-9999px', 'float': 'left', width: '1px', overflow: 'hidden' })\r\n .append(\r\n $('<div>').addClass(tableClassName).append(\r\n $('<div>').addClass(tableClassName + '-body').css('width', sumActualWidth + 10000).append(\r\n $row,\r\n ),\r\n ),\r\n );\r\n\r\n $thisWrapper.appendTo(document.body);\r\n\r\n let fractionTest = $('<div style=\"border:1.5px solid #000;width:0;height:0;position:absolute;left:0;top:-9999px\">').appendTo(document.body);\r\n let fractionValue = parseFloat(fractionTest.css('border-width'));\r\n let hasFractions = Math.round(fractionValue) !== fractionValue;\r\n fractionTest.remove();\r\n\r\n let width = getElementWidth($row[0], true, true, true);\r\n width -= p.scrollbarWidth || 0;\r\n\r\n if (hasFractions) {\r\n width++;\r\n }\r\n\r\n $thisWrapper.remove();\r\n return width;\r\n};\r\n\r\n/**\r\n * Sets the columns of the table\r\n * @public\r\n * @expose\r\n * @param {COLUMN_OPTIONS[]} columns - Column definitions array\r\n * @param {Boolean=true} render - Should render now?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setColumns = function (columns, render) {\r\n const p = this.p;\r\n\r\n columns = columns || [];\r\n\r\n let normalizedCols = new ColumnCollection();\r\n for (let i = 0, order = 0; i < columns.length; i++) {\r\n\r\n let columnData = columns[i];\r\n let normalizedColumn = this._initColumnFromData(columnData);\r\n\r\n if (columnData.order !== undefined) {\r\n if (columnData.order > order) {\r\n order = columnData.order + 1;\r\n }\r\n normalizedColumn.order = columnData.order;\r\n } else {\r\n normalizedColumn.order = order++;\r\n }\r\n\r\n normalizedCols.push(normalizedColumn);\r\n }\r\n normalizedCols.normalizeOrder();\r\n\r\n p.columns = normalizedCols;\r\n p.visibleColumns = normalizedCols.getVisibleColumns();\r\n\r\n this._ensureVisibleColumns().clearAndRender(render);\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Add a column to the table\r\n * @public\r\n * @expose\r\n * @param {COLUMN_OPTIONS} columnData column properties\r\n * @param {String|Number} [before=-1] column name or order to be inserted before\r\n * @param {Boolean=true} render - Should render now?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.addColumn = function (columnData, before, render) {\r\n const p = this.p;\r\n let columns = p.columns;\r\n\r\n if (columnData && !columns.get(columnData.name)) {\r\n let beforeColumn = null;\r\n if (before !== undefined) {\r\n beforeColumn = columns.get(before) || columns.getByOrder(before);\r\n }\r\n\r\n let column = this._initColumnFromData(columnData);\r\n column.order = beforeColumn ? beforeColumn.order : (columns.getMaxOrder() + 1);\r\n\r\n for (let i = columns.getMaxOrder(), to = column.order; i >= to ; i--) {\r\n let col = columns.getByOrder(i);\r\n if (col) {\r\n col.order++;\r\n }\r\n }\r\n\r\n columns.push(column);\r\n columns.normalizeOrder();\r\n\r\n p.visibleColumns = columns.getVisibleColumns();\r\n this._ensureVisibleColumns().clearAndRender(render);\r\n\r\n this.trigger('addcolumn', column.name);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove a column from the table\r\n * @public\r\n * @expose\r\n * @param {String} column column name\r\n * @param {Boolean=true} render - Should render now?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.removeColumn = function (column, render) {\r\n const p = this.p;\r\n let columns = p.columns;\r\n\r\n let colIdx = columns.indexOf(column);\r\n if (colIdx > -1) {\r\n columns.splice(colIdx, 1);\r\n columns.normalizeOrder();\r\n\r\n p.visibleColumns = columns.getVisibleColumns();\r\n this._ensureVisibleColumns().clearAndRender(render);\r\n\r\n this.trigger('removecolumn', column);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets a new cell formatter.\r\n * @public\r\n * @expose\r\n * @param {function(value: *, columnName: String, row: Object):String|null} [formatter=null] - The cell formatter. Should return an HTML.\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setCellFormatter = function (formatter) {\r\n if (!formatter) {\r\n formatter = val => (typeof val === 'string') ? htmlEncode(val) : val;\r\n formatter[IsSafeSymbol] = true;\r\n }\r\n\r\n /**\r\n * @private\r\n * @field {Function} cellFormatter */\r\n this.o.cellFormatter = formatter;\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets a new header cell formatter.\r\n * @public\r\n * @expose\r\n * @param {function(label: String, columnName: String):String|null} [formatter=null] - The cell formatter. Should return an HTML.\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setHeaderCellFormatter = function (formatter) {\r\n /**\r\n * @private\r\n * @field {Function} headerCellFormatter */\r\n this.o.headerCellFormatter = formatter || function (val) {\r\n return (typeof val === 'string') ? htmlEncode(val) : val;\r\n };\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {function(row:Object,args:Object):Boolean|null} [filterFunc=null] - The filter function to work with filters. Default is a by-colum filter.\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setFilter = function (filterFunc) {\r\n /** @private\r\n * @field {Function} filter */\r\n this.o.filter = filterFunc;\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {Object|null} args - Options to pass to the filter function\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.filter = function (args) {\r\n const p = this.p;\r\n\r\n let filterFunc = this.o.filter || ByColumnFilter;\r\n\r\n // Deprecated use of older by-column filter\r\n if (typeof arguments[0] === 'string' && typeof arguments[1] === 'string') {\r\n args = {\r\n column: arguments[0],\r\n keyword: arguments[1],\r\n caseSensitive: arguments[2],\r\n };\r\n }\r\n\r\n let hadFilter = !!p.filteredRows;\r\n if (p.filteredRows) {\r\n p.filteredRows = null; // Allow releasing array memory now\r\n }\r\n\r\n // Shallow-clone the args, as the filter function may want to modify it for keeping state\r\n p.filterArgs = args == null ? null : ((typeof args === 'object' && !Array.isArray(args)) ? $.extend({}, args) : args);\r\n\r\n if (p.filterArgs !== null) {\r\n p.filteredRows = p.rows.filteredCollection(filterFunc, p.filterArgs);\r\n\r\n if (hadFilter || p.filteredRows) {\r\n this.clearAndRender();\r\n this.trigger('filter', args);\r\n }\r\n }\r\n else {\r\n p.filterArgs = null;\r\n p.filteredRows = null;\r\n this.clearAndRender();\r\n this.trigger('filterclear', {});\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.clearFilter = function () {\r\n const p = this.p;\r\n\r\n if (p.filteredRows) {\r\n p.filterArgs = null;\r\n p.filteredRows = null;\r\n this.clearAndRender();\r\n this.trigger('filterclear', {});\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._refilter = function() {\r\n const p = this.p;\r\n\r\n if (p.filteredRows && p.filterArgs) {\r\n let filterFunc = this.o.filter || ByColumnFilter;\r\n p.filteredRows = p.rows.filteredCollection(filterFunc, p.filterArgs);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Set a new label to a column\r\n * @public\r\n * @expose\r\n * @param {String} column Name of the column\r\n * @param {String} label New label for the column\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setColumnLabel = function (column, label) {\r\n const p = this.p;\r\n\r\n let col = p.columns.get(column);\r\n if (col) {\r\n col.label = label === undefined ? col.name : label;\r\n\r\n if (col.element) {\r\n for (let i = 0; i < col.element[0].firstChild.childNodes.length; i++) {\r\n let node = col.element[0].firstChild.childNodes[i];\r\n if (node.nodeType === 3) {\r\n node.textContent = col.label;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Move a column to a new position\r\n * @public\r\n * @expose\r\n * @param {string|number} src Name or position of the column to be moved\r\n * @param {string|number} dest Name of the column currently in the desired position, or the position itself\r\n * @param {boolean} [visibleOnly=true] Should consider only visible columns and visible-relative indexes\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.moveColumn = function (src, dest, visibleOnly = true) {\r\n const o = this.o, p = this.p;\r\n\r\n let columns = p.columns,\r\n col, destCol;\r\n\r\n let columnsArray = visibleOnly ? p.visibleColumns : columns.getColumns();\r\n\r\n if (typeof src === 'string') {\r\n col = columns.get(src);\r\n } else if (typeof src === 'number') {\r\n col = columnsArray[src];\r\n }\r\n if (typeof dest === 'string') {\r\n destCol = columns.get(dest);\r\n } else if (typeof dest === 'number') {\r\n destCol = columnsArray[dest];\r\n }\r\n\r\n if (col && destCol && src !== dest) {\r\n let srcOrder = col.order, destOrder = destCol.order;\r\n\r\n let visibleColumns = columns.moveColumn(col, destCol).getVisibleColumns();\r\n\r\n if (p.visibleColumns.length !== visibleColumns.length ||\r\n p.visibleColumns.some((x, i) => x !== visibleColumns[i])) {\r\n\r\n p.visibleColumns = visibleColumns;\r\n this._ensureVisibleColumns();\r\n\r\n if (o.virtualTable) {\r\n this.clearAndRender()\r\n ._updateLastCellWidthFromScrollbar(true);\r\n } else {\r\n let headerCell = p.$headerRow.find('>div.' + o.tableClassName + '-header-cell');\r\n let beforePos = srcOrder < destOrder ? destOrder + 1 : destOrder,\r\n fromPos = srcOrder;\r\n headerCell[0].parentNode.insertBefore(headerCell[fromPos], headerCell[beforePos]);\r\n\r\n let srcWidth = p.visibleColumns[srcOrder];\r\n srcWidth = (srcWidth.actualWidthConsideringScrollbarWidth || srcWidth.actualWidth) + 'px';\r\n let destWidth = p.visibleColumns[destOrder];\r\n destWidth = (destWidth.actualWidthConsideringScrollbarWidth || destWidth.actualWidth) + 'px';\r\n\r\n let tbodyChildren = p.$tbody[0].childNodes;\r\n for (let i = 0, count = tbodyChildren.length; i < count; i++) {\r\n let row = tbodyChildren[i];\r\n if (row.nodeType !== 1) continue;\r\n row.insertBefore(row.childNodes[fromPos], row.childNodes[beforePos]);\r\n row.childNodes[destOrder].firstChild.style.width = destWidth;\r\n row.childNodes[srcOrder].firstChild.style.width = srcWidth;\r\n }\r\n }\r\n }\r\n\r\n this.trigger('movecolumn', col.name, srcOrder, destOrder);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Sort the table\r\n * @public\r\n * @expose\r\n * @param {String?} column Name of the column to sort on (or null to remove sort arrow)\r\n * @param {Boolean=} descending Sort in descending order\r\n * @param {Boolean} [add=false] Should this sort be on top of the existing sort? (For multiple column sort)\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.sort = function (column, descending, add) {\r\n const o = this.o, p = this.p;\r\n\r\n let columns = p.columns,\r\n col = columns.get(column);\r\n\r\n let currentSort = p.rows.sortColumn;\r\n\r\n if (col) {\r\n\r\n if (currentSort.length && currentSort[currentSort.length - 1].column === column) {\r\n // Recognize current descending mode, if currently sorting by this column\r\n descending = descending === undefined ? !currentSort[currentSort.length - 1].descending : descending;\r\n }\r\n\r\n if (add) { // Add the sort to current sort stack\r\n\r\n for (let i = 0; i < currentSort.length; i++) {\r\n if (currentSort[i].column === col.name) {\r\n if (i < currentSort.length - 1) {\r\n currentSort.length = 0;\r\n } else {\r\n currentSort.splice(currentSort.length - 1, 1);\r\n }\r\n break;\r\n }\r\n }\r\n if ((o.sortableColumns > 0 /* allow manual sort when disabled */ && currentSort.length >= o.sortableColumns) || currentSort.length >= p.visibleColumns.length) {\r\n currentSort.length = 0;\r\n }\r\n\r\n } else { // Sort only by this column\r\n currentSort.length = 0;\r\n }\r\n\r\n // Default to ascending\r\n descending = descending === undefined ? false : descending;\r\n\r\n // Set the required column in the front of the stack\r\n currentSort.push({\r\n column: col.name,\r\n comparePath: col.comparePath || col.dataPath,\r\n descending: !!descending,\r\n });\r\n } else {\r\n currentSort.length = 0;\r\n }\r\n\r\n this._clearSortArrows();\r\n\r\n for (let i = 0; i < currentSort.length; i++) {\r\n this._showSortArrow(currentSort[i].column, currentSort[i].descending);\r\n }\r\n\r\n if (o.adjustColumnWidthForSortArrow && !o._tableSkeletonNeedsRendering) {\r\n this.tableWidthChanged(true);\r\n }\r\n\r\n if (o.virtualTable) {\r\n while (p.tbody && p.tbody.firstChild) {\r\n this.trigger('rowdestroy', p.tbody.firstChild);\r\n this._unbindCellEventsForRow(p.tbody.firstChild);\r\n p.tbody.removeChild(p.tbody.firstChild);\r\n }\r\n } else {\r\n p.tableSkeletonNeedsRendering = true;\r\n }\r\n\r\n p.rows.sortColumn = currentSort;\r\n\r\n if (currentSort.length) {\r\n p.rows.sort(!!p.filteredRows);\r\n if (p.filteredRows) {\r\n p.filteredRows.sort(!!p.filteredRows);\r\n }\r\n }\r\n\r\n // Build output for event, with option names that will survive compilers\r\n let sorts = [];\r\n for (let i = 0; i < currentSort.length; i++) {\r\n sorts.push({ 'column': currentSort[i].column, 'descending': currentSort[i].descending });\r\n }\r\n this.trigger('sort', sorts, true /* direct sort */);\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Re-sort the table using current sort specifiers\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.resort = function () {\r\n const p = this.p;\r\n let columns = p.columns;\r\n\r\n let currentSort = p.rows.sortColumn;\r\n if (currentSort.length) {\r\n\r\n for (let i = 0; i < currentSort.length; i++) {\r\n if (!columns.get(currentSort[i].column)) {\r\n currentSort.splice(i--, 1);\r\n }\r\n }\r\n\r\n p.rows.sortColumn = currentSort;\r\n if (currentSort.length) {\r\n p.rows.sort(!!p.filteredRows);\r\n if (p.filteredRows) {\r\n p.filteredRows.sort(!!p.filteredRows);\r\n }\r\n }\r\n\r\n // Build output for event, with option names that will survive compilers\r\n let sorts = [];\r\n for (let i = 0; i < currentSort.length; i++) {\r\n sorts.push({ 'column': currentSort[i].column, 'descending': currentSort[i].descending });\r\n }\r\n this.trigger('sort', sorts, false /* indirect sort */);\r\n }\r\n\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Make sure there's at least one column visible\r\n * @private\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._ensureVisibleColumns = function () {\r\n const p = this.p;\r\n\r\n if (p.visibleColumns.length === 0 && p.columns.length) {\r\n p.columns[0].visible = true;\r\n p.visibleColumns.push(p.columns[0]);\r\n this.trigger('showcolumn', p.columns[0].name);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Show or hide a column\r\n * @public\r\n * @expose\r\n * @param {String} column Unique column name\r\n * @param {Boolean} visible New visibility mode for the column\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setColumnVisible = function (column, visible) {\r\n const p = this.p;\r\n\r\n let col = p.columns.get(column);\r\n\r\n //noinspection PointlessBooleanExpressionJS\r\n visible = !!visible;\r\n\r\n if (col && !!col.visible !== visible) {\r\n col.visible = visible;\r\n p.visibleColumns = p.columns.getVisibleColumns();\r\n this.trigger(visible ? 'showcolumn' : 'hidecolumn', column);\r\n this._ensureVisibleColumns();\r\n this.clearAndRender();\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Get the visibility mode of a column\r\n * @public\r\n * @expose\r\n * @returns {Boolean} true if visible\r\n */\r\nDGTable.prototype.isColumnVisible = function (column) {\r\n const p = this.p;\r\n let col = p.columns.get(column);\r\n if (col) {\r\n return col.visible;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Globally set the minimum column width\r\n * @public\r\n * @expose\r\n * @param {Number} minColumnWidth Minimum column width\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setMinColumnWidth = function (minColumnWidth) {\r\n let o = this.o;\r\n minColumnWidth = Math.max(minColumnWidth, 0);\r\n if (o.minColumnWidth !== minColumnWidth) {\r\n o.minColumnWidth = minColumnWidth;\r\n this.tableWidthChanged(true);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Get the current minimum column width\r\n * @public\r\n * @expose\r\n * @returns {Number} Minimum column width\r\n */\r\nDGTable.prototype.getMinColumnWidth = function () {\r\n return this.o.minColumnWidth;\r\n};\r\n\r\n/**\r\n * Set the limit on concurrent columns sorted\r\n * @public\r\n * @expose\r\n * @param {Number} sortableColumns How many sortable columns to allow?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setSortableColumns = function (sortableColumns) {\r\n const p = this.p, o = this.o;\r\n if (o.sortableColumns !== sortableColumns) {\r\n o.sortableColumns = sortableColumns;\r\n if (p.$table) {\r\n let headerCell = p.$headerRow.find('>div.' + o.tableClassName + '-header-cell');\r\n for (let i = 0; i < headerCell.length; i++) {\r\n $(headerCell[0])[(o.sortableColumns > 0 && p.visibleColumns[i].sortable) ? 'addClass' : 'removeClass']('sortable');\r\n }\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Get the limit on concurrent columns sorted\r\n * @public\r\n * @expose\r\n * @returns {Number} How many sortable columns are allowed?\r\n */\r\nDGTable.prototype.getSortableColumns = function () {\r\n return this.o.sortableColumns;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {Boolean?} movableColumns=true are the columns movable?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setMovableColumns = function (movableColumns) {\r\n let o = this.o;\r\n //noinspection PointlessBooleanExpressionJS\r\n movableColumns = movableColumns === undefined ? true : !!movableColumns;\r\n if (o.movableColumns !== movableColumns) {\r\n o.movableColumns = movableColumns;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @returns {Boolean} are the columns movable?\r\n */\r\nDGTable.prototype.getMovableColumns = function () {\r\n return this.o.movableColumns;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {Boolean} resizableColumns=true are the columns resizable?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setResizableColumns = function (resizableColumns) {\r\n let o = this.o;\r\n //noinspection PointlessBooleanExpressionJS\r\n resizableColumns = resizableColumns === undefined ? true : !!resizableColumns;\r\n if (o.resizableColumns !== resizableColumns) {\r\n o.resizableColumns = resizableColumns;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @returns {Boolean} are the columns resizable?\r\n */\r\nDGTable.prototype.getResizableColumns = function () {\r\n return this.o.resizableColumns;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {{function(columnName: string, descending: boolean, defaultComparator: function(a,b):number):{function(a,b):number}}} comparatorCallback a callback function that returns the comparator for a specific column\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setComparatorCallback = function (comparatorCallback) {\r\n let o = this.o;\r\n if (o.onComparatorRequired !== comparatorCallback) {\r\n o.onComparatorRequired = comparatorCallback;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Set a new width to a column\r\n * @public\r\n * @expose\r\n * @param {String} column name of the column to resize\r\n * @param {Number|String} width new column as pixels, or relative size (0.5, 50%)\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setColumnWidth = function (column, width) {\r\n\r\n const p = this.p;\r\n\r\n let col = p.columns.get(column);\r\n\r\n let parsedWidth = this._parseColumnWidth(width, col.ignoreMin ? 0 : this.o.minColumnWidth);\r\n\r\n if (col) {\r\n let oldWidth = this._serializeColumnWidth(col);\r\n\r\n col.width = parsedWidth.width;\r\n col.widthMode = parsedWidth.mode;\r\n\r\n let newWidth = this._serializeColumnWidth(col);\r\n\r\n if (oldWidth !== newWidth) {\r\n this.tableWidthChanged(true); // Calculate actual sizes\r\n }\r\n\r\n this.trigger('columnwidth', col.name, oldWidth, newWidth);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {String} column name of the column\r\n * @returns {String|null} the serialized width of the specified column, or null if column not found\r\n */\r\nDGTable.prototype.getColumnWidth = function (column) {\r\n const p = this.p;\r\n\r\n let col = p.columns.get(column);\r\n if (col) {\r\n return this._serializeColumnWidth(col);\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {String} column name of the column\r\n * @returns {SERIALIZED_COLUMN|null} configuration for all columns\r\n */\r\nDGTable.prototype.getColumnConfig = function (column) {\r\n const p = this.p;\r\n let col = p.columns.get(column);\r\n if (col) {\r\n return {\r\n 'order': col.order,\r\n 'width': this._serializeColumnWidth(col),\r\n 'visible': col.visible,\r\n 'label': col.label,\r\n };\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Returns a config object for the columns, to allow saving configurations for next time...\r\n * @public\r\n * @expose\r\n * @returns {Object} configuration for all columns\r\n */\r\nDGTable.prototype.getColumnsConfig = function () {\r\n const p = this.p;\r\n\r\n let config = {};\r\n for (let i = 0; i < p.columns.length; i++) {\r\n config[p.columns[i].name] = this.getColumnConfig(p.columns[i].name);\r\n }\r\n return config;\r\n};\r\n\r\n/**\r\n * Returns an array of the currently sorted columns\r\n * @public\r\n * @expose\r\n * @returns {Array.<SERIALIZED_COLUMN_SORT>} configuration for all columns\r\n */\r\nDGTable.prototype.getSortedColumns = function () {\r\n const p = this.p;\r\n\r\n let sorted = [];\r\n for (let i = 0; i < p.rows.sortColumn.length; i++) {\r\n let sort = p.rows.sortColumn[i];\r\n sorted.push({ column: sort.column, descending: sort.descending });\r\n }\r\n return sorted;\r\n};\r\n\r\n/**\r\n * Returns the HTML string for a specific cell. Can be used externally for special cases (i.e. when setting a fresh HTML in the cell preview through the callback).\r\n * @public\r\n * @expose\r\n * @param {number} rowIndex - index of the row\r\n * @param {string} columnName - name of the column\r\n * @returns {string} HTML string for the specified cell\r\n */\r\nDGTable.prototype.getHtmlForRowCell = function (rowIndex, columnName) {\r\n const p = this.p;\r\n\r\n if (rowIndex < 0 || rowIndex > p.rows.length - 1) return null;\r\n let column = p.columns.get(columnName);\r\n if (!column) return null;\r\n let rowData = p.rows[rowIndex];\r\n\r\n return this._getHtmlForCell(rowData, column);\r\n};\r\n\r\n/**\r\n * Returns the HTML string for a specific cell. Can be used externally for special cases (i.e. when setting a fresh HTML in the cell preview through the callback).\r\n * @public\r\n * @expose\r\n * @param {Object} rowData - row data\r\n * @param {Object} columnName - column data\r\n * @returns {string|null} HTML string for the specified cell\r\n */\r\nDGTable.prototype.getHtmlForRowDataCell = function (rowData, columnName) {\r\n const p = this.p;\r\n\r\n let column = p.columns.get(columnName);\r\n if (!column) return null;\r\n\r\n return this._getHtmlForCell(rowData, column);\r\n};\r\n\r\n/**\r\n * Returns the HTML string for a specific cell. Can be used externally for special cases (i.e. when setting a fresh HTML in the cell preview through the callback).\r\n * @private\r\n * @expose\r\n * @param {Object} rowData - row data\r\n * @param {Object} column - column data\r\n * @returns {string} HTML string for the specified cell\r\n */\r\nDGTable.prototype._getHtmlForCell = function (rowData, column) {\r\n let dataPath = column.dataPath;\r\n let colValue = rowData[dataPath[0]];\r\n for (let dataPathIndex = 1; dataPathIndex < dataPath.length; dataPathIndex++) {\r\n if (colValue == null) break;\r\n colValue = colValue && colValue[dataPath[dataPathIndex]];\r\n }\r\n\r\n const formatter = this.o.cellFormatter;\r\n let content;\r\n\r\n if (formatter[IsSafeSymbol]) {\r\n content = formatter(colValue, column.name, rowData);\r\n } else {\r\n try {\r\n content = formatter(colValue, column.name, rowData);\r\n } catch (err) {\r\n content = '[ERROR]';\r\n // eslint-disable-next-line no-console\r\n console.error('Failed to generate content for cell ' + column.name, err);\r\n }\r\n }\r\n\r\n if (content === undefined || content === null) {\r\n content = '';\r\n }\r\n\r\n return content;\r\n};\r\n\r\n/**\r\n * Returns the y pos of a row by index\r\n * @public\r\n * @expose\r\n * @param {Number} rowIndex - index of the row\r\n * @returns {Number|null} Y pos\r\n */\r\nDGTable.prototype.getRowYPos = function (rowIndex) {\r\n const p = this.p;\r\n\r\n if (this.o.virtualTable) {\r\n return rowIndex > 0 ? p.virtualRowHeightFirst + (rowIndex - 1) * p.virtualRowHeight : 0;\r\n } else {\r\n let row = p.tbody.childNodes[rowIndex];\r\n return row ? row.offsetTop : null;\r\n }\r\n};\r\n\r\n/**\r\n * Returns the row data for a specific row\r\n * @public\r\n * @expose\r\n * @param {Number} row index of the row\r\n * @returns {Object} Row data\r\n */\r\nDGTable.prototype.getDataForRow = function (row) {\r\n const p = this.p;\r\n\r\n if (row < 0 || row > p.rows.length - 1) return null;\r\n return p.rows[row];\r\n};\r\n\r\n/**\r\n * Gets the number of rows\r\n * @public\r\n * @expose\r\n * @returns {Number} Row count\r\n */\r\nDGTable.prototype.getRowCount = function () {\r\n const p = this.p;\r\n return p.rows ? p.rows.length : 0;\r\n};\r\n\r\n/**\r\n * Returns the physical row index for specific row\r\n * @public\r\n * @expose\r\n * @param {Object} rowData - Row data to find\r\n * @returns {Number} Row index\r\n */\r\nDGTable.prototype.getIndexForRow = function (rowData) {\r\n const p = this.p;\r\n return p.rows.indexOf(rowData);\r\n};\r\n\r\n/**\r\n * Gets the number of filtered rows\r\n * @public\r\n * @expose\r\n * @returns {Number} Filtered row count\r\n */\r\nDGTable.prototype.getFilteredRowCount = function () {\r\n const p = this.p;\r\n return (p.filteredRows || p.rows).length;\r\n};\r\n\r\n/**\r\n * Returns the filtered row index for specific row\r\n * @public\r\n * @expose\r\n * @param {Object} rowData - Row data to find\r\n * @returns {Number} Row index\r\n */\r\nDGTable.prototype.getIndexForFilteredRow = function (rowData) {\r\n const p = this.p;\r\n return (p.filteredRows || p.rows).indexOf(rowData);\r\n};\r\n\r\n/**\r\n * Returns the row data for a specific row\r\n * @public\r\n * @expose\r\n * @param {Number} row index of the filtered row\r\n * @returns {Object} Row data\r\n */\r\nDGTable.prototype.getDataForFilteredRow = function (row) {\r\n const p = this.p;\r\n if (row < 0 || row > (p.filteredRows || p.rows).length - 1) return null;\r\n return (p.filteredRows || p.rows)[row];\r\n};\r\n\r\n/**\r\n * Returns DOM element of the header row\r\n * @public\r\n * @expose\r\n * @returns {Element} Row element\r\n */\r\nDGTable.prototype.getHeaderRowElement = function () {\r\n return this.p.headerRow;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {Element} el\r\n * @returns {Number} width\r\n */\r\nDGTable.prototype._horizontalPadding = function(el) {\r\n return ((parseFloat($.css(el, 'padding-left')) || 0) +\r\n (parseFloat($.css(el, 'padding-right')) || 0));\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {Element} el\r\n * @returns {Number} width\r\n */\r\nDGTable.prototype._horizontalBorderWidth = function(el) {\r\n return ((parseFloat($.css(el, 'border-left')) || 0) +\r\n (parseFloat($.css(el, 'border-right')) || 0));\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {Number} width\r\n */\r\nDGTable.prototype._calculateWidthAvailableForColumns = function() {\r\n const o = this.o, p = this.p;\r\n\r\n // Changing display mode briefly, to prevent taking in account the parent's scrollbar width when we are the cause for it\r\n let oldDisplay, lastScrollTop, lastScrollLeft;\r\n if (p.$table) {\r\n lastScrollTop = p.table ? p.table.scrollTop : 0;\r\n lastScrollLeft = p.table ? p.table.scrollLeft : 0;\r\n\r\n if (o.virtualTable) {\r\n oldDisplay = p.$table[0].style.display;\r\n p.$table[0].style.display = 'none';\r\n }\r\n }\r\n\r\n let detectedWidth = getElementWidth(this.$el[0]);\r\n\r\n if (p.$table) {\r\n if (o.virtualTable) {\r\n p.$table[0].style.display = oldDisplay;\r\n }\r\n\r\n p.table.scrollTop = lastScrollTop;\r\n p.table.scrollLeft = lastScrollLeft;\r\n p.header.scrollLeft = lastScrollLeft;\r\n }\r\n\r\n let tableClassName = o.tableClassName;\r\n\r\n let $thisWrapper = $('<div>').addClass(this.el.className).css({ 'z-index': -1, 'position': 'absolute', left: '0', top: '-9999px' });\r\n let $header = $('<div>').addClass(tableClassName + '-header').appendTo($thisWrapper);\r\n let $headerRow = $('<div>').addClass(tableClassName + '-header-row').appendTo($header);\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n $headerRow.append($('<div><div></div></div>').addClass(tableClassName + '-header-cell').addClass(p.visibleColumns[i].cellClasses || ''));\r\n }\r\n $thisWrapper.appendTo(document.body);\r\n\r\n detectedWidth -= this._horizontalBorderWidth($headerRow[0]);\r\n\r\n let $cells = $headerRow.find('>div.' + tableClassName + '-header-cell');\r\n for (let i = 0; i < $cells.length; i++) {\r\n let $cell = $($cells[i]);\r\n\r\n let isBoxing = $cell.css('boxSizing') === 'border-box';\r\n if (!isBoxing) {\r\n detectedWidth -=\r\n (parseFloat($cell.css('border-right-width')) || 0) +\r\n (parseFloat($cell.css('border-left-width')) || 0) +\r\n (this._horizontalPadding($cell[0])); // CELL's padding\r\n }\r\n }\r\n\r\n if ($thisWrapper) {\r\n $thisWrapper.remove();\r\n }\r\n\r\n return Math.max(0, detectedWidth);\r\n};\r\n\r\n/**\r\n * Notify the table that its width has changed\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.tableWidthChanged = (function () {\r\n\r\n let getTextWidth = function(text) {\r\n let tableClassName = this.o.tableClassName;\r\n\r\n let $cell, $tableWrapper = $('<div>').addClass(this.$el).append(\r\n $('<div>').addClass(tableClassName + '-header').append(\r\n $('<div>').addClass(tableClassName + '-header-row').append(\r\n $cell = $('<div>').addClass(tableClassName + '-header-cell').append(\r\n $('<div>').text(text),\r\n ),\r\n ),\r\n ),\r\n ).css({ 'position': 'absolute', top: '-9999px', 'visibility': 'hidden' });\r\n $tableWrapper.appendTo(document.body);\r\n\r\n let width = getElementWidth($cell[0]);\r\n\r\n $tableWrapper.remove();\r\n\r\n return width;\r\n };\r\n\r\n let lastDetectedWidth = null;\r\n\r\n /**\r\n * @public\r\n * @expose\r\n * @param {Boolean} [forceUpdate=false]\r\n * @param {Boolean} [renderColumns=true]\r\n * @returns {DGTable} self\r\n */\r\n return function(forceUpdate, renderColumns) {\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p,\r\n detectedWidth = this._calculateWidthAvailableForColumns(),\r\n sizeLeft = detectedWidth,\r\n relatives = 0;\r\n\r\n if (!p.$table) return this;\r\n\r\n renderColumns = renderColumns === undefined || renderColumns;\r\n\r\n let tableWidthBeforeCalculations = 0;\r\n\r\n if (!p.tbody) {\r\n renderColumns = false;\r\n }\r\n\r\n if (renderColumns) {\r\n tableWidthBeforeCalculations = parseFloat(p.tbody.style.minWidth) || 0;\r\n }\r\n\r\n if (sizeLeft !== lastDetectedWidth || forceUpdate) {\r\n lastDetectedWidth = detectedWidth;\r\n\r\n let absWidthTotal = 0, changedColumnIndexes = [], totalRelativePercentage = 0;\r\n\r\n for (let i = 0; i < p.columns.length; i++) {\r\n p.columns[i].actualWidthConsideringScrollbarWidth = null;\r\n }\r\n\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.widthMode === ColumnWidthMode.ABSOLUTE) {\r\n let width = col.width;\r\n width += col.arrowProposedWidth || 0; // Sort-arrow width\r\n if (!col.ignoreMin && width < o.minColumnWidth) {\r\n width = o.minColumnWidth;\r\n }\r\n sizeLeft -= width;\r\n absWidthTotal += width;\r\n\r\n // Update actualWidth\r\n if (width !== col.actualWidth) {\r\n col.actualWidth = width;\r\n changedColumnIndexes.push(i);\r\n }\r\n } else if (col.widthMode === ColumnWidthMode.AUTO) {\r\n let width = getTextWidth.call(this, col.label) + 20;\r\n width += col.arrowProposedWidth || 0; // Sort-arrow width\r\n if (!col.ignoreMin && width < o.minColumnWidth) {\r\n width = o.minColumnWidth;\r\n }\r\n sizeLeft -= width;\r\n absWidthTotal += width;\r\n\r\n // Update actualWidth\r\n if (width !== col.actualWidth) {\r\n col.actualWidth = width;\r\n if (!o.convertColumnWidthsToRelative) {\r\n changedColumnIndexes.push(i);\r\n }\r\n }\r\n } else if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n totalRelativePercentage += col.width;\r\n relatives++;\r\n }\r\n }\r\n\r\n // Normalize relative sizes if needed\r\n if (o.convertColumnWidthsToRelative) {\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.widthMode === ColumnWidthMode.AUTO) {\r\n col.widthMode = ColumnWidthMode.RELATIVE;\r\n sizeLeft += col.actualWidth;\r\n col.width = col.actualWidth / absWidthTotal;\r\n totalRelativePercentage += col.width;\r\n relatives++;\r\n }\r\n }\r\n }\r\n\r\n // Normalize relative sizes if needed\r\n if (relatives && ((totalRelativePercentage < 1 && o.relativeWidthGrowsToFillWidth) ||\r\n (totalRelativePercentage > 1 && o.relativeWidthShrinksToFillWidth))) {\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n col.width /= totalRelativePercentage;\r\n }\r\n }\r\n }\r\n\r\n let sizeLeftForRelative = Math.max(0, sizeLeft); // Use this as the space to take the relative widths out of\r\n if (sizeLeftForRelative === 0) {\r\n sizeLeftForRelative = p.table.clientWidth;\r\n }\r\n\r\n let minColumnWidthRelative = (o.minColumnWidth / sizeLeftForRelative);\r\n if (isNaN(minColumnWidthRelative)) {\r\n minColumnWidthRelative = 0;\r\n }\r\n if (minColumnWidthRelative > 0) {\r\n let extraRelative = 0, delta;\r\n\r\n // First pass - make sure they are all constrained to the minimum width\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n if (!col.ignoreMin && col.width < minColumnWidthRelative) {\r\n extraRelative += minColumnWidthRelative - col.width;\r\n col.width = minColumnWidthRelative;\r\n }\r\n }\r\n }\r\n\r\n // Second pass - try to take the extra width out of the other columns to compensate\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n if (!col.ignoreMin && col.width > minColumnWidthRelative) {\r\n if (extraRelative > 0) {\r\n delta = Math.min(extraRelative, col.width - minColumnWidthRelative);\r\n col.width -= delta;\r\n extraRelative -= delta;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Try to fill width\r\n if (o.autoFillTableWidth && sizeLeft > 0) {\r\n let nonResizableTotal = 0;\r\n let sizeLeftToFill = sizeLeft;\r\n\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (!col.resizable && col.widthMode === ColumnWidthMode.ABSOLUTE)\r\n nonResizableTotal += col.width;\r\n\r\n if (col.widthMode === ColumnWidthMode.RELATIVE)\r\n sizeLeftToFill -= Math.round(sizeLeftForRelative * col.width);\r\n }\r\n\r\n let conv = ((detectedWidth - nonResizableTotal) / (detectedWidth - sizeLeftToFill - nonResizableTotal)) || NaN;\r\n for (let i = 0; i < p.visibleColumns.length && sizeLeftToFill > 0; i++) {\r\n let col = p.visibleColumns[i];\r\n if (!col.resizable && col.widthMode === ColumnWidthMode.ABSOLUTE)\r\n continue;\r\n\r\n if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n col.width *= conv;\r\n } else {\r\n let width = col.actualWidth * conv;\r\n if (col.actualWidth !== width) {\r\n col.actualWidth = width;\r\n if (changedColumnIndexes.indexOf(i) === -1)\r\n changedColumnIndexes.push(i);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Materialize relative sizes\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n let width = Math.round(sizeLeftForRelative * col.width);\r\n sizeLeft -= width;\r\n relatives--;\r\n\r\n // Take care of rounding errors\r\n if (relatives === 0 && sizeLeft === 1) { // Take care of rounding errors\r\n width++;\r\n sizeLeft--;\r\n }\r\n if (sizeLeft === -1) {\r\n width--;\r\n sizeLeft++;\r\n }\r\n\r\n // Update actualWidth\r\n if (width !== col.actualWidth) {\r\n col.actualWidth = width;\r\n changedColumnIndexes.push(i);\r\n }\r\n }\r\n }\r\n\r\n if (p.visibleColumns.length) {\r\n // (There should always be at least 1 column visible, but just in case)\r\n p.visibleColumns[p.visibleColumns.length - 1].actualWidthConsideringScrollbarWidth =\r\n p.visibleColumns[p.visibleColumns.length - 1].actualWidth - (p.scrollbarWidth || 0);\r\n }\r\n\r\n if (renderColumns) {\r\n let tableWidth = this._calculateTbodyWidth();\r\n\r\n if (tableWidthBeforeCalculations < tableWidth) {\r\n this._updateTableWidth(false);\r\n }\r\n\r\n for (let i = 0; i < changedColumnIndexes.length; i++) {\r\n this._resizeColumnElements(changedColumnIndexes[i]);\r\n }\r\n\r\n if (tableWidthBeforeCalculations > tableWidth) {\r\n this._updateTableWidth(false);\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n})();\r\n\r\n/**\r\n * Notify the table that its height has changed\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.tableHeightChanged = function () {\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n if (!p.$table) {\r\n return that;\r\n }\r\n\r\n let height = getElementHeight(that.$el[0], true)\r\n - (parseFloat(p.$table.css('border-top-width')) || 0) // Subtract top border of inner element\r\n - (parseFloat(p.$table.css('border-bottom-width')) || 0); // Subtract bottom border of inner element\r\n\r\n if (height !== o.height) {\r\n\r\n o.height = height;\r\n\r\n if (p.tbody) {\r\n // At least 1 pixel - to show scrollers correctly.\r\n p.tbody.style.height = Math.max(o.height - getElementHeight(p.$headerRow[0], true, true, true), 1) + 'px';\r\n }\r\n\r\n if (o.virtualTable) {\r\n that.clearAndRender();\r\n }\r\n }\r\n\r\n return that;\r\n};\r\n\r\n/**\r\n * Add rows to the table\r\n * @public\r\n * @expose\r\n * @param {Object[]} data - array of rows to add to the table\r\n * @param {Number} [at=-1] - where to add the rows at\r\n * @param {Boolean} [resort=false] - should resort all rows?\r\n * @param {Boolean} [render=true]\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.addRows = function (data, at, resort, render) {\r\n let that = this,\r\n p = that.p;\r\n\r\n if (typeof at === 'boolean') {\r\n render = resort;\r\n resort = at;\r\n at = -1;\r\n }\r\n\r\n if (typeof at !== 'number')\r\n at = -1;\r\n\r\n if (at < 0 || at > p.rows.length)\r\n at = p.rows.length;\r\n\r\n render = (render === undefined) ? true : !!render;\r\n\r\n if (data) {\r\n p.rows.add(data, at);\r\n\r\n if (p.filteredRows || (resort && p.rows.sortColumn.length)) {\r\n\r\n if (resort && p.rows.sortColumn.length) {\r\n this.resort();\r\n } else {\r\n this._refilter();\r\n }\r\n\r\n p.tableSkeletonNeedsRendering = true;\r\n\r\n if (render) {\r\n // Render the skeleton with all rows from scratch\r\n this.render();\r\n }\r\n\r\n } else if (render) {\r\n let childNodes = p.tbody.childNodes;\r\n\r\n if (that.o.virtualTable) {\r\n\r\n while (p.tbody.firstChild) {\r\n this.trigger('rowdestroy', p.tbody.firstChild);\r\n this._unbindCellEventsForRow(p.tbody.firstChild);\r\n p.tbody.removeChild(p.tbody.firstChild);\r\n }\r\n\r\n this._calculateVirtualHeight() // Calculate virtual height\r\n ._updateLastCellWidthFromScrollbar() // Detect vertical scrollbar height\r\n .render()\r\n ._updateTableWidth(false); // Update table width to suit the required width considering vertical scrollbar\r\n\r\n } else if (p.$tbody) {\r\n\r\n let firstRow = at,\r\n lastRow = at + data.length - 1;\r\n\r\n let renderedRows = that.renderRows(firstRow, lastRow);\r\n p.tbody.insertBefore(renderedRows, childNodes[at] || null);\r\n\r\n for (let i = lastRow + 1; i < childNodes.length; i++) {\r\n let row = childNodes[i];\r\n row['rowIndex'] += data.length;\r\n row['physicalRowIndex'] += data.length;\r\n }\r\n\r\n this.render()\r\n ._updateLastCellWidthFromScrollbar() // Detect vertical scrollbar height, and update existing last cells\r\n ._updateTableWidth(true); // Update table width to suit the required width considering vertical scrollbar\r\n\r\n }\r\n }\r\n\r\n this.trigger('addrows', data.length, false);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a row from the table\r\n * @public\r\n * @expose\r\n * @param {Number} physicalRowIndex - index\r\n * @param {Number} count - how many rows to remove\r\n * @param {Boolean=true} render\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.removeRows = function (physicalRowIndex, count, render) {\r\n let that = this,\r\n p = that.p;\r\n\r\n if (typeof count !== 'number' || count <= 0) return this;\r\n\r\n if (physicalRowIndex < 0 || physicalRowIndex > p.rows.length - 1) return this;\r\n\r\n p.rows.splice(physicalRowIndex, count);\r\n render = (render === undefined) ? true : !!render;\r\n\r\n if (p.filteredRows) {\r\n\r\n this._refilter();\r\n\r\n p.tableSkeletonNeedsRendering = true;\r\n\r\n if (render) {\r\n // Render the skeleton with all rows from scratch\r\n this.render();\r\n }\r\n\r\n } else if (render) {\r\n\r\n let childNodes = p.tbody.childNodes;\r\n\r\n if (this.o.virtualTable) {\r\n\r\n while (p.tbody.firstChild) {\r\n this.trigger('rowdestroy', p.tbody.firstChild);\r\n this._unbindCellEventsForRow(p.tbody.firstChild);\r\n p.tbody.removeChild(p.tbody.firstChild);\r\n }\r\n\r\n this._calculateVirtualHeight()\r\n ._updateLastCellWidthFromScrollbar()\r\n .render()\r\n ._updateTableWidth(false); // Update table width to suit the required width considering vertical scrollbar\r\n\r\n\r\n } else {\r\n\r\n let countRemoved = 0, lastRowIndex = physicalRowIndex + count - 1;\r\n\r\n for (let i = 0; i < childNodes.length; i++) {\r\n let row = childNodes[i];\r\n let index = row['physicalRowIndex'];\r\n\r\n if (index >= physicalRowIndex) {\r\n if (index <= lastRowIndex) {\r\n this.trigger('rowdestroy', row);\r\n this._unbindCellEventsForRow(row);\r\n p.tbody.removeChild(row);\r\n i--;\r\n } else {\r\n row['physicalRowIndex'] -= count;\r\n }\r\n } else {\r\n row['rowIndex'] = i;\r\n }\r\n }\r\n\r\n this.render()\r\n ._updateLastCellWidthFromScrollbar()\r\n ._updateTableWidth(true); // Update table width to suit the required width considering vertical scrollbar\r\n\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a row from the table\r\n * @public\r\n * @expose\r\n * @param {Number} physicalRowIndex - index\r\n * @param {Boolean=true} render\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.removeRow = function (physicalRowIndex, render) {\r\n return this.removeRows(physicalRowIndex, 1, render);\r\n};\r\n\r\n/**\r\n * Refreshes the row specified\r\n * @public\r\n * @expose\r\n * @param {Number} physicalRowIndex index\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.refreshRow = function(physicalRowIndex) {\r\n let that = this,\r\n p = that.p;\r\n\r\n if (physicalRowIndex < 0 || physicalRowIndex > p.rows.length - 1) return this;\r\n\r\n // Find out if the row is in the rendered dataset\r\n let rowIndex = -1;\r\n if (p.filteredRows && (rowIndex = p.filteredRows.indexOf(p.rows[physicalRowIndex])) === -1) return this;\r\n\r\n if (rowIndex === -1) {\r\n rowIndex = physicalRowIndex;\r\n }\r\n\r\n let childNodes = p.tbody.childNodes;\r\n\r\n if (this.o.virtualTable) {\r\n // Now make sure that the row actually rendered, as this is a virtual table\r\n let isRowVisible = false;\r\n let i = 0;\r\n\r\n for (; i < childNodes.length; i++) {\r\n if (childNodes[i]['physicalRowIndex'] === physicalRowIndex) {\r\n isRowVisible = true;\r\n this.trigger('rowdestroy', childNodes[i]);\r\n this._unbindCellEventsForRow(childNodes[i]);\r\n p.tbody.removeChild(childNodes[i]);\r\n break;\r\n }\r\n }\r\n\r\n if (isRowVisible) {\r\n let renderedRow = this.renderRows(rowIndex, rowIndex);\r\n p.tbody.insertBefore(renderedRow, childNodes[i] || null);\r\n }\r\n } else {\r\n this.trigger('rowdestroy', childNodes[rowIndex]);\r\n this._unbindCellEventsForRow(childNodes[rowIndex]);\r\n p.tbody.removeChild(childNodes[rowIndex]);\r\n let renderedRow = this.renderRows(rowIndex, rowIndex);\r\n p.tbody.insertBefore(renderedRow, childNodes[rowIndex] || null);\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Get the DOM element for the specified row, if it exists\r\n * @public\r\n * @expose\r\n * @param {Number} physicalRowIndex index\r\n * @returns {Element|null} row or null\r\n */\r\nDGTable.prototype.getRowElement = function(physicalRowIndex) {\r\n let that = this,\r\n p = that.p;\r\n\r\n if (physicalRowIndex < 0 || physicalRowIndex > p.rows.length - 1) return null;\r\n\r\n // Find out if the row is in the rendered dataset\r\n let rowIndex = -1;\r\n if (p.filteredRows && (rowIndex = p.filteredRows.indexOf(p.rows[physicalRowIndex])) === -1) return this;\r\n\r\n if (rowIndex === -1) {\r\n rowIndex = physicalRowIndex;\r\n }\r\n\r\n let childNodes = p.tbody.childNodes;\r\n\r\n if (this.o.virtualTable) {\r\n // Now make sure that the row actually rendered, as this is a virtual table\r\n for (let i = 0; i < childNodes.length; i++) {\r\n if (childNodes[i]['physicalRowIndex'] === physicalRowIndex) {\r\n return childNodes[i];\r\n }\r\n }\r\n } else {\r\n return childNodes[rowIndex];\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Refreshes all virtual rows\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.refreshAllVirtualRows = function () {\r\n\r\n const p = this.p;\r\n\r\n if (this.o.virtualTable) {\r\n // Now make sure that the row actually rendered, as this is a virtual table\r\n let rowsToRender = [];\r\n let childNodes = p.tbody.childNodes;\r\n\r\n for (let i = 0, rowCount = childNodes.length; i < rowCount; i++) {\r\n rowsToRender.push(childNodes[i]['physicalRowIndex']);\r\n this.trigger('rowdestroy', childNodes[i]);\r\n this._unbindCellEventsForRow(childNodes[i]);\r\n p.tbody.removeChild(childNodes[i]);\r\n i--;\r\n rowCount--;\r\n }\r\n\r\n for (let i = 0; i < rowsToRender.length; i++) {\r\n let renderedRow = this.renderRows(rowsToRender[i], rowsToRender[i]);\r\n p.tbody.appendChild(renderedRow);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Replace the whole dataset\r\n * @public\r\n * @expose\r\n * @param {Object[]} data array of rows to add to the table\r\n * @param {Boolean} [resort=false] should resort all rows?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setRows = function (data, resort) {\r\n let that = this,\r\n p = that.p;\r\n\r\n // this.scrollTop = this.$el.find('.table').scrollTop();\r\n p.rows.reset(data);\r\n\r\n if (resort && p.rows.sortColumn.length) {\r\n this.resort();\r\n } else {\r\n this._refilter();\r\n }\r\n\r\n this.clearAndRender().trigger('addrows', data.length, true);\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Creates a URL representing the data in the specified element.\r\n * This uses the Blob or BlobBuilder of the modern browsers.\r\n * The url can be used for a Web Worker.\r\n * @public\r\n * @expose\r\n * @param {string} id Id of the element containing your data\r\n * @returns {String|null} the url, or null if not supported\r\n */\r\nDGTable.prototype.getUrlForElementContent = function (id) {\r\n let blob,\r\n el = document.getElementById(id);\r\n if (el) {\r\n let data = el.textContent;\r\n if (typeof Blob === 'function') {\r\n blob = new Blob([data]);\r\n } else {\r\n let BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\r\n if (!BlobBuilder) {\r\n return null;\r\n }\r\n let builder = new BlobBuilder();\r\n builder.append(data);\r\n blob = builder.getBlob();\r\n }\r\n return (window.URL || window.webkitURL).createObjectURL(blob);\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @returns {Boolean} A value indicating whether Web Workers are supported\r\n */\r\nDGTable.prototype.isWorkerSupported = function() {\r\n return window['Worker'] instanceof Function;\r\n};\r\n\r\n/**\r\n * Creates a Web Worker for updating the table.\r\n * @public\r\n * @expose\r\n * @param {string} url Url to the script for the Web Worker\r\n * @param {boolean} [start=true] if true, starts the Worker immediately\r\n * @param {boolean} [resort=false]\r\n * @returns {Worker|null} the Web Worker, or null if not supported\r\n */\r\nDGTable.prototype.createWebWorker = function (url, start, resort) {\r\n if (this.isWorkerSupported()) {\r\n let that = this,\r\n p = that.p;\r\n\r\n let worker = new Worker(url);\r\n let listener = function (evt) {\r\n if (evt.data.append) {\r\n that.addRows(evt.data.rows, resort);\r\n } else {\r\n that.setRows(evt.data.rows, resort);\r\n }\r\n };\r\n worker.addEventListener('message', listener, false);\r\n if (!p.workerListeners) {\r\n p.workerListeners = [];\r\n }\r\n p.workerListeners.push({ worker: worker, listener: listener });\r\n if (start || start === undefined) {\r\n worker.postMessage(null);\r\n }\r\n return worker;\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Unbinds a Web Worker from the table, stopping updates.\r\n * @public\r\n * @expose\r\n * @param {Worker} worker the Web Worker\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.unbindWebWorker = function (worker) {\r\n let that = this,\r\n p = that.p;\r\n\r\n if (p.workerListeners) {\r\n for (let j = 0; j < p.workerListeners.length; j++) {\r\n if (p.workerListeners[j].worker === worker) {\r\n worker.removeEventListener('message', p.workerListeners[j].listener, false);\r\n p.workerListeners.splice(j, 1);\r\n j--;\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * A synonym for hideCellPreview()\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.abortCellPreview = function() {\r\n this.hideCellPreview();\r\n return this;\r\n};\r\n\r\n/**\r\n * Cancel a resize in progress\r\n * @expose\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.cancelColumnResize = function() {\r\n const p = this.p;\r\n\r\n if (p.$resizer) {\r\n p.$resizer.remove();\r\n p.$resizer = null;\r\n $(document).off('mousemove.dgtable', p.onMouseMoveResizeAreaBound)\r\n .off('mouseup.dgtable', p.onEndDragColumnHeaderBound);\r\n }\r\n\r\n return this;\r\n};\r\n\r\nDGTable.prototype._onVirtualTableScrolled = function () {\r\n this.render();\r\n};\r\n\r\nDGTable.prototype._onTableScrolledHorizontally = function () {\r\n const p = this.p;\r\n\r\n p.header.scrollLeft = p.table.scrollLeft;\r\n};\r\n\r\n/**previousElementSibling\r\n * Reverse-calculate the column to resize from mouse position\r\n * @private\r\n * @param {jQuery_Event} e jQuery mouse event\r\n * @returns {String} name of the column which the mouse is over, or null if the mouse is not in resize position\r\n */\r\nDGTable.prototype._getColumnByResizePosition = function (e) {\r\n\r\n let that = this,\r\n o = that.o,\r\n rtl = this._isTableRtl();\r\n\r\n let $headerCell = $(e.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName),\r\n headerCell = $headerCell[0];\r\n if (headerCell['__cell']) {\r\n headerCell = headerCell['__cell'];\r\n $headerCell = $(headerCell);\r\n }\r\n\r\n let previousElementSibling = $headerCell[0].previousSibling;\r\n while (previousElementSibling && previousElementSibling.nodeType !== 1) {\r\n previousElementSibling = previousElementSibling.previousSibling;\r\n }\r\n\r\n let firstCol = !previousElementSibling;\r\n\r\n let mouseX = ((e.pageX != null ? e.pageX : e.originalEvent.pageX) || e.originalEvent.clientX) - $headerCell.offset().left;\r\n\r\n if (rtl) {\r\n if (!firstCol && getElementWidth($headerCell[0], true, true, true) - mouseX <= o.resizeAreaWidth / 2) {\r\n return previousElementSibling['columnName'];\r\n } else if (mouseX <= o.resizeAreaWidth / 2) {\r\n return headerCell['columnName'];\r\n }\r\n } else {\r\n if (!firstCol && mouseX <= o.resizeAreaWidth / 2) {\r\n return previousElementSibling['columnName'];\r\n } else if (getElementWidth($headerCell[0], true, true, true) - mouseX <= o.resizeAreaWidth / 2) {\r\n return headerCell['columnName'];\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * @param {jQuery_Event} event\r\n */\r\nDGTable.prototype._onTouchStartColumnHeader = function (event) {\r\n const p = this.p;\r\n\r\n if (p.currentTouchId) return;\r\n\r\n let startTouch = event.originalEvent.changedTouches[0];\r\n p.currentTouchId = startTouch.identifier;\r\n\r\n let $eventTarget = $(event.currentTarget);\r\n\r\n let startPos = { x: startTouch.pageX, y: startTouch.pageY },\r\n currentPos = startPos,\r\n distanceTreshold = 9;\r\n\r\n let tapAndHoldTimeout;\r\n\r\n let unbind = function () {\r\n p.currentTouchId = null;\r\n $eventTarget.off('touchend').off('touchcancel');\r\n clearTimeout(tapAndHoldTimeout);\r\n };\r\n\r\n let fakeEvent = function (name) {\r\n let fakeEvent = $.Event(name);\r\n let extendObjects = Array.prototype.slice.call(arguments, 1);\r\n for (let key of ['target', 'clientX', 'clientY', 'offsetX', 'offsetY', 'screenX', 'screenY', 'pageX', 'pageY', 'which']) {\r\n fakeEvent[key] = event[key];\r\n for (let i = 0; i < extendObjects.length; i++) {\r\n if (extendObjects[i][key] != null) {\r\n fakeEvent[key] = extendObjects[i][key];\r\n }\r\n }\r\n }\r\n return fakeEvent;\r\n };\r\n\r\n $eventTarget.trigger(fakeEvent('mousedown', event.originalEvent.changedTouches[0], { 'which': 1, target: event.target }));\r\n\r\n tapAndHoldTimeout = setTimeout(() => {\r\n unbind();\r\n\r\n $eventTarget\r\n .one('touchend', (event) => {\r\n // Prevent simulated mouse events after touchend\r\n if (!isInputElementEvent(event))\r\n event.preventDefault();\r\n\r\n $eventTarget.off('touchend').off('touchcancel');\r\n })\r\n .one('touchcancel', (_event) => {\r\n $eventTarget.off('touchend').off('touchcancel');\r\n });\r\n\r\n let distanceTravelled = Math.sqrt(Math.pow(Math.abs(currentPos.x - startPos.x), 2) + Math.pow(Math.abs(currentPos.y - startPos.y), 2));\r\n\r\n if (distanceTravelled < distanceTreshold) {\r\n this.cancelColumnResize();\r\n $eventTarget.trigger(fakeEvent('mouseup', event.originalEvent.changedTouches[0], { 'which': 3, target: event.target }));\r\n }\r\n\r\n }, 500);\r\n\r\n $eventTarget\r\n .on('touchend', (event) => {\r\n let touch = find(event.originalEvent.changedTouches, (touch) => touch.identifier === p.currentTouchId);\r\n if (!touch) return;\r\n\r\n unbind();\r\n\r\n // Prevent simulated mouse events after touchend\r\n if (!isInputElementEvent(event))\r\n event.preventDefault();\r\n\r\n currentPos = { x: touch.pageX, y: touch.pageY };\r\n let distanceTravelled = Math.sqrt(Math.pow(Math.abs(currentPos.x - startPos.x), 2) + Math.pow(Math.abs(currentPos.y - startPos.y), 2));\r\n\r\n if (distanceTravelled < distanceTreshold || p.$resizer) {\r\n $eventTarget.trigger(fakeEvent('mouseup', touch, { 'which': 1, target: event.target }));\r\n $eventTarget.trigger(fakeEvent('click', touch, { 'which': 1, target: event.target }));\r\n }\r\n\r\n })\r\n .on('touchcancel', () => {\r\n unbind();\r\n })\r\n .on('touchmove', (event) => {\r\n let touch = find(event.originalEvent.changedTouches, (touch) => touch.identifier === p.currentTouchId);\r\n if (!touch) return;\r\n\r\n // Keep track of current position, so we know if we need to cancel the tap-and-hold\r\n currentPos = { x: touch.pageX, y: touch.pageY };\r\n\r\n if (p.$resizer) {\r\n event.preventDefault();\r\n\r\n $eventTarget.trigger(fakeEvent('mousemove', touch, { target: event.target }));\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * @param {jQuery_Event} event\r\n */\r\nDGTable.prototype._onMouseDownColumnHeader = function (event) {\r\n if (event.which !== 1) return this; // Only treat left-clicks\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p,\r\n col = this._getColumnByResizePosition(event);\r\n\r\n if (col) {\r\n let column = p.columns.get(col);\r\n if (!o.resizableColumns || !column || !column.resizable) {\r\n return false;\r\n }\r\n\r\n let rtl = this._isTableRtl();\r\n\r\n if (p.$resizer) {\r\n $(p.$resizer).remove();\r\n }\r\n p.$resizer = $('<div></div>')\r\n .addClass(o.resizerClassName)\r\n .css({\r\n 'position': 'absolute',\r\n 'display': 'block',\r\n 'z-index': -1,\r\n 'visibility': 'hidden',\r\n 'width': '2px',\r\n 'background': '#000',\r\n 'opacity': 0.7,\r\n })\r\n .appendTo(this.$el);\r\n\r\n let selectedHeaderCell = column.element,\r\n commonAncestor = p.$resizer.parent();\r\n\r\n let posCol = selectedHeaderCell.offset(),\r\n posRelative = commonAncestor.offset();\r\n if (ieVersion === 8) {\r\n posCol = selectedHeaderCell.offset(); // IE8 bug, first time it receives zeros...\r\n }\r\n posRelative.left += parseFloat(commonAncestor.css('border-left-width')) || 0;\r\n posRelative.top += parseFloat(commonAncestor.css('border-top-width')) || 0;\r\n posCol.left -= posRelative.left;\r\n posCol.top -= posRelative.top;\r\n posCol.top -= parseFloat(selectedHeaderCell.css('border-top-width')) || 0;\r\n let resizerWidth = getElementWidth(p.$resizer[0], true, true, true);\r\n if (rtl) {\r\n posCol.left -= Math.ceil((parseFloat(selectedHeaderCell.css('border-left-width')) || 0) / 2);\r\n posCol.left -= Math.ceil(resizerWidth / 2);\r\n } else {\r\n posCol.left += getElementWidth(selectedHeaderCell[0], true, true, true);\r\n posCol.left += Math.ceil((parseFloat(selectedHeaderCell.css('border-right-width')) || 0) / 2);\r\n posCol.left -= Math.ceil(resizerWidth / 2);\r\n }\r\n\r\n p.$resizer\r\n .css({\r\n 'z-index': '10',\r\n 'visibility': 'visible',\r\n 'left': posCol.left,\r\n 'top': posCol.top,\r\n 'height': getElementHeight(this.$el[0]),\r\n })[0]['columnName'] = selectedHeaderCell[0]['columnName'];\r\n\r\n try { p.$resizer[0].style.zIndex = ''; }\r\n catch (ignored) { /* we're ok with this */ }\r\n\r\n $(document).on('mousemove.dgtable', p.onMouseMoveResizeAreaBound);\r\n $(document).on('mouseup.dgtable', p.onEndDragColumnHeaderBound);\r\n\r\n event.preventDefault();\r\n }\r\n};\r\n\r\n/**\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onMouseMoveColumnHeader = function (event) {\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n if (o.resizableColumns) {\r\n let col = this._getColumnByResizePosition(event);\r\n let headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName)[0];\r\n if (!col || !p.columns.get(col).resizable) {\r\n headerCell.style.cursor = '';\r\n } else {\r\n headerCell.style.cursor = 'e-resize';\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {jQuery_Event} event\r\n */\r\nDGTable.prototype._onMouseUpColumnHeader = function (event) {\r\n if (event.which === 3) {\r\n let o = this.o;\r\n let $headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName);\r\n let bounds = $headerCell.offset();\r\n bounds['width'] = getElementWidth($headerCell[0], true, true, true);\r\n bounds['height'] = getElementHeight($headerCell[0], true, true, true);\r\n this.trigger('headercontextmenu', $headerCell[0]['columnName'], event.pageX, event.pageY, bounds);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onMouseLeaveColumnHeader = function (event) {\r\n let o = this.o;\r\n let headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName)[0];\r\n headerCell.style.cursor = '';\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onClickColumnHeader = function (event) {\r\n if (isInputElementEvent(event))\r\n return;\r\n\r\n if (!this._getColumnByResizePosition(event)) {\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n let headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName)[0];\r\n if (o.sortableColumns) {\r\n let column = p.columns.get(headerCell['columnName']);\r\n if (column && column.sortable) {\r\n this.sort(headerCell['columnName'], undefined, true).render();\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onStartDragColumnHeader = function (event) {\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n if (o.movableColumns) {\r\n\r\n let $headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName);\r\n let column = p.columns.get($headerCell[0]['columnName']);\r\n if (column && column.movable) {\r\n $headerCell[0].style.opacity = 0.35;\r\n p.dragId = Math.random() * 0x9999999; // Recognize this ID on drop\r\n event.originalEvent.dataTransfer.setData('text', JSON.stringify({ dragId: p.dragId, column: column.name }));\r\n } else {\r\n event.preventDefault();\r\n }\r\n\r\n } else {\r\n\r\n event.preventDefault();\r\n\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {MouseEvent} event event\r\n */\r\nDGTable.prototype._onMouseMoveResizeArea = function (event) {\r\n\r\n let that = this,\r\n p = that.p;\r\n\r\n let column = p.columns.get(p.$resizer[0]['columnName']);\r\n let rtl = this._isTableRtl();\r\n\r\n let selectedHeaderCell = column.element,\r\n commonAncestor = p.$resizer.parent();\r\n let posCol = selectedHeaderCell.offset(), posRelative = commonAncestor.offset();\r\n posRelative.left += parseFloat(commonAncestor.css('border-left-width')) || 0;\r\n posCol.left -= posRelative.left;\r\n let resizerWidth = getElementWidth(p.$resizer[0], true, true, true);\r\n\r\n let isBoxing = selectedHeaderCell.css('box-sizing') === 'border-box';\r\n\r\n let actualX = event.pageX - posRelative.left;\r\n let minX = posCol.left;\r\n\r\n minX -= Math.ceil(resizerWidth / 2);\r\n\r\n if (rtl) {\r\n minX += getElementWidth(selectedHeaderCell[0], true, true, true);\r\n minX -= column.ignoreMin ? 0 : this.o.minColumnWidth;\r\n\r\n if (!isBoxing) {\r\n minX -= Math.ceil((parseFloat(selectedHeaderCell.css('border-left-width')) || 0) / 2);\r\n minX -= this._horizontalPadding(selectedHeaderCell[0]);\r\n }\r\n\r\n if (actualX > minX) {\r\n actualX = minX;\r\n }\r\n } else {\r\n minX += column.ignoreMin ? 0 : this.o.minColumnWidth;\r\n\r\n if (!isBoxing) {\r\n minX += Math.ceil((parseFloat(selectedHeaderCell.css('border-right-width')) || 0) / 2);\r\n minX += this._horizontalPadding(selectedHeaderCell[0]);\r\n }\r\n\r\n if (actualX < minX) {\r\n actualX = minX;\r\n }\r\n }\r\n\r\n p.$resizer.css('left', actualX + 'px');\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {Event} event event\r\n */\r\nDGTable.prototype._onEndDragColumnHeader = function (event) {\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n if (!p.$resizer) {\r\n event.target.style.opacity = null;\r\n } else {\r\n $(document).off('mousemove.dgtable', p.onMouseMoveResizeAreaBound)\r\n .off('mouseup.dgtable', p.onEndDragColumnHeaderBound);\r\n\r\n let column = p.columns.get(p.$resizer[0]['columnName']);\r\n let rtl = this._isTableRtl();\r\n\r\n let selectedHeaderCell = column.element,\r\n commonAncestor = p.$resizer.parent();\r\n let posCol = selectedHeaderCell.offset(), posRelative = commonAncestor.offset();\r\n posRelative.left += parseFloat(commonAncestor.css('border-left-width')) || 0;\r\n posCol.left -= posRelative.left;\r\n let resizerWidth = getElementWidth(p.$resizer[0], true, true, true);\r\n\r\n let isBoxing = selectedHeaderCell.css('box-sizing') === 'border-box';\r\n\r\n let actualX = event.pageX - posRelative.left;\r\n let baseX = posCol.left, minX = posCol.left;\r\n let width = 0;\r\n\r\n baseX -= Math.ceil(resizerWidth / 2);\r\n\r\n if (rtl) {\r\n\r\n if (!isBoxing) {\r\n actualX += this._horizontalPadding(selectedHeaderCell[0]);\r\n actualX += parseFloat(selectedHeaderCell.css('border-left-width')) || 0;\r\n actualX += parseFloat(selectedHeaderCell.css('border-right-width')) || 0;\r\n }\r\n\r\n baseX += getElementWidth(selectedHeaderCell[0], true, true, true);\r\n\r\n minX = baseX - (column.ignoreMin ? 0 : this.o.minColumnWidth);\r\n if (actualX > minX) {\r\n actualX = minX;\r\n }\r\n\r\n width = baseX - actualX;\r\n } else {\r\n\r\n if (!isBoxing) {\r\n actualX -= this._horizontalPadding(selectedHeaderCell[0]);\r\n actualX -= parseFloat(selectedHeaderCell.css('border-left-width')) || 0;\r\n actualX -= parseFloat(selectedHeaderCell.css('border-right-width')) || 0;\r\n }\r\n\r\n minX = baseX + (column.ignoreMin ? 0 : this.o.minColumnWidth);\r\n if (actualX < minX) {\r\n actualX = minX;\r\n }\r\n\r\n width = actualX - baseX;\r\n }\r\n\r\n p.$resizer.remove();\r\n p.$resizer = null;\r\n\r\n let sizeToSet = width;\r\n\r\n if (column.widthMode === ColumnWidthMode.RELATIVE) {\r\n let sizeLeft = this._calculateWidthAvailableForColumns();\r\n //sizeLeft -= p.table.offsetWidth - p.table.clientWidth;\r\n\r\n let totalRelativePercentage = 0;\r\n let relatives = 0;\r\n\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.name === column.name) continue;\r\n\r\n if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n totalRelativePercentage += col.width;\r\n relatives++;\r\n } else {\r\n sizeLeft -= col.actualWidth;\r\n }\r\n }\r\n\r\n sizeLeft = Math.max(1, sizeLeft);\r\n sizeToSet = width / sizeLeft;\r\n\r\n if (relatives > 0) {\r\n // When there's more than one relative overall,\r\n // we can do relative enlarging/shrinking.\r\n // Otherwise, we can end up having a 0 width.\r\n\r\n let unNormalizedSizeToSet = sizeToSet / ((1 - sizeToSet) / totalRelativePercentage);\r\n\r\n totalRelativePercentage += sizeToSet;\r\n\r\n // Account for relative widths scaling later\r\n if ((totalRelativePercentage < 1 && o.relativeWidthGrowsToFillWidth) ||\r\n (totalRelativePercentage > 1 && o.relativeWidthShrinksToFillWidth)) {\r\n sizeToSet = unNormalizedSizeToSet;\r\n }\r\n }\r\n\r\n sizeToSet *= 100;\r\n sizeToSet += '%';\r\n }\r\n\r\n this.setColumnWidth(column.name, sizeToSet);\r\n }\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onDragEnterColumnHeader = function (event) {\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n if (o.movableColumns) {\r\n let dataTransferred = event.originalEvent.dataTransfer.getData('text');\r\n if (dataTransferred) {\r\n dataTransferred = JSON.parse(dataTransferred);\r\n }\r\n else {\r\n dataTransferred = null; // WebKit does not provide the dataTransfer on dragenter?..\r\n }\r\n\r\n let $headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName);\r\n if (!dataTransferred ||\r\n (p.dragId === dataTransferred.dragId && $headerCell['columnName'] !== dataTransferred.column)) {\r\n\r\n let column = p.columns.get($headerCell[0]['columnName']);\r\n if (column && (column.movable || column !== p.visibleColumns[0])) {\r\n $($headerCell).addClass('drag-over');\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onDragOverColumnHeader = function (event) {\r\n event.preventDefault();\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onDragLeaveColumnHeader = function (event) {\r\n let o = this.o;\r\n let $headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName);\r\n if ( !$($headerCell[0].firstChild)\r\n .has(event.originalEvent.relatedTarget).length ) {\r\n $headerCell.removeClass('drag-over');\r\n }\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onDropColumnHeader = function (event) {\r\n event.preventDefault();\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n let dataTransferred = JSON.parse(event.originalEvent.dataTransfer.getData('text'));\r\n let $headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName);\r\n if (o.movableColumns && dataTransferred.dragId === p.dragId) {\r\n let srcColName = dataTransferred.column,\r\n destColName = $headerCell[0]['columnName'],\r\n srcCol = p.columns.get(srcColName),\r\n destCol = p.columns.get(destColName);\r\n if (srcCol && destCol && srcCol.movable && (destCol.movable || destCol !== p.visibleColumns[0])) {\r\n this.moveColumn(srcColName, destColName);\r\n }\r\n }\r\n $($headerCell).removeClass('drag-over');\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._clearSortArrows = function () {\r\n\r\n let that = this,\r\n p = that.p;\r\n\r\n if (p.$table) {\r\n let tableClassName = this.o.tableClassName;\r\n let sortedColumns = p.$headerRow.find('>div.' + tableClassName + '-header-cell.sorted');\r\n let arrows = sortedColumns.find('>div>.sort-arrow');\r\n for (let arrow of arrows) {\r\n let col = p.columns.get(arrow.parentNode.parentNode['columnName']);\r\n if (col) {\r\n col.arrowProposedWidth = 0;\r\n }\r\n }\r\n arrows.remove();\r\n sortedColumns.removeClass('sorted').removeClass('desc');\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {String} column the name of the sort column\r\n * @param {Boolean} descending table is sorted descending\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._showSortArrow = function (column, descending) {\r\n\r\n let that = this,\r\n p = that.p;\r\n\r\n let col = p.columns.get(column);\r\n if (!col) return false;\r\n\r\n let arrow = createElement('span');\r\n arrow.className = 'sort-arrow';\r\n\r\n if (col.element) {\r\n col.element.addClass(descending ? 'sorted desc' : 'sorted');\r\n col.element[0].firstChild.insertBefore(arrow, col.element[0].firstChild.firstChild);\r\n }\r\n\r\n if (col.widthMode !== ColumnWidthMode.RELATIVE && this.o.adjustColumnWidthForSortArrow) {\r\n col.arrowProposedWidth = arrow.scrollWidth + (parseFloat($(arrow).css('margin-right')) || 0) + (parseFloat($(arrow).css('margin-left')) || 0);\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {Number} cellIndex index of the column in the DOM\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._resizeColumnElements = function (cellIndex) {\r\n\r\n let that = this,\r\n p = that.p;\r\n\r\n let headerCells = p.$headerRow.find('div.' + this.o.tableClassName + '-header-cell');\r\n let col = p.columns.get(headerCells[cellIndex]['columnName']);\r\n\r\n if (col) {\r\n headerCells[cellIndex].style.width = (col.actualWidthConsideringScrollbarWidth || col.actualWidth) + 'px';\r\n\r\n let width = (col.actualWidthConsideringScrollbarWidth || col.actualWidth) + 'px';\r\n let tbodyChildren = p.$tbody[0].childNodes;\r\n for (let i = 0, count = tbodyChildren.length; i < count; i++) {\r\n let headerRow = tbodyChildren[i];\r\n if (headerRow.nodeType !== 1) continue;\r\n headerRow.childNodes[cellIndex].style.width = width;\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @returns {DGTable} self\r\n * */\r\nDGTable.prototype._destroyHeaderCells = function() {\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n if (p.$headerRow) {\r\n this.trigger('headerrowdestroy', p.headerRow);\r\n p.$headerRow.find('div.' + o.tableClassName + '-header-cell').remove();\r\n p.$headerRow = null;\r\n p.headerRow = null;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._renderSkeletonBase = function () {\r\n let that = this,\r\n p = that.p,\r\n o = that.o;\r\n\r\n // Clean up old elements\r\n\r\n if (p.$table && o.virtualTable) {\r\n p.$table.remove();\r\n if (p.$tbody) {\r\n let rows = p.$tbody[0].childNodes;\r\n for (let i = 0, len = rows.length; i < len; i++) {\r\n that.trigger('rowdestroy', rows[i]);\r\n that._unbindCellEventsForRow(rows[i]);\r\n }\r\n }\r\n p.$table = p.table = p.$tbody = p.tbody = null;\r\n }\r\n\r\n that._destroyHeaderCells();\r\n p.currentTouchId = null;\r\n if (p.$header) {\r\n p.$header.remove();\r\n }\r\n\r\n // Create new base elements\r\n let tableClassName = o.tableClassName,\r\n headerCellClassName = tableClassName + '-header-cell',\r\n header = createElement('div'),\r\n $header = $(header),\r\n headerRow = createElement('div'),\r\n $headerRow = $(headerRow);\r\n\r\n header.className = tableClassName + '-header';\r\n headerRow.className = tableClassName + '-header-row';\r\n\r\n p.$header = $header;\r\n p.header = header;\r\n p.$headerRow = $headerRow;\r\n p.headerRow = headerRow;\r\n $headerRow.appendTo(p.$header);\r\n $header.prependTo(this.$el);\r\n\r\n relativizeElement(that.$el);\r\n\r\n if (o.width === DGTable.Width.SCROLL) {\r\n this.el.style.overflow = 'hidden';\r\n } else {\r\n this.el.style.overflow = '';\r\n }\r\n\r\n if (!o.height && o.virtualTable) {\r\n o.height = getElementHeight(this.$el[0], true);\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._renderSkeletonHeaderCells = function () {\r\n let that = this,\r\n p = that.p,\r\n o = that.o;\r\n\r\n let allowCellPreview = o.allowCellPreview,\r\n allowHeaderCellPreview = o.allowHeaderCellPreview;\r\n\r\n let tableClassName = o.tableClassName,\r\n headerCellClassName = tableClassName + '-header-cell',\r\n headerRow = p.headerRow;\r\n\r\n let ieDragDropHandler;\r\n if (hasIeDragAndDropBug) {\r\n ieDragDropHandler = function(evt) {\r\n evt.preventDefault();\r\n this.dragDrop();\r\n return false;\r\n };\r\n }\r\n\r\n let preventDefault = function (event) { event.preventDefault(); };\r\n\r\n // Create header cells\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let column = p.visibleColumns[i];\r\n if (column.visible) {\r\n let cell = createElement('div');\r\n let $cell = $(cell);\r\n cell.draggable = true;\r\n cell.className = headerCellClassName;\r\n cell.style.width = column.actualWidth + 'px';\r\n if (o.sortableColumns && column.sortable) {\r\n cell.className += ' sortable';\r\n }\r\n cell['columnName'] = column.name;\r\n cell.setAttribute('data-column', column.name);\r\n\r\n let cellInside = createElement('div');\r\n cellInside.innerHTML = o.headerCellFormatter(column.label, column.name);\r\n cell.appendChild(cellInside);\r\n if (allowCellPreview && allowHeaderCellPreview) {\r\n p._bindCellHoverIn(cell);\r\n }\r\n headerRow.appendChild(cell);\r\n\r\n p.visibleColumns[i].element = $cell;\r\n\r\n $cell.on('mousedown.dgtable', that._onMouseDownColumnHeader.bind(that))\r\n .on('mousemove.dgtable', that._onMouseMoveColumnHeader.bind(that))\r\n .on('mouseup.dgtable', that._onMouseUpColumnHeader.bind(that))\r\n .on('mouseleave.dgtable', that._onMouseLeaveColumnHeader.bind(that))\r\n .on('touchstart.dgtable', that._onTouchStartColumnHeader.bind(that))\r\n .on('dragstart.dgtable', that._onStartDragColumnHeader.bind(that))\r\n .on('click.dgtable', that._onClickColumnHeader.bind(that))\r\n .on('contextmenu.dgtable', preventDefault);\r\n $(cellInside)\r\n .on('dragenter.dgtable', that._onDragEnterColumnHeader.bind(that))\r\n .on('dragover.dgtable', that._onDragOverColumnHeader.bind(that))\r\n .on('dragleave.dgtable', that._onDragLeaveColumnHeader.bind(that))\r\n .on('drop.dgtable', that._onDropColumnHeader.bind(that));\r\n\r\n if (hasIeDragAndDropBug) {\r\n $cell.on('selectstart.dgtable', ieDragDropHandler.bind(cell));\r\n }\r\n\r\n // Disable these to allow our own context menu events without interruption\r\n $cell.css({ '-webkit-touch-callout': 'none', '-webkit-user-select': 'none', '-moz-user-select': 'none', '-ms-user-select': 'none', '-o-user-select': 'none', 'user-select': 'none' });\r\n }\r\n }\r\n\r\n this.trigger('headerrowcreate', headerRow);\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._renderSkeletonBody = function () {\r\n let that = this,\r\n p = that.p,\r\n o = that.o;\r\n\r\n let tableClassName = o.tableClassName;\r\n\r\n // Calculate virtual row heights\r\n if (o.virtualTable && !p.virtualRowHeight) {\r\n let createDummyRow = function() {\r\n let row = createElement('div'),\r\n cell = row.appendChild(createElement('div')),\r\n cellInner = cell.appendChild(createElement('div'));\r\n row.className = tableClassName + '-row';\r\n cell.className = tableClassName + '-cell';\r\n cellInner.innerHTML = '0';\r\n row.style.visibility = 'hidden';\r\n row.style.position = 'absolute';\r\n return row;\r\n };\r\n\r\n let $dummyTbody, $dummyWrapper = $('<div>')\r\n .addClass(that.el.className)\r\n .css({ 'z-index': -1, 'position': 'absolute', left: '0', top: '-9999px', width: '1px', overflow: 'hidden' })\r\n .append(\r\n $('<div>').addClass(tableClassName).append(\r\n $dummyTbody = $('<div>').addClass(tableClassName + '-body').css('width', 99999),\r\n ),\r\n );\r\n\r\n $dummyWrapper.appendTo(document.body);\r\n\r\n let row1 = createDummyRow(), row2 = createDummyRow(), row3 = createDummyRow();\r\n $dummyTbody.append(row1, row2, row3);\r\n\r\n p.virtualRowHeightFirst = getElementHeight(row1, true, true, true);\r\n p.virtualRowHeight = getElementHeight(row2, true, true, true);\r\n p.virtualRowHeightLast = getElementHeight(row3, true, true, true);\r\n\r\n p.virtualRowHeightMin = Math.min(Math.min(p.virtualRowHeightFirst, p.virtualRowHeight), p.virtualRowHeightLast);\r\n p.virtualRowHeightMax = Math.max(Math.max(p.virtualRowHeightFirst, p.virtualRowHeight), p.virtualRowHeightLast);\r\n\r\n $dummyWrapper.remove();\r\n }\r\n\r\n // Create inner table and tbody\r\n if (!p.$table) {\r\n\r\n let fragment = document.createDocumentFragment();\r\n\r\n // Create the inner table element\r\n let table = createElement('div');\r\n let $table = $(table);\r\n table.className = tableClassName;\r\n\r\n if (o.virtualTable) {\r\n table.className += ' virtual';\r\n }\r\n\r\n let tableHeight = (o.height - getElementHeight(p.$headerRow[0], true, true, true));\r\n if ($table.css('box-sizing') !== 'border-box') {\r\n tableHeight -= parseFloat($table.css('border-top-width')) || 0;\r\n tableHeight -= parseFloat($table.css('border-bottom-width')) || 0;\r\n tableHeight -= parseFloat($table.css('padding-top')) || 0;\r\n tableHeight -= parseFloat($table.css('padding-bottom')) || 0;\r\n }\r\n p.visibleHeight = tableHeight;\r\n table.style.height = o.height ? tableHeight + 'px' : 'auto';\r\n table.style.display = 'block';\r\n table.style.overflowY = 'auto';\r\n table.style.overflowX = o.width === DGTable.Width.SCROLL ? 'auto' : 'hidden';\r\n fragment.appendChild(table);\r\n\r\n // Create the \"tbody\" element\r\n let tbody = createElement('div');\r\n let $tbody = $(tbody);\r\n tbody.className = o.tableClassName + '-body';\r\n p.table = table;\r\n p.tbody = tbody;\r\n p.$table = $table;\r\n p.$tbody = $tbody;\r\n\r\n if (o.virtualTable) {\r\n p.virtualVisibleRows = Math.ceil(p.visibleHeight / p.virtualRowHeightMin);\r\n }\r\n\r\n that._calculateVirtualHeight();\r\n\r\n relativizeElement($tbody);\r\n relativizeElement($table);\r\n\r\n table.appendChild(tbody);\r\n that.el.appendChild(fragment);\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n * @deprecated\r\n */\r\nDGTable.prototype._renderSkeleton = function () {\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._updateLastCellWidthFromScrollbar = function(force) {\r\n\r\n const p = this.p;\r\n\r\n // Calculate scrollbar's width and reduce from lat column's width\r\n let scrollbarWidth = p.table.offsetWidth - p.table.clientWidth;\r\n if (scrollbarWidth !== p.scrollbarWidth || force) {\r\n p.scrollbarWidth = scrollbarWidth;\r\n for (let i = 0; i < p.columns.length; i++) {\r\n p.columns[i].actualWidthConsideringScrollbarWidth = null;\r\n }\r\n\r\n if (p.scrollbarWidth > 0 && p.visibleColumns.length > 0) {\r\n // (There should always be at least 1 column visible, but just in case)\r\n let lastColIndex = p.visibleColumns.length - 1;\r\n\r\n p.visibleColumns[lastColIndex].actualWidthConsideringScrollbarWidth = p.visibleColumns[lastColIndex].actualWidth - p.scrollbarWidth;\r\n let lastColWidth = p.visibleColumns[lastColIndex].actualWidthConsideringScrollbarWidth + 'px';\r\n let tbodyChildren = p.tbody.childNodes;\r\n for (let i = 0, count = tbodyChildren.length; i < count; i++) {\r\n let row = tbodyChildren[i];\r\n if (row.nodeType !== 1) continue;\r\n row.childNodes[lastColIndex].style.width = lastColWidth;\r\n }\r\n\r\n p.headerRow.childNodes[lastColIndex].style.width = lastColWidth;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Explicitly set the width of the table based on the sum of the column widths\r\n * @private\r\n * @param {boolean} parentSizeMayHaveChanged Parent size may have changed, treat rendering accordingly\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._updateTableWidth = function (parentSizeMayHaveChanged) {\r\n const o = this.o, p = this.p;\r\n let width = this._calculateTbodyWidth();\r\n\r\n p.tbody.style.minWidth = width + 'px';\r\n p.headerRow.style.minWidth = (width + (p.scrollbarWidth || 0)) + 'px';\r\n\r\n p.$table.off('scroll', p.onTableScrolledHorizontallyBound);\r\n\r\n if (o.width === DGTable.Width.AUTO) {\r\n // Update wrapper element's size to fully contain the table body\r\n\r\n setElementWidth(p.$table[0], getElementWidth(p.$tbody[0], true, true, true));\r\n setElementWidth(this.$el[0], getElementWidth(p.$table[0], true, true, true));\r\n\r\n } else if (o.width === DGTable.Width.SCROLL) {\r\n\r\n if (parentSizeMayHaveChanged) {\r\n let lastScrollTop = p.table ? p.table.scrollTop : 0,\r\n lastScrollLeft = p.table ? p.table.scrollLeft : 0;\r\n\r\n // BUGFIX: Relayout before recording the widths\r\n webkitRenderBugfix(this.el);\r\n\r\n p.table.scrollTop = lastScrollTop;\r\n p.table.scrollLeft = lastScrollLeft;\r\n p.header.scrollLeft = lastScrollLeft;\r\n }\r\n\r\n p.$table.on('scroll', p.onTableScrolledHorizontallyBound);\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {Boolean}\r\n */\r\nDGTable.prototype._isTableRtl = function() {\r\n return this.p.$table.css('direction') === 'rtl';\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {Object} column column object\r\n * @returns {String}\r\n */\r\nDGTable.prototype._serializeColumnWidth = function(column) {\r\n return column.widthMode === ColumnWidthMode.AUTO ? 'auto' :\r\n column.widthMode === ColumnWidthMode.RELATIVE ? column.width * 100 + '%' :\r\n column.width;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {HTMLElement} el\r\n */\r\nDGTable.prototype._cellMouseOverEvent = function(el) {\r\n const o = this.o, p = this.p;\r\n\r\n let elInner = el.firstChild;\r\n\r\n if ((elInner.scrollWidth - elInner.clientWidth > 1) ||\r\n (elInner.scrollHeight - elInner.clientHeight > 1)) {\r\n\r\n this.hideCellPreview();\r\n p.abortCellPreview = false;\r\n\r\n let $el = $(el), $elInner = $(elInner);\r\n let previewCell = createElement('div'), $previewCell = $(previewCell);\r\n previewCell.innerHTML = el.innerHTML;\r\n previewCell.className = o.cellPreviewClassName;\r\n\r\n let isHeaderCell = $el.hasClass(o.tableClassName + '-header-cell');\r\n if (isHeaderCell) {\r\n previewCell.className += ' header';\r\n if ($el.hasClass('sortable')) {\r\n previewCell.className += ' sortable';\r\n }\r\n\r\n previewCell.draggable = true;\r\n\r\n $(previewCell).on('mousedown', this._onMouseDownColumnHeader.bind(this))\r\n .on('mousemove', this._onMouseMoveColumnHeader.bind(this))\r\n .on('mouseup', this._onMouseUpColumnHeader.bind(this))\r\n .on('mouseleave', this._onMouseLeaveColumnHeader.bind(this))\r\n .on('touchstart', this._onTouchStartColumnHeader.bind(this))\r\n .on('dragstart', this._onStartDragColumnHeader.bind(this))\r\n .on('click', this._onClickColumnHeader.bind(this))\r\n .on('contextmenu.dgtable', function (event) { event.preventDefault(); });\r\n $(previewCell.firstChild)\r\n .on('dragenter', this._onDragEnterColumnHeader.bind(this))\r\n .on('dragover', this._onDragOverColumnHeader.bind(this))\r\n .on('dragleave', this._onDragLeaveColumnHeader.bind(this))\r\n .on('drop', this._onDropColumnHeader.bind(this));\r\n\r\n if (hasIeDragAndDropBug) {\r\n $(previewCell).on('selectstart', (function(evt) {\r\n evt.preventDefault();\r\n this.dragDrop();\r\n return false;\r\n }).bind(previewCell));\r\n }\r\n }\r\n\r\n let paddingL = parseFloat($el.css('padding-left')) || 0,\r\n paddingR = parseFloat($el.css('padding-right')) || 0,\r\n paddingT = parseFloat($el.css('padding-top')) || 0,\r\n paddingB = parseFloat($el.css('padding-bottom')) || 0;\r\n\r\n let requiredWidth = elInner.scrollWidth + (el.clientWidth - elInner.offsetWidth);\r\n\r\n let borderBox = $el.css('box-sizing') === 'border-box';\r\n if (borderBox) {\r\n $previewCell.css('box-sizing', 'border-box');\r\n } else {\r\n requiredWidth -= paddingL + paddingR;\r\n $previewCell.css('margin-top', parseFloat($(el).css('border-top-width')) || 0);\r\n }\r\n\r\n if (!p.transparentBgColor1) {\r\n // Detect browser's transparent spec\r\n let tempDiv = document.createElement('div');\r\n tempDiv.style.backgroundColor = 'transparent';\r\n p.transparentBgColor1 = $(tempDiv).css('background-color');\r\n tempDiv.style.backgroundColor = 'rgba(0,0,0,0)';\r\n p.transparentBgColor2 = $(tempDiv).css('background-color');\r\n }\r\n\r\n let css = {\r\n 'box-sizing': borderBox ? 'border-box' : 'content-box',\r\n 'width': requiredWidth,\r\n 'min-height': getElementHeight($el[0]),\r\n 'padding-left': paddingL,\r\n 'padding-right': paddingR,\r\n 'padding-top': paddingT,\r\n 'padding-bottom': paddingB,\r\n 'overflow': 'hidden',\r\n 'position': 'absolute',\r\n 'z-index': '-1',\r\n 'left': '0',\r\n 'top': '0',\r\n 'cursor': 'default',\r\n };\r\n\r\n if (css) {\r\n let bgColor = $(el).css('background-color');\r\n if (bgColor === p.transparentBgColor1 || bgColor === p.transparentBgColor2) {\r\n bgColor = $(el.parentNode).css('background-color');\r\n }\r\n if (bgColor === p.transparentBgColor1 || bgColor === p.transparentBgColor2) {\r\n bgColor = '#fff';\r\n }\r\n css['background-color'] = bgColor;\r\n }\r\n\r\n $previewCell.css(css);\r\n\r\n this.el.appendChild(previewCell);\r\n\r\n $(previewCell.firstChild).css({\r\n 'direction': $elInner.css('direction'),\r\n 'white-space': $elInner.css('white-space'),\r\n });\r\n\r\n if (isHeaderCell) {\r\n // Disable these to allow our own context menu events without interruption\r\n $previewCell.css({\r\n '-webkit-touch-callout': 'none',\r\n '-webkit-user-select': 'none',\r\n '-moz-user-select': 'none',\r\n '-ms-user-select': 'none',\r\n '-o-user-select': 'none',\r\n 'user-select': 'none',\r\n });\r\n }\r\n\r\n previewCell['rowIndex'] = el.parentNode['rowIndex'];\r\n let physicalRowIndex = previewCell['physicalRowIndex'] = el.parentNode['physicalRowIndex'];\r\n previewCell['columnName'] = p.visibleColumns[nativeIndexOf.call(el.parentNode.childNodes, el)].name;\r\n\r\n try {\r\n let selection = SelectionHelper.saveSelection(el);\r\n if (selection)\r\n SelectionHelper.restoreSelection(previewCell, selection);\r\n } catch (ignored) { /* we're ok with this */ }\r\n\r\n this.trigger(\r\n 'cellpreview',\r\n previewCell.firstChild,\r\n physicalRowIndex == null ? null : physicalRowIndex,\r\n previewCell['columnName'],\r\n physicalRowIndex == null ? null : p.rows[physicalRowIndex],\r\n el,\r\n );\r\n\r\n if (p.abortCellPreview) {\r\n $previewCell.remove();\r\n return;\r\n }\r\n\r\n let $parent = this.$el;\r\n let $scrollParent = $parent[0] === window ? $(document) : $parent;\r\n\r\n let offset = $el.offset();\r\n let parentOffset = $parent.offset();\r\n let rtl = $el.css('float') === 'right';\r\n let prop = rtl ? 'right' : 'left';\r\n\r\n // Handle RTL, go from the other side\r\n if (rtl) {\r\n let windowWidth = $(window).width();\r\n offset.right = windowWidth - (offset.left + getElementWidth($el[0], true, true, true));\r\n parentOffset.right = windowWidth - (parentOffset.left + getElementWidth($parent[0], true, true, true));\r\n }\r\n\r\n // If the parent has borders, then it would offset the offset...\r\n offset.left -= parseFloat($parent.css('border-left-width')) || 0;\r\n offset.right -= parseFloat($parent.css('border-right-width')) || 0;\r\n offset.top -= parseFloat($parent.css('border-top-width')) || 0;\r\n\r\n // Handle border widths of the element being offset\r\n offset[prop] += parseFloat($(el).css('border-' + prop + '-width')) || 0;\r\n offset.top += parseFloat($(el).css('border-top-width')) || parseFloat($(el).css('border-bottom-width')) || 0;\r\n\r\n // Subtract offsets to get offset relative to parent\r\n offset.left -= parentOffset.left;\r\n offset.right -= parentOffset.right;\r\n offset.top -= parentOffset.top;\r\n\r\n // Constrain horizontally\r\n let minHorz = 0,\r\n maxHorz = $parent - getElementWidth($previewCell[0], true, true, true);\r\n offset[prop] = offset[prop] < minHorz ?\r\n minHorz :\r\n (offset[prop] > maxHorz ? maxHorz : offset[prop]);\r\n\r\n // Constrain vertically\r\n let totalHeight = getElementHeight($el[0], true, true, true);\r\n let maxTop = $scrollParent.scrollTop() + getElementHeight($parent[0], true) - totalHeight;\r\n if (offset.top > maxTop) {\r\n offset.top = Math.max(0, maxTop);\r\n }\r\n\r\n // Apply css to preview cell\r\n let previewCss = {\r\n top: offset.top,\r\n 'z-index': 9999,\r\n };\r\n previewCss[prop] = offset[prop];\r\n\r\n $previewCell.css(previewCss);\r\n\r\n previewCell['__cell'] = el;\r\n p.$cellPreviewCell = $previewCell;\r\n el['__previewCell'] = previewCell;\r\n\r\n p._bindCellHoverOut(el);\r\n p._bindCellHoverOut(previewCell);\r\n\r\n // Avoid interfering with wheel scrolling the table\r\n $previewCell.on('wheel', () => {\r\n // Let the table naturally scroll with the wheel\r\n this.hideCellPreview();\r\n });\r\n }\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {HTMLElement} _el\r\n */\r\nDGTable.prototype._cellMouseOutEvent = function(_el) {\r\n this.hideCellPreview();\r\n};\r\n\r\n/**\r\n * Hides the current cell preview,\r\n * or prevents the one that is currently trying to show (in the 'cellpreview' event)\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.hideCellPreview = function() {\r\n const p = this.p;\r\n\r\n if (p.$cellPreviewCell) {\r\n let previewCell = p.$cellPreviewCell[0];\r\n let origCell = previewCell['__cell'];\r\n let selection;\r\n\r\n try {\r\n selection = SelectionHelper.saveSelection(previewCell);\r\n } catch (ignored) { /* we're ok with this */ }\r\n\r\n p.$cellPreviewCell.remove();\r\n p._unbindCellHoverOut(origCell);\r\n p._unbindCellHoverOut(previewCell);\r\n\r\n try {\r\n if (selection)\r\n SelectionHelper.restoreSelection(origCell, selection);\r\n } catch (ignored) { /* we're ok with this */ }\r\n\r\n this.trigger('cellpreviewdestroy', previewCell.firstChild, previewCell['physicalRowIndex'], previewCell['columnName'], origCell);\r\n\r\n origCell['__previewCell'] = null;\r\n previewCell['__cell'] = null;\r\n\r\n p.$cellPreviewCell = null;\r\n p.abortCellPreview = false;\r\n } else {\r\n p.abortCellPreview = true;\r\n }\r\n\r\n return this;\r\n};\r\n\r\n// It's a shame the Google Closure Compiler does not support exposing a nested @param\r\n\r\n/**\r\n * @typedef {Object} SERIALIZED_COLUMN\r\n * @property {Number|null|undefined} [order=0]\r\n * @property {String|null|undefined} [width='auto']\r\n * @property {Boolean|null|undefined} [visible=true]\r\n * */\r\n\r\n/**\r\n * @typedef {Object} SERIALIZED_COLUMN_SORT\r\n * @property {String|null|undefined} [column='']\r\n * @property {Boolean|null|undefined} [descending=false]\r\n * */\r\n\r\n/**\r\n * @enum {ColumnWidthMode|number|undefined}\r\n * @const\r\n * @typedef {ColumnWidthMode}\r\n */\r\nconst ColumnWidthMode = {\r\n /** @const*/ AUTO: 0,\r\n /** @const*/ ABSOLUTE: 1,\r\n /** @const*/ RELATIVE: 2,\r\n};\r\n\r\n/**\r\n * @enum {DGTable.Width|String|undefined}\r\n * @const\r\n * @typedef {DGTable.Width}\r\n */\r\nDGTable.Width = {\r\n /** @const*/ NONE: 'none',\r\n /** @const*/ AUTO: 'auto',\r\n /** @const*/ SCROLL: 'scroll',\r\n};\r\n\r\n/**\r\n * @expose\r\n * @typedef {Object} COLUMN_SORT_OPTIONS\r\n * @property {String|null|undefined} column\r\n * @property {Boolean|null|undefined} [descending=false]\r\n * */\r\n\r\n/**\r\n * @expose\r\n * @typedef {Object} COLUMN_OPTIONS\r\n * @property {String|null|undefined} width\r\n * @property {String|null|undefined} name\r\n * @property {String|null|undefined} label\r\n * @property {String|null|undefined} dataPath - defaults to `name`\r\n * @property {String|null|undefined} comparePath - defaults to `dataPath`\r\n * @property {Number|String|null|undefined} comparePath\r\n * @property {Boolean|null|undefined} [resizable=true]\r\n * @property {Boolean|null|undefined} [movable=true]\r\n * @property {Boolean|null|undefined} [sortable=true]\r\n * @property {Boolean|null|undefined} [visible=true]\r\n * @property {String|null|undefined} [cellClasses]\r\n * @property {Boolean|null|undefined} [ignoreMin=false]\r\n * */\r\n\r\n/**\r\n * @typedef {Object} DGTable.Options\r\n * @property {COLUMN_OPTIONS[]} [columns]\r\n * @property {Number} [height]\r\n * @property {DGTable.Width} [width]\r\n * @property {Boolean|null|undefined} [virtualTable=true]\r\n * @property {Boolean|null|undefined} [resizableColumns=true]\r\n * @property {Boolean|null|undefined} [movableColumns=true]\r\n * @property {Number|null|undefined} [sortableColumns=1]\r\n * @property {Boolean|null|undefined} [adjustColumnWidthForSortArrow=true]\r\n * @property {Boolean|null|undefined} [relativeWidthGrowsToFillWidth=true]\r\n * @property {Boolean|null|undefined} [relativeWidthShrinksToFillWidth=false]\r\n * @property {Boolean|null|undefined} [convertColumnWidthsToRelative=false]\r\n * @property {Boolean|null|undefined} [autoFillTableWidth=false]\r\n * @property {String|null|undefined} [cellClasses]\r\n * @property {String|String[]|COLUMN_SORT_OPTIONS|COLUMN_SORT_OPTIONS[]} [sortColumn]\r\n * @property {Function|null|undefined} [cellFormatter=null]\r\n * @property {Function|null|undefined} [headerCellFormatter=null]\r\n * @property {Number|null|undefined} [rowsBufferSize=10]\r\n * @property {Number|null|undefined} [minColumnWidth=35]\r\n * @property {Number|null|undefined} [resizeAreaWidth=8]\r\n * @property {{function(string,boolean):{function(a:*,b:*):boolean}}} [onComparatorRequired]\r\n * @property {String|null|undefined} [resizerClassName=undefined]\r\n * @property {String|null|undefined} [tableClassName=undefined]\r\n * @property {Boolean|null|undefined} [allowCellPreview=true]\r\n * @property {Boolean|null|undefined} [allowHeaderCellPreview=true]\r\n * @property {String|null|undefined} [cellPreviewClassName=undefined]\r\n * @property {Boolean|null|undefined} [cellPreviewAutoBackground=true]\r\n * @property {Element|null|undefined} [el=undefined]\r\n * @property {String|null|undefined} [className=undefined]\r\n * @property {Function|null|undefined} [filter=undefined]\r\n * */\r\n\r\n/**\r\n * @typedef {{\r\n * currentTarget: Element,\r\n * data: Object.<string, *>,\r\n * delegateTarget: Element,\r\n * isDefaultPrevented: Boolean,\r\n * isImmediatePropagationStopped: Boolean,\r\n * isPropagationStopped: Boolean,\r\n * namespace: string,\r\n * originalEvent: MouseEvent|TouchEvent|Event,\r\n * pageX: Number,\r\n * pageY: Number,\r\n * preventDefault: Function,\r\n * props: Object.<string, *>,\r\n * relatedTarget: Element,\r\n * result: *,\r\n * stopImmediatePropagation: Function,\r\n * stopPropagation: Function,\r\n * target: Element,\r\n * timeStamp: Number,\r\n * type: string,\r\n * which: Number\r\n * }} jQuery_Event\r\n * */\r\n\r\nif (!$.controls) {\r\n $.controls = {};\r\n}\r\n\r\n$.controls.dgtable = DGTable;\r\n\r\nexport default DGTable;\r\n"],"names":["global","fails","require$$0","call","getOwnPropertyDescriptor","createPropertyDescriptor","FunctionPrototype","uncurryThis","toString","classofRaw","require$$1","require$$2","classof","require$$3","Object","TypeError","requireObjectCoercible","toIndexedObject","isCallable","isObject","getBuiltIn","userAgent","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","require$$4","isSymbol","String","tryToString","aCallable","getMethod","ordinaryToPrimitive","setGlobal","store","sharedModule","toObject","hasOwnProperty","uid","shared","hasOwn","require$$5","Symbol","wellKnownSymbol","require$$6","toPrimitive","toPropertyKey","document","EXISTS","DESCRIPTORS","createElement","IE8_DOM_DEFINE","require$$7","$getOwnPropertyDescriptor","anObject","CONFIGURABLE","definePropertyModule","createNonEnumerableProperty","inspectSource","WeakMap","sharedKey","hiddenKeys","require$$8","redefineModule","floor","toIntegerOrInfinity","max","min","toAbsoluteIndex","toLength","lengthOfArrayLike","indexOf","push","enumBugKeys","ownKeys","copyConstructorProperties","isForced","TO_STRING_TAG","test","createProperty","Array","arrayMethodIsStrict","$","require$$9","require$$10","require$$11","require$$12","prototype","includes","array","item","find","predicate","i","len","length","htmlEncode","text","replace","RowCollection","collection","assign","initialize","apply","arguments","options","sortColumn","add","rows","at","isArray","splice","reset","filteredCollection","filterFunc","args","row","onComparatorRequired","onSort","nativeSort","sort","getDefaultComparator","column","descending","columnName","comparePath","split","pathLength","hasPath","lessVal","moreVal","leftRow","rightRow","leftVal","rightVal","silent","comparators","comparator","defaultComparator","bind","value","ColumnCollection","get","name","getByOrder","order","normalizeOrder","ordered","col1","col2","getColumns","cols","getVisibleColumns","visible","getMaxOrder","moveColumn","src","dest","srcOrder","destOrder","col","CssUtil","_isTransformSupported","getSupportedTransform","prefixes","div","style","undefined","isChildOf","child","parent","parentNode","SelectionHelper","saveSelection","el","range","window","getSelection","getRangeAt","commonAncestorContainer","preSelectionRange","cloneRange","selectNodeContents","setEnd","startContainer","startOffset","start","end","restoreSelection","savedSel","charIndex","nodeStack","node","foundStart","stop","createRange","setStart","collapse","pop","nodeType","nextCharIndex","childNodes","sel","removeAllRanges","addRange","ByColumnFilter","keyword","actualVal","caseSensitive","toLowerCase","nativeIndexOf","jQuery","navigator","ieVersion","parseFloat","substr","hasIeDragAndDropBug","IsSafeSymbol","webkitRenderBugfix","oldDisplay","display","offsetHeight","relativizeElement","$el","css","isInputElementEvent","event","target","tagName","DGTable","Function","concat","slice","VERSION","that","o","p","events","Element","addClass","className","data","on","destroy","onMouseMoveResizeAreaBound","_onMouseMoveResizeArea","onEndDragColumnHeaderBound","_onEndDragColumnHeader","onTableScrolledHorizontallyBound","_onTableScrolledHorizontally","tableSkeletonNeedsRendering","virtualTable","rowsBufferSize","minColumnWidth","Math","resizeAreaWidth","resizableColumns","movableColumns","sortableColumns","parseInt","adjustColumnWidthForSortArrow","convertColumnWidthsToRelative","autoFillTableWidth","cellClasses","resizerClassName","tableClassName","allowCellPreview","allowHeaderCellPreview","cellPreviewClassName","cellPreviewAutoBackground","width","Width","NONE","relativeWidthGrowsToFillWidth","relativeWidthShrinksToFillWidth","setCellFormatter","cellFormatter","setHeaderCellFormatter","headerCellFormatter","setFilter","filter","height","setColumns","columns","sortColumns","tmpSortColumns","dataPath","filteredRows","hoverMouseOverHandler","evt","relatedTarget","fromElement","contains","_cellMouseOverEvent","hoverMouseOutHandler","toElement","_cellMouseOutEvent","_bindCellHoverIn","addEventListener","_unbindCellHoverIn","removeEventListener","_bindCellHoverOut","_unbindCellHoverOut","attachEvent","detachEvent","eventName","callback","cb","once","off","callbacks","trigger","_parseColumnWidth","minWidth","widthSize","widthMode","ColumnWidthMode","AUTO","RELATIVE","ABSOLUTE","mode","_initColumnFromData","columnData","parsedWidth","ignoreMin","label","resizable","sortable","movable","close","remove","__removed","$resizer","$tbody","trs","_destroyHeaderCells","_unbindCellEventsForTable","$table","empty","workerListeners","j","worker","listener","_deferredRender","clearTimeout","prop","headerRow","rowCount","rowToClean","cells","cellCount","tbody","_unbindCellEventsForRow","render","offsetParent","setTimeout","renderedRows","_clearSortArrows","lastScrollTop","table","scrollTop","NaN","lastScrollHorz","getScrollHorz","_renderSkeletonBase","_renderSkeletonBody","tableWidthChanged","_renderSkeletonHeaderCells","renderRows","html","append","_updateLastCellWidthFromScrollbar","_updateTableWidth","_showSortArrow","isNaN","setScrollHorz","header","_onVirtualTableScrolled","firstVisible","virtualRowHeightFirst","virtualRowHeight","lastVisible","ceil","visibleHeight","oldFirstVisible","oldLastVisible","tbodyChildNodes","countToRemove","removeChild","prepend","clearAndRender","first","last","rowClassName","cellClassName","isDataFiltered","visibleColumns","isVirtual","top","physicalRowIndex","colCount","colIndex","_finalWidth","actualWidthConsideringScrollbarWidth","actualWidth","bodyFragment","createDocumentFragment","isRtl","_isTableRtl","virtualRowXAttr","supportedTransform","rowData","cell","setAttribute","cellInner","appendChild","innerHTML","_getHtmlForCell","position","_calculateVirtualHeight","virtualRowHeightLast","_calculateTbodyWidth","$row","sumActualWidth","$thisWrapper","left","overflow","appendTo","body","fractionTest","fractionValue","hasFractions","round","getElementWidth","scrollbarWidth","normalizedCols","normalizedColumn","_ensureVisibleColumns","addColumn","before","beforeColumn","to","removeColumn","colIdx","formatter","val","hadFilter","filterArgs","extend","clearFilter","_refilter","setColumnLabel","element","firstChild","textContent","visibleOnly","destCol","columnsArray","some","x","headerCell","$headerRow","beforePos","fromPos","insertBefore","srcWidth","destWidth","tbodyChildren","count","currentSort","_tableSkeletonNeedsRendering","sorts","resort","setColumnVisible","isColumnVisible","setMinColumnWidth","getMinColumnWidth","setSortableColumns","getSortableColumns","setMovableColumns","getMovableColumns","setResizableColumns","getResizableColumns","setComparatorCallback","comparatorCallback","setColumnWidth","oldWidth","_serializeColumnWidth","newWidth","getColumnWidth","getColumnConfig","getColumnsConfig","config","getSortedColumns","sorted","getHtmlForRowCell","rowIndex","getHtmlForRowDataCell","colValue","dataPathIndex","content","err","console","error","getRowYPos","offsetTop","getDataForRow","getRowCount","getIndexForRow","getFilteredRowCount","getIndexForFilteredRow","getDataForFilteredRow","getHeaderRowElement","_horizontalPadding","_horizontalBorderWidth","_calculateWidthAvailableForColumns","lastScrollLeft","scrollLeft","detectedWidth","$header","$cells","$cell","isBoxing","getTextWidth","$tableWrapper","lastDetectedWidth","forceUpdate","renderColumns","sizeLeft","relatives","tableWidthBeforeCalculations","absWidthTotal","changedColumnIndexes","totalRelativePercentage","arrowProposedWidth","sizeLeftForRelative","clientWidth","minColumnWidthRelative","extraRelative","delta","nonResizableTotal","sizeLeftToFill","conv","tableWidth","_resizeColumnElements","tableHeightChanged","getElementHeight","addRows","firstRow","lastRow","removeRows","lastRowIndex","index","removeRow","refreshRow","isRowVisible","renderedRow","getRowElement","refreshAllVirtualRows","rowsToRender","setRows","getUrlForElementContent","id","blob","getElementById","Blob","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","builder","getBlob","URL","webkitURL","createObjectURL","isWorkerSupported","createWebWorker","url","Worker","postMessage","unbindWebWorker","abortCellPreview","hideCellPreview","cancelColumnResize","_getColumnByResizePosition","e","rtl","$headerCell","closest","previousElementSibling","previousSibling","firstCol","mouseX","pageX","originalEvent","clientX","offset","_onTouchStartColumnHeader","currentTouchId","startTouch","changedTouches","identifier","$eventTarget","currentTarget","startPos","y","pageY","currentPos","distanceTreshold","tapAndHoldTimeout","unbind","fakeEvent","Event","extendObjects","key","one","preventDefault","_event","distanceTravelled","sqrt","pow","abs","touch","_onMouseDownColumnHeader","which","selectedHeaderCell","commonAncestor","posCol","posRelative","resizerWidth","zIndex","ignored","_onMouseMoveColumnHeader","cursor","_onMouseUpColumnHeader","bounds","_onMouseLeaveColumnHeader","_onClickColumnHeader","_onStartDragColumnHeader","opacity","dragId","random","dataTransfer","setData","JSON","stringify","actualX","minX","baseX","sizeToSet","unNormalizedSizeToSet","_onDragEnterColumnHeader","dataTransferred","getData","parse","_onDragOverColumnHeader","_onDragLeaveColumnHeader","has","removeClass","_onDropColumnHeader","srcColName","destColName","srcCol","sortedColumns","arrows","arrow","scrollWidth","cellIndex","headerCells","headerCellClassName","prependTo","SCROLL","ieDragDropHandler","dragDrop","draggable","cellInside","createDummyRow","visibility","$dummyTbody","$dummyWrapper","row1","row2","row3","virtualRowHeightMin","virtualRowHeightMax","fragment","tableHeight","overflowY","overflowX","virtualVisibleRows","_renderSkeleton","force","offsetWidth","lastColIndex","lastColWidth","parentSizeMayHaveChanged","setElementWidth","elInner","scrollHeight","clientHeight","$elInner","previewCell","$previewCell","isHeaderCell","hasClass","paddingL","paddingR","paddingT","paddingB","requiredWidth","borderBox","transparentBgColor1","tempDiv","backgroundColor","transparentBgColor2","bgColor","selection","$parent","$scrollParent","parentOffset","windowWidth","right","minHorz","maxHorz","totalHeight","maxTop","previewCss","$cellPreviewCell","_el","origCell","controls","dgtable"],"mappings":"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;AACZ,cAAaC,IAAI,EAAE,MADP;AAEZ,cAAa6C,IAAI,EAAE,MAFP;AAGZ,cAAakW,MAAM,EAAE,QAHT,EAAhB;;;AAMA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,CAAC7kB,CAAC,CAACwoB,QAAP,EAAiB;AACbxoB,EAAAA,CAAC,CAACwoB,QAAF,GAAa,EAAb;AACH;;AAEDxoB,CAAC,CAACwoB,QAAF,CAAWC,OAAX,GAAqBtf,OAArB;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["node_modules/core-js/internals/global.js","node_modules/core-js/internals/fails.js","node_modules/core-js/internals/descriptors.js","node_modules/core-js/internals/function-call.js","node_modules/core-js/internals/object-property-is-enumerable.js","node_modules/core-js/internals/create-property-descriptor.js","node_modules/core-js/internals/function-uncurry-this.js","node_modules/core-js/internals/classof-raw.js","node_modules/core-js/internals/indexed-object.js","node_modules/core-js/internals/require-object-coercible.js","node_modules/core-js/internals/to-indexed-object.js","node_modules/core-js/internals/is-callable.js","node_modules/core-js/internals/is-object.js","node_modules/core-js/internals/get-built-in.js","node_modules/core-js/internals/object-is-prototype-of.js","node_modules/core-js/internals/engine-user-agent.js","node_modules/core-js/internals/engine-v8-version.js","node_modules/core-js/internals/native-symbol.js","node_modules/core-js/internals/use-symbol-as-uid.js","node_modules/core-js/internals/is-symbol.js","node_modules/core-js/internals/try-to-string.js","node_modules/core-js/internals/a-callable.js","node_modules/core-js/internals/get-method.js","node_modules/core-js/internals/ordinary-to-primitive.js","node_modules/core-js/internals/set-global.js","node_modules/core-js/internals/shared-store.js","node_modules/core-js/internals/shared.js","node_modules/core-js/internals/to-object.js","node_modules/core-js/internals/has-own-property.js","node_modules/core-js/internals/uid.js","node_modules/core-js/internals/well-known-symbol.js","node_modules/core-js/internals/to-primitive.js","node_modules/core-js/internals/to-property-key.js","node_modules/core-js/internals/document-create-element.js","node_modules/core-js/internals/ie8-dom-define.js","node_modules/core-js/internals/object-get-own-property-descriptor.js","node_modules/core-js/internals/v8-prototype-define-bug.js","node_modules/core-js/internals/an-object.js","node_modules/core-js/internals/object-define-property.js","node_modules/core-js/internals/create-non-enumerable-property.js","node_modules/core-js/internals/inspect-source.js","node_modules/core-js/internals/native-weak-map.js","node_modules/core-js/internals/shared-key.js","node_modules/core-js/internals/hidden-keys.js","node_modules/core-js/internals/internal-state.js","node_modules/core-js/internals/function-name.js","node_modules/core-js/internals/redefine.js","node_modules/core-js/internals/to-integer-or-infinity.js","node_modules/core-js/internals/to-absolute-index.js","node_modules/core-js/internals/to-length.js","node_modules/core-js/internals/length-of-array-like.js","node_modules/core-js/internals/array-includes.js","node_modules/core-js/internals/object-keys-internal.js","node_modules/core-js/internals/enum-bug-keys.js","node_modules/core-js/internals/object-get-own-property-names.js","node_modules/core-js/internals/object-get-own-property-symbols.js","node_modules/core-js/internals/own-keys.js","node_modules/core-js/internals/copy-constructor-properties.js","node_modules/core-js/internals/is-forced.js","node_modules/core-js/internals/export.js","node_modules/core-js/internals/to-string-tag-support.js","node_modules/core-js/internals/classof.js","node_modules/core-js/internals/to-string.js","node_modules/core-js/internals/create-property.js","node_modules/core-js/internals/array-slice-simple.js","node_modules/core-js/internals/array-sort.js","node_modules/core-js/internals/array-method-is-strict.js","node_modules/core-js/internals/engine-ff-version.js","node_modules/core-js/internals/engine-is-ie-or-edge.js","node_modules/core-js/internals/engine-webkit-version.js","node_modules/core-js/modules/es.array.sort.js","src/util.js","src/row_collection.js","src/column_collection.js","src/css_util.js","src/SelectionHelper.js","src/by_column_filter.js","src/index.js"],"sourcesContent":["var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var call = Function.prototype.call;\n\nmodule.exports = call.bind ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = bind && bind.bind(call, call);\n\nmodule.exports = bind ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.20.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2022 Denis Pushkarev (zloirock.ru)'\n});\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = items.length;\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) delete array[index++];\n\n return array;\n }\n});\n","'use strict';\r\n\r\nconst indexOf = Array.prototype.indexOf;\r\n\r\nexport const includes = function includes (array, item) {\r\n return indexOf.call(array, item) >= 0;\r\n};\r\n\r\nexport const find = function find (array, predicate) {\r\n for (let i = 0, len = array.length; i >= 0 && i < len; i += 1) {\r\n if (predicate(array[i], i, array))\r\n return array[i];\r\n }\r\n};\r\n\r\nexport const htmlEncode = function htmlEncode (text) {\r\n return text.replace(/&/g, \"&\")\r\n .replace(/</g, \"<\")\r\n .replace(/>/g, \">\")\r\n .replace(/'/g, \"'\")\r\n .replace(/\"/g, \""\")\r\n .replace(/\\n/g, '<br />');\r\n};\r\n","'use strict';\r\n\r\n// Define class RowCollection\r\nfunction RowCollection () {\r\n\r\n // Instantiate an Array. Seems like the `.length = ` of an inherited Array does not work well.\r\n // I will not use the IFRAME solution either in fear of memory leaks, and we're supporting large datasets...\r\n let collection = [];\r\n\r\n // Synthetically set the 'prototype'\r\n Object.assign(collection, RowCollection.prototype);\r\n\r\n // Call initializer\r\n collection.initialize.apply(collection, arguments);\r\n\r\n return collection;\r\n}\r\n\r\n// Inherit Array\r\nRowCollection.prototype = [];\r\n\r\nRowCollection.prototype.initialize = function (options) {\r\n\r\n options = options || {};\r\n\r\n /** @field {string} sortColumn */\r\n this.sortColumn = options.sortColumn == null ? [] : options.sortColumn;\r\n};\r\n\r\n/**\r\n * @param {Object|Object[]} rows - row or array of rows to add to this collection\r\n * @param {number?} at - position to insert rows at\r\n */\r\nRowCollection.prototype.add = function (rows, at) {\r\n let isArray = ('splice' in rows && 'length' in rows), i, len;\r\n if (isArray) {\r\n if (typeof at === 'number') {\r\n for (i = 0, len = rows.length; i < len; i++) {\r\n this.splice(at++, 0, rows[i]);\r\n }\r\n } else {\r\n for (i = 0, len = rows.length; i < len; i++) {\r\n this.push(rows[i]);\r\n }\r\n }\r\n } else {\r\n if (typeof at === 'number') {\r\n this.splice(at, 0, rows);\r\n } else {\r\n this.push(rows);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {Object|Object[]=} rows Row or array of rows to add to this collection\r\n */\r\nRowCollection.prototype.reset = function (rows) {\r\n this.length = 0;\r\n if (rows) {\r\n this.add(rows);\r\n }\r\n};\r\n\r\n/**\r\n * @param {Function} filterFunc - Filtering function\r\n * @param {Object|null} args? - Options to pass to the function\r\n * @returns {RowCollection} success result\r\n */\r\nRowCollection.prototype.filteredCollection = function (filterFunc, args) {\r\n if (filterFunc && args) {\r\n let rows = new RowCollection({ sortColumn: this.sortColumn });\r\n\r\n for (let i = 0, len = this.length, row; i < len; i++) {\r\n row = this[i];\r\n if (filterFunc(row, args)) {\r\n row['__i'] = i;\r\n rows.push(row);\r\n }\r\n }\r\n return rows;\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * @type {function(columnName: string, descending: boolean, defaultComparator: function(a,b):number)|null|undefined}\r\n */\r\nRowCollection.prototype.onComparatorRequired = null;\r\n\r\n/**\r\n * @type {Function|null|undefined}\r\n */\r\nRowCollection.prototype.onSort = null;\r\n\r\nlet nativeSort = RowCollection.prototype.sort;\r\n\r\nfunction getDefaultComparator(column, descending) {\r\n let columnName = column.column;\r\n let comparePath = column.comparePath || columnName;\r\n if (typeof comparePath === 'string') {\r\n comparePath = comparePath.split('.');\r\n }\r\n let pathLength = comparePath.length,\r\n hasPath = pathLength > 1,\r\n i;\r\n\r\n let lessVal = descending ? 1 : -1, moreVal = descending ? -1 : 1;\r\n return function(leftRow, rightRow) {\r\n let leftVal = leftRow[comparePath[0]],\r\n rightVal = rightRow[comparePath[0]];\r\n if (hasPath) {\r\n for (i = 1; i < pathLength; i++) {\r\n leftVal = leftVal && leftVal[comparePath[i]];\r\n rightVal = rightVal && rightVal[comparePath[i]];\r\n }\r\n }\r\n if (leftVal === rightVal) return 0;\r\n if (leftVal == null) return lessVal;\r\n if (rightVal == null) return moreVal;\r\n if (leftVal < rightVal) return lessVal;\r\n return moreVal;\r\n };\r\n}\r\n\r\n/**\r\n * @param {Boolean=false} silent\r\n * @returns {RowCollection} self\r\n */\r\nRowCollection.prototype.sort = function (silent) {\r\n if (this.sortColumn.length) {\r\n let comparators = [], i, comparator;\r\n\r\n for (i = 0; i < this.sortColumn.length; i++) {\r\n comparator = null;\r\n const defaultComparator = getDefaultComparator(this.sortColumn[i], this.sortColumn[i].descending);\r\n if (this.onComparatorRequired) {\r\n comparator = this.onComparatorRequired(this.sortColumn[i].column, this.sortColumn[i].descending, defaultComparator);\r\n }\r\n if (!comparator) {\r\n comparator = defaultComparator;\r\n }\r\n comparators.push(comparator.bind(this));\r\n }\r\n\r\n if (comparators.length === 1) {\r\n nativeSort.call(this, comparators[0]);\r\n } else {\r\n let len = comparators.length,\r\n value;\r\n\r\n comparator = function(leftRow, rightRow) {\r\n for (i = 0; i < len; i++) {\r\n value = comparators[i](leftRow, rightRow);\r\n if (value !== 0) {\r\n return value;\r\n }\r\n }\r\n return value;\r\n };\r\n\r\n nativeSort.call(this, comparator);\r\n }\r\n\r\n if (!silent) {\r\n if (this.onSort) {\r\n this.onSort();\r\n }\r\n }\r\n }\r\n return this;\r\n};\r\n\r\nexport default RowCollection;\r\n","'use strict';\r\n\r\n// Define class RowCollection\r\nfunction ColumnCollection () {\r\n\r\n // Instantiate an Array. Seems like the `.length = ` of an inherited Array does not work well.\r\n // I will not use the IFRAME solution either in fear of memory leaks, and we're supporting large datasets...\r\n let collection = [];\r\n\r\n // Synthetically set the 'prototype'\r\n Object.assign(collection, ColumnCollection.prototype);\r\n\r\n // Call initializer\r\n collection.initialize.apply(collection, arguments);\r\n\r\n return collection;\r\n}\r\n\r\n// Inherit Array\r\nColumnCollection.prototype = [];\r\n\r\nColumnCollection.prototype.initialize = function () {\r\n\r\n};\r\n\r\n/**\r\n * Get the column by this name\r\n * @param {String} column column name\r\n * @returns {Object} the column object\r\n */\r\nColumnCollection.prototype.get = function (column) {\r\n for (let i = 0, len = this.length; i < len; i++) {\r\n if (this[i].name == column) {\r\n return this[i];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Get the index of the column by this name\r\n * @param {String} column column name\r\n * @returns {int} the index of this column\r\n */\r\nColumnCollection.prototype.indexOf = function (column) {\r\n for (let i = 0, len = this.length; i < len; i++) {\r\n if (this[i].name == column) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\n/**\r\n * Get the column by the specified order\r\n * @param {Number} order the column's order\r\n * @returns {Object} the column object\r\n */\r\nColumnCollection.prototype.getByOrder = function (order) {\r\n for (let i = 0, len = this.length; i < len; i++) {\r\n if (this[i].order == order) {\r\n return this[i];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Normalize order\r\n * @returns {ColumnCollection} self\r\n */\r\nColumnCollection.prototype.normalizeOrder = function () {\r\n let ordered = [], i;\r\n for (i = 0; i < this.length; i++) {\r\n ordered.push(this[i]);\r\n }\r\n ordered.sort(function(col1, col2){ return col1.order < col2.order ? -1 : (col1.order > col2.order ? 1 : 0); });\r\n for (i = 0; i < ordered.length; i++) {\r\n ordered[i].order = i;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Get the array of columns, order by the order property\r\n * @returns {Array<Object>} ordered array of columns\r\n */\r\nColumnCollection.prototype.getColumns = function () {\r\n let cols = [];\r\n for (let i = 0, column; i < this.length; i++) {\r\n column = this[i];\r\n cols.push(column);\r\n }\r\n cols.sort((col1, col2) => col1.order < col2.order ? -1 : (col1.order > col2.order ? 1 : 0));\r\n return cols;\r\n};\r\n\r\n/**\r\n * Get the array of visible columns, order by the order property\r\n * @returns {Array<Object>} ordered array of visible columns\r\n */\r\nColumnCollection.prototype.getVisibleColumns = function () {\r\n let cols = [];\r\n for (let i = 0, column; i < this.length; i++) {\r\n column = this[i];\r\n if (column.visible) {\r\n cols.push(column);\r\n }\r\n }\r\n cols.sort((col1, col2) => col1.order < col2.order ? -1 : (col1.order > col2.order ? 1 : 0));\r\n return cols;\r\n};\r\n\r\n/**\r\n * @returns {int} maximum order currently in the array\r\n */\r\nColumnCollection.prototype.getMaxOrder = function () {\r\n let order = 0;\r\n for (let i = 0, column; i < this.length; i++) {\r\n column = this[i];\r\n if (column.order > order) {\r\n order = column.order;\r\n }\r\n }\r\n return order;\r\n};\r\n\r\n/**\r\n * Move a column to a new spot in the collection\r\n * @param {Object} src the column to move\r\n * @param {Object} dest the destination column\r\n * @returns {ColumnCollection} self\r\n */\r\nColumnCollection.prototype.moveColumn = function (src, dest) {\r\n if (src && dest) {\r\n let srcOrder = src.order, destOrder = dest.order, i, col;\r\n if (srcOrder < destOrder) {\r\n for (i = srcOrder + 1; i <= destOrder; i++) {\r\n col = this.getByOrder(i);\r\n col.order--;\r\n }\r\n } else {\r\n for (i = srcOrder - 1; i >= destOrder; i--) {\r\n col = this.getByOrder(i);\r\n col.order++;\r\n }\r\n }\r\n src.order = destOrder;\r\n }\r\n return this;\r\n};\r\n\r\nexport default ColumnCollection;","/* eslint-env browser */\r\n\r\n'use strict';\r\n\r\nconst CssUtil = {};\r\n\r\nlet _isTransformSupported = null;\r\n\r\nCssUtil.getSupportedTransform = () => {\r\n if (_isTransformSupported === null) {\r\n let prefixes = ['transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform'];\r\n let div = document.createElement('div');\r\n _isTransformSupported = false;\r\n for (let item of prefixes) {\r\n if (div && div.style[item] !== undefined) {\r\n _isTransformSupported = item;\r\n break;\r\n }\r\n }\r\n }\r\n return _isTransformSupported;\r\n};\r\n\r\nexport default CssUtil;\r\n","/* eslint-env browser */\r\n\r\n'use strict';\r\n\r\n// saveSelection/restoreSelection courtesy of Tim Down, with my improvements\r\n// https://stackoverflow.com/questions/13949059/persisting-the-changes-of-range-objects-after-selection-in-html/13950376#13950376\r\n\r\nfunction isChildOf(child, parent) {\r\n while ((child = child.parentNode) && child !== parent);\r\n return !!child;\r\n}\r\n\r\nclass SelectionHelper {\r\n\r\n static saveSelection(el) {\r\n let range = window.getSelection().getRangeAt(0);\r\n\r\n if (el !== range.commonAncestorContainer && !isChildOf(range.commonAncestorContainer, el))\r\n return null;\r\n\r\n let preSelectionRange = range.cloneRange();\r\n preSelectionRange.selectNodeContents(el);\r\n preSelectionRange.setEnd(range.startContainer, range.startOffset);\r\n let start = preSelectionRange.toString().length;\r\n\r\n return {\r\n start: start,\r\n end: start + range.toString().length,\r\n };\r\n }\r\n\r\n static restoreSelection(el, savedSel) {\r\n let charIndex = 0;\r\n let nodeStack = [el], node, foundStart = false, stop = false;\r\n let range = document.createRange();\r\n range.setStart(el, 0);\r\n range.collapse(true);\r\n\r\n while (!stop && (node = nodeStack.pop())) {\r\n if (node.nodeType === 3) {\r\n let nextCharIndex = charIndex + node.length;\r\n if (!foundStart && savedSel.start >= charIndex && savedSel.start <= nextCharIndex) {\r\n range.setStart(node, savedSel.start - charIndex);\r\n foundStart = true;\r\n }\r\n if (foundStart && savedSel.end >= charIndex && savedSel.end <= nextCharIndex) {\r\n range.setEnd(node, savedSel.end - charIndex);\r\n stop = true;\r\n }\r\n charIndex = nextCharIndex;\r\n } else {\r\n let i = node.childNodes.length;\r\n while (i--) {\r\n nodeStack.push(node.childNodes[i]);\r\n }\r\n }\r\n }\r\n\r\n let sel = window.getSelection();\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n }\r\n}\r\n\r\nexport default SelectionHelper;\r\n","'use strict';\r\n\r\nfunction ByColumnFilter (row, args) {\r\n \r\n let column = args.column;\r\n let keyword = args.keyword == null ? '' : args.keyword.toString();\r\n \r\n if (!keyword || !column) return true;\r\n\r\n let actualVal = row[column];\r\n if (actualVal == null) {\r\n return false;\r\n }\r\n \r\n actualVal = actualVal.toString();\r\n \r\n if (!args.caseSensitive) {\r\n actualVal = actualVal.toLowerCase();\r\n keyword = keyword.toLowerCase();\r\n }\r\n \r\n return actualVal.indexOf(keyword) !== -1;\r\n}\r\n\r\nexport default ByColumnFilter;","/* eslint-env browser */\r\n\r\n'use strict';\r\n\r\nimport jQuery from 'jquery';\r\nimport { find, htmlEncode, includes } from './util';\r\nimport RowCollection from './row_collection';\r\nimport ColumnCollection from './column_collection';\r\nimport CssUtil from './css_util';\r\nimport SelectionHelper from './SelectionHelper';\r\nimport {\r\n getScrollHorz,\r\n setScrollHorz,\r\n} from '@danielgindi/dom-utils/lib/ScrollHelper';\r\nimport {\r\n getElementWidth,\r\n getElementHeight,\r\n setElementWidth,\r\n} from '@danielgindi/dom-utils/lib/Css';\r\nimport ByColumnFilter from './by_column_filter';\r\n\r\nconst nativeIndexOf = Array.prototype.indexOf;\r\nconst $ = jQuery;\r\n\r\nlet userAgent = navigator.userAgent;\r\nlet ieVersion = userAgent.indexOf('MSIE ') !== -1 ? parseFloat(userAgent.substr(userAgent.indexOf('MSIE ') + 5)) : null;\r\nlet hasIeDragAndDropBug = ieVersion && ieVersion < 10;\r\nlet createElement = document.createElement.bind(document);\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nconst IsSafeSymbol = ('safe');\r\n\r\nfunction webkitRenderBugfix(el) {\r\n // BUGFIX: WebKit has a bug where it does not relayout, and this affects us because scrollbars\r\n // are still calculated even though they are not there yet. This is the last resort.\r\n let oldDisplay = el.style.display;\r\n el.style.display = 'none';\r\n //noinspection BadExpressionStatementJS\r\n el.offsetHeight; // No need to store this anywhere, the reference is enough\r\n el.style.display = oldDisplay;\r\n return el;\r\n}\r\n\r\nfunction relativizeElement($el) {\r\n if (!includes(['relative', 'absolute', 'fixed'], $el.css('position'))) {\r\n $el.css('position', 'relative');\r\n }\r\n}\r\n\r\nconst isInputElementEvent = event => /^(?:INPUT|TEXTAREA|BUTTON|SELECT)$/.test(event.target.tagName);\r\n\r\n/** @class DGTable */\r\nlet DGTable = function DGTable () {\r\n if (!(this instanceof DGTable)) {\r\n // Allow constructing without `new`\r\n return new (Function.prototype.bind.apply(\r\n DGTable,\r\n [DGTable].concat(Array.prototype.slice.call(arguments, 0))));\r\n }\r\n\r\n this.initialize.apply(this, arguments);\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @type {string}\r\n */\r\nDGTable.VERSION = '@@VERSION';\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @type {string}\r\n */\r\nDGTable.prototype.VERSION = DGTable.VERSION;\r\n\r\n/**\r\n * @constructs\r\n * @param {DGTable.Options?} options - initialization options\r\n * @returns {DGTable}\r\n */\r\nDGTable.prototype.initialize = function (options) {\r\n let that = this;\r\n\r\n options = options || {};\r\n\r\n /**\r\n * @private\r\n * @type {DGTable.Options}\r\n * */\r\n let o = that.o = {};\r\n\r\n /**\r\n * @private\r\n * This is for encapsulating private data */\r\n let p = that.p = {};\r\n\r\n /** This is for encapsulating event callback */\r\n p.events = {};\r\n\r\n /**\r\n * @public\r\n * @expose\r\n * */\r\n that.el = (options.el && options.el instanceof Element) ? options.el : document.createElement('div');\r\n\r\n /**\r\n * @public\r\n * @expose\r\n * */\r\n let $el = that.$el = $(that.el);\r\n\r\n if (that.el !== options.el) {\r\n $el.addClass(options.className || 'dgtable-wrapper');\r\n }\r\n\r\n // Set control data\r\n $el\r\n .data('control', that)\r\n .data('dgtable', that);\r\n\r\n // For jQuery.UI or jquery.removeevent\r\n $el.on('remove', function () {\r\n that.destroy();\r\n });\r\n\r\n p.onMouseMoveResizeAreaBound = this._onMouseMoveResizeArea.bind(this);\r\n p.onEndDragColumnHeaderBound = this._onEndDragColumnHeader.bind(this);\r\n p.onTableScrolledHorizontallyBound = this._onTableScrolledHorizontally.bind(this);\r\n\r\n this.$el.on('dragend', p.onEndDragColumnHeaderBound);\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} _tableSkeletonNeedsRendering */\r\n p.tableSkeletonNeedsRendering = true;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} virtualTable */\r\n o.virtualTable = options.virtualTable === undefined ? true : !!options.virtualTable;\r\n\r\n /**\r\n * @private\r\n * @field {Number} rowsBufferSize */\r\n o.rowsBufferSize = options.rowsBufferSize || 3;\r\n\r\n /**\r\n * @private\r\n * @field {Number} minColumnWidth */\r\n o.minColumnWidth = Math.max(options.minColumnWidth || 35, 0);\r\n\r\n /**\r\n * @private\r\n * @field {Number} resizeAreaWidth */\r\n o.resizeAreaWidth = options.resizeAreaWidth || 8;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} resizableColumns */\r\n o.resizableColumns = options.resizableColumns === undefined ? true : !!options.resizableColumns;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} movableColumns */\r\n o.movableColumns = options.movableColumns === undefined ? true : !!options.movableColumns;\r\n\r\n /**\r\n * @private\r\n * @field {Number} sortableColumns */\r\n o.sortableColumns = options.sortableColumns === undefined ? 1 : (parseInt(options.sortableColumns, 10) || 1);\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} adjustColumnWidthForSortArrow */\r\n o.adjustColumnWidthForSortArrow = options.adjustColumnWidthForSortArrow === undefined ? true : !!options.adjustColumnWidthForSortArrow;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} convertColumnWidthsToRelative */\r\n o.convertColumnWidthsToRelative = options.convertColumnWidthsToRelative === undefined ? false : !!options.convertColumnWidthsToRelative;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} autoFillTableWidth */\r\n o.autoFillTableWidth = options.autoFillTableWidth === undefined ? false : !!options.autoFillTableWidth;\r\n\r\n /**\r\n * @private\r\n * @field {String} cellClasses */\r\n o.cellClasses = options.cellClasses === undefined ? '' : options.cellClasses;\r\n\r\n /**\r\n * @private\r\n * @field {String} resizerClassName */\r\n o.resizerClassName = options.resizerClassName === undefined ? 'dgtable-resize' : options.resizerClassName;\r\n\r\n /**\r\n * @private\r\n * @field {String} tableClassName */\r\n o.tableClassName = options.tableClassName === undefined ? 'dgtable' : options.tableClassName;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} allowCellPreview */\r\n o.allowCellPreview = options.allowCellPreview === undefined ? true : options.allowCellPreview;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} allowHeaderCellPreview */\r\n o.allowHeaderCellPreview = options.allowHeaderCellPreview === undefined ? true : options.allowHeaderCellPreview;\r\n\r\n /**\r\n * @private\r\n * @field {String} cellPreviewClassName */\r\n o.cellPreviewClassName = options.cellPreviewClassName === undefined ? 'dgtable-cell-preview' : options.cellPreviewClassName;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} cellPreviewAutoBackground */\r\n o.cellPreviewAutoBackground = options.cellPreviewAutoBackground === undefined ? true : options.cellPreviewAutoBackground;\r\n\r\n /**\r\n * @private\r\n * @field {function(columnName: string, descending: boolean, defaultComparator: function(a,b):number):(function(a,b):number)} onComparatorRequired */\r\n o.onComparatorRequired = options.onComparatorRequired === undefined ? null : options.onComparatorRequired;\r\n if (!o.onComparatorRequired && typeof options['comparatorCallback'] === 'function') {\r\n o.onComparatorRequired = options['comparatorCallback'];\r\n }\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} width */\r\n o.width = options.width === undefined ? DGTable.Width.NONE : options.width;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} relativeWidthGrowsToFillWidth */\r\n o.relativeWidthGrowsToFillWidth = options.relativeWidthGrowsToFillWidth === undefined ? true : !!options.relativeWidthGrowsToFillWidth;\r\n\r\n /**\r\n * @private\r\n * @field {Boolean} relativeWidthShrinksToFillWidth */\r\n o.relativeWidthShrinksToFillWidth = options.relativeWidthShrinksToFillWidth === undefined ? false : !!options.relativeWidthShrinksToFillWidth;\r\n\r\n this.setCellFormatter(options.cellFormatter);\r\n this.setHeaderCellFormatter(options.headerCellFormatter);\r\n this.setFilter(options.filter);\r\n\r\n /** @private\r\n * @field {Number} height */\r\n o.height = options.height;\r\n\r\n // Prepare columns\r\n that.setColumns(options.columns || [], false);\r\n\r\n // Set sorting columns\r\n let sortColumns = [];\r\n\r\n if (options.sortColumn) {\r\n\r\n let tmpSortColumns = options.sortColumn;\r\n\r\n if (tmpSortColumns && typeof tmpSortColumns !== 'object') {\r\n tmpSortColumns = [tmpSortColumns];\r\n }\r\n\r\n if (tmpSortColumns instanceof Array ||\r\n typeof tmpSortColumns === 'object') {\r\n\r\n for (let i = 0, len = tmpSortColumns.length; i < len; i++) {\r\n let sortColumn = tmpSortColumns[i];\r\n if (typeof sortColumn === 'string') {\r\n sortColumn = { column: sortColumn, descending: false };\r\n }\r\n let col = p.columns.get(sortColumn.column);\r\n if (!col) continue;\r\n\r\n sortColumns.push({\r\n column: sortColumn.column,\r\n comparePath: col.comparePath || col.dataPath,\r\n descending: sortColumn.descending,\r\n });\r\n }\r\n }\r\n }\r\n\r\n /** @field {RowCollection} _rows */\r\n p.rows = new RowCollection({ sortColumn: sortColumns });\r\n p.rows.onComparatorRequired = (column, descending, defaultComparator) => {\r\n if (o.onComparatorRequired) {\r\n return o.onComparatorRequired(column, descending, defaultComparator);\r\n }\r\n };\r\n\r\n /** @private\r\n * @field {RowCollection} _filteredRows */\r\n p.filteredRows = null;\r\n\r\n /*\r\n Setup hover mechanism.\r\n We need this to be high performance, as there may be MANY cells to call this on, on creation and destruction.\r\n Using native events to spare the overhead of jQuery's event binding, and even just the creation of the jQuery collection object.\r\n */\r\n\r\n /**\r\n * @param {MouseEvent} evt\r\n * @this {HTMLElement}\r\n * */\r\n let hoverMouseOverHandler = function (evt) {\r\n evt = evt || event;\r\n let relatedTarget = evt.fromElement || evt.relatedTarget;\r\n if (relatedTarget === this || $.contains(this, relatedTarget)) return;\r\n if (this['__previewCell'] && (relatedTarget === this['__previewCell'] || $.contains(this['__previewCell'], relatedTarget))) return;\r\n that._cellMouseOverEvent.call(that, this);\r\n };\r\n\r\n /**\r\n * @param {MouseEvent} evt\r\n * @this {HTMLElement}\r\n * */\r\n let hoverMouseOutHandler = function (evt) {\r\n evt = evt || event;\r\n let relatedTarget = evt.toElement || evt.relatedTarget;\r\n if (relatedTarget === this || $.contains(this, relatedTarget)) return;\r\n if (this['__previewCell'] && (relatedTarget === this['__previewCell'] || $.contains(this['__previewCell'], relatedTarget))) return;\r\n that._cellMouseOutEvent.call(that, this);\r\n };\r\n\r\n if ('addEventListener' in window) {\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * */\r\n p._bindCellHoverIn = function (el) {\r\n if (!el['__hoverIn']) {\r\n el.addEventListener('mouseover', el['__hoverIn'] = hoverMouseOverHandler.bind(el));\r\n }\r\n };\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * */\r\n p._unbindCellHoverIn = function (el) {\r\n if (el['__hoverIn']) {\r\n el.removeEventListener('mouseover', el['__hoverIn']);\r\n el['__hoverIn'] = null;\r\n }\r\n };\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * @returns {DGTable} self\r\n * */\r\n p._bindCellHoverOut = function (el) {\r\n if (!el['__hoverOut']) {\r\n el.addEventListener('mouseout', el['__hoverOut'] = hoverMouseOutHandler.bind(el['__cell'] || el));\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * @returns {DGTable} self\r\n * */\r\n p._unbindCellHoverOut = function (el) {\r\n if (el['__hoverOut']) {\r\n el.removeEventListener('mouseout', el['__hoverOut']);\r\n el['__hoverOut'] = null;\r\n }\r\n return this;\r\n };\r\n\r\n } else {\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * */\r\n p._bindCellHoverIn = function (el) {\r\n if (!el['__hoverIn']) {\r\n el.attachEvent('mouseover', el['__hoverIn'] = hoverMouseOverHandler.bind(el));\r\n }\r\n };\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * */\r\n p._unbindCellHoverIn = function (el) {\r\n if (el['__hoverIn']) {\r\n el.detachEvent('mouseover', el['__hoverIn']);\r\n el['__hoverIn'] = null;\r\n }\r\n };\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * */\r\n p._bindCellHoverOut = function (el) {\r\n if (!el['__hoverOut']) {\r\n el.attachEvent('mouseout', el['__hoverOut'] = hoverMouseOutHandler.bind(el['__cell'] || el));\r\n }\r\n };\r\n\r\n /**\r\n * @param {HTMLElement} el cell or header-cell\r\n * @returns {DGTable} self\r\n * */\r\n p._unbindCellHoverOut = function (el) {\r\n if (el['__hoverOut']) {\r\n el.detachEvent('mouseout', el['__hoverOut']);\r\n el['__hoverOut'] = null;\r\n }\r\n return this;\r\n };\r\n\r\n }\r\n};\r\n\r\n/**\r\n * Add an event listener\r\n * @public\r\n * @expose\r\n * @param {String} eventName\r\n * @param {Function} callback\r\n * @returns {DGTable}\r\n */\r\nDGTable.prototype.on = function (eventName, callback) {\r\n let that = this, events = that.p.events;\r\n\r\n if (typeof callback !== 'function')\r\n return that;\r\n\r\n if (!hasOwnProperty.call(events, eventName))\r\n events[eventName] = [];\r\n\r\n events[eventName].push({\r\n cb: callback,\r\n once: false,\r\n });\r\n\r\n return that;\r\n};\r\n\r\n/**\r\n * Add an event listener for a one shot\r\n * @public\r\n * @expose\r\n * @param {String} eventName\r\n * @param {Function} callback\r\n * @returns {DGTable}\r\n */\r\nDGTable.prototype.once = function (eventName, callback) {\r\n let that = this, events = that.p.events;\r\n\r\n if (typeof callback !== 'function')\r\n return that;\r\n\r\n if (!hasOwnProperty.call(events, eventName))\r\n events[eventName] = [];\r\n\r\n events[eventName].push({\r\n cb: callback,\r\n once: true,\r\n });\r\n\r\n return that;\r\n};\r\n\r\n/**\r\n * Remove an event listener\r\n * @public\r\n * @expose\r\n * @param {String} eventName\r\n * @param {Function} callback\r\n * @returns {DGTable}\r\n */\r\nDGTable.prototype.off = function (eventName, callback) {\r\n let events = this.p.events;\r\n\r\n if (!hasOwnProperty.call(events, eventName))\r\n return this;\r\n\r\n let callbacks = events[eventName];\r\n for (let i = 0; i < callbacks.length; i++) {\r\n let item = callbacks[i];\r\n if (callback && item.cb !== callback) continue;\r\n callbacks.splice(i--, 1);\r\n }\r\n\r\n return this;\r\n};\r\n\r\nDGTable.prototype.trigger = function (eventName) {\r\n let events = this.p.events;\r\n\r\n if (hasOwnProperty.call(events, eventName)) {\r\n let callbacks = events[eventName];\r\n for (let i = 0; i < callbacks.length; i++) {\r\n let item = callbacks[i];\r\n if (item.once) {\r\n callbacks.splice(i--, 1);\r\n }\r\n item.cb.apply(this, Array.prototype.slice.call(arguments, 1));\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Detect column width mode\r\n * @private\r\n * @param {Number|String} width\r\n * @param {Number} minWidth\r\n * @returns {Object} parsed width\r\n */\r\nDGTable.prototype._parseColumnWidth = function (width, minWidth) {\r\n\r\n let widthSize = Math.max(0, parseFloat(width)),\r\n widthMode = ColumnWidthMode.AUTO; // Default\r\n\r\n if (widthSize > 0) {\r\n // Well, it's sure is not AUTO, as we have a value\r\n\r\n if (width === widthSize + '%') {\r\n // It's a percentage!\r\n\r\n widthMode = ColumnWidthMode.RELATIVE;\r\n widthSize /= 100;\r\n } else if (widthSize > 0 && widthSize < 1) {\r\n // It's a decimal value, as a relative value!\r\n\r\n widthMode = ColumnWidthMode.RELATIVE;\r\n } else {\r\n // It's an absolute size!\r\n\r\n if (widthSize < minWidth) {\r\n widthSize = minWidth;\r\n }\r\n widthMode = ColumnWidthMode.ABSOLUTE;\r\n }\r\n }\r\n\r\n return { width: widthSize, mode: widthMode };\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {COLUMN_OPTIONS} columnData\r\n */\r\nDGTable.prototype._initColumnFromData = function(columnData) {\r\n\r\n let parsedWidth = this._parseColumnWidth(columnData.width, columnData.ignoreMin ? 0 : this.o.minColumnWidth);\r\n\r\n let col = {\r\n name: columnData.name,\r\n label: columnData.label === undefined ? columnData.name : columnData.label,\r\n width: parsedWidth.width,\r\n widthMode: parsedWidth.mode,\r\n resizable: columnData.resizable === undefined ? true : columnData.resizable,\r\n sortable: columnData.sortable === undefined ? true : columnData.sortable,\r\n movable: columnData.movable === undefined ? true : columnData.movable,\r\n visible: columnData.visible === undefined ? true : columnData.visible,\r\n cellClasses: columnData.cellClasses === undefined ? this.o.cellClasses : columnData.cellClasses,\r\n ignoreMin: columnData.ignoreMin === undefined ? false : !!columnData.ignoreMin,\r\n };\r\n\r\n col.dataPath = columnData.dataPath === undefined ? col.name : columnData.dataPath;\r\n col.comparePath = columnData.comparePath === undefined ? col.dataPath : columnData.comparePath;\r\n\r\n if (typeof col.dataPath === 'string') {\r\n col.dataPath = col.dataPath.split('.');\r\n }\r\n if (typeof col.comparePath === 'string') {\r\n col.comparePath = col.comparePath.split('.');\r\n }\r\n\r\n return col;\r\n};\r\n\r\n/**\r\n * Destroy, releasing all memory, events and DOM elements\r\n * @public\r\n * @expose\r\n */\r\nDGTable.prototype.close = DGTable.prototype.remove = DGTable.prototype.destroy = function () {\r\n\r\n let that = this,\r\n p = that.p || {},\r\n $el = that.$el;\r\n\r\n if (that.__removed) {\r\n return that;\r\n }\r\n\r\n if (p.$resizer) {\r\n p.$resizer.remove();\r\n p.$resizer = null;\r\n }\r\n\r\n if (p.$tbody) {\r\n let trs = p.$tbody[0].childNodes;\r\n for (let i = 0, len = trs.length; i < len; i++) {\r\n that.trigger('rowdestroy', trs[i]);\r\n }\r\n }\r\n\r\n // Using quotes for __super__ because Google Closure Compiler has a bug...\r\n\r\n this._destroyHeaderCells()._unbindCellEventsForTable();\r\n if (p.$table) {\r\n p.$table.empty();\r\n }\r\n if (p.$tbody) {\r\n p.$tbody.empty();\r\n }\r\n\r\n if (p.workerListeners) {\r\n for (let j = 0; j < p.workerListeners.length; j++) {\r\n let worker = p.workerListeners[j];\r\n worker.worker.removeEventListener('message', worker.listener, false);\r\n }\r\n p.workerListeners.length = 0;\r\n }\r\n\r\n p.rows.length = p.columns.length = 0;\r\n\r\n if (p._deferredRender) {\r\n clearTimeout(p._deferredRender);\r\n }\r\n\r\n // Cleanup\r\n for (let prop in that) {\r\n if (hasOwnProperty.call(that, prop)) {\r\n that[prop] = null;\r\n }\r\n }\r\n\r\n that.__removed = true;\r\n\r\n if ($el) {\r\n $el.remove();\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._unbindCellEventsForTable = function() {\r\n const p = this.p;\r\n\r\n if (p.headerRow) {\r\n for (let i = 0, rows = p.headerRow.childNodes, rowCount = rows.length; i < rowCount; i++) {\r\n let rowToClean = rows[i];\r\n for (let j = 0, cells = rowToClean.childNodes, cellCount = cells.length; j < cellCount; j++) {\r\n p._unbindCellHoverIn(cells[j]);\r\n }\r\n }\r\n }\r\n\r\n if (p.tbody) {\r\n for (let i = 0, rows = p.tbody.childNodes, rowCount = rows.length; i < rowCount; i++) {\r\n this._unbindCellEventsForRow(rows[i]);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {HTMLElement} rowToClean\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._unbindCellEventsForRow = function(rowToClean) {\r\n const p = this.p;\r\n for (let i = 0, cells = rowToClean.childNodes, cellCount = cells.length; i < cellCount; i++) {\r\n p._unbindCellHoverIn(cells[i]);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.render = function () {\r\n const o = this.o, p = this.p;\r\n\r\n if (!this.el.offsetParent) {\r\n if (!p._deferredRender) {\r\n p._deferredRender = setTimeout(() => {\r\n p._deferredRender = null;\r\n if (!this.__removed && this.el.offsetParent) {\r\n this.render();\r\n }\r\n });\r\n }\r\n\r\n return this;\r\n }\r\n\r\n let renderedRows, rowCount;\r\n\r\n if (p.tableSkeletonNeedsRendering === true) {\r\n p.tableSkeletonNeedsRendering = false;\r\n\r\n if (o.width === DGTable.Width.AUTO) {\r\n // We need to do this to return to the specified widths instead. The arrows added to the column widths...\r\n this._clearSortArrows();\r\n }\r\n\r\n let lastScrollTop = p.table && p.table.parentNode ? p.table.scrollTop : NaN,\r\n lastScrollHorz = p.table && p.table.parentNode ? getScrollHorz(p.table) : NaN;\r\n\r\n this._renderSkeletonBase()\r\n ._renderSkeletonBody()\r\n .tableWidthChanged(true, false) // Take this chance to calculate required column widths\r\n ._renderSkeletonHeaderCells();\r\n\r\n if (!o.virtualTable) {\r\n let rows = p.filteredRows || p.rows;\r\n rowCount = rows.length;\r\n renderedRows = this.renderRows(0, rowCount - 1);\r\n p.$tbody.html('').append(renderedRows);\r\n }\r\n\r\n this._updateLastCellWidthFromScrollbar(true);\r\n\r\n this._updateTableWidth(true);\r\n\r\n // Show sort arrows\r\n for (let i = 0; i < p.rows.sortColumn.length; i++) {\r\n this._showSortArrow(p.rows.sortColumn[i].column, p.rows.sortColumn[i].descending);\r\n }\r\n if (o.adjustColumnWidthForSortArrow && p.rows.sortColumn.length) {\r\n this.tableWidthChanged(true);\r\n } else if (!o.virtualTable) {\r\n this.tableWidthChanged();\r\n }\r\n\r\n if (!isNaN(lastScrollTop))\r\n p.table.scrollTop = lastScrollTop;\r\n\r\n if (!isNaN(lastScrollHorz)) {\r\n setScrollHorz(p.table, lastScrollHorz);\r\n setScrollHorz(p.header, lastScrollHorz);\r\n }\r\n\r\n this.trigger('renderskeleton');\r\n\r\n if (o.virtualTable) {\r\n p.$table.on('scroll', this._onVirtualTableScrolled.bind(this));\r\n this.render();\r\n }\r\n\r\n } else if (o.virtualTable) {\r\n rowCount = (p.filteredRows || p.rows).length;\r\n let scrollTop = p.table.scrollTop;\r\n let firstVisible = Math.floor((scrollTop - p.virtualRowHeightFirst) / p.virtualRowHeight) + 1 - o.rowsBufferSize;\r\n let lastVisible = Math.ceil(((scrollTop - p.virtualRowHeightFirst + p.visibleHeight) / p.virtualRowHeight)) + o.rowsBufferSize;\r\n if (firstVisible < 0) firstVisible = 0;\r\n if (lastVisible >= rowCount) {\r\n lastVisible = rowCount - 1;\r\n }\r\n\r\n let oldFirstVisible = -1, oldLastVisible = -1;\r\n let tbodyChildNodes = p.tbody.childNodes;\r\n if (tbodyChildNodes.length) {\r\n oldFirstVisible = tbodyChildNodes[0]['rowIndex'];\r\n oldLastVisible = tbodyChildNodes[tbodyChildNodes.length - 1]['rowIndex'];\r\n }\r\n\r\n let countToRemove;\r\n\r\n if (oldFirstVisible !== -1 && oldFirstVisible < firstVisible) {\r\n countToRemove = Math.min(oldLastVisible + 1, firstVisible) - oldFirstVisible;\r\n for (let i = 0; i < countToRemove; i++) {\r\n this.trigger('rowdestroy', tbodyChildNodes[0]);\r\n this._unbindCellEventsForRow(tbodyChildNodes[0]);\r\n p.tbody.removeChild(tbodyChildNodes[0]);\r\n }\r\n oldFirstVisible += countToRemove;\r\n if (oldFirstVisible > oldLastVisible) {\r\n oldFirstVisible = oldLastVisible = -1;\r\n }\r\n } else if (oldLastVisible !== -1 && oldLastVisible > lastVisible) {\r\n countToRemove = oldLastVisible - Math.max(oldFirstVisible - 1, lastVisible);\r\n for (let i = 0; i < countToRemove; i++) {\r\n this.trigger('rowdestroy', tbodyChildNodes[tbodyChildNodes.length - 1]);\r\n this._unbindCellEventsForRow(tbodyChildNodes[tbodyChildNodes.length - 1]);\r\n p.tbody.removeChild(tbodyChildNodes[tbodyChildNodes.length - 1]);\r\n }\r\n if (oldLastVisible < oldFirstVisible) {\r\n oldFirstVisible = oldLastVisible = -1;\r\n }\r\n }\r\n\r\n if (firstVisible < oldFirstVisible) {\r\n renderedRows = this.renderRows(firstVisible, Math.min(lastVisible, oldFirstVisible - 1));\r\n p.$tbody.prepend(renderedRows);\r\n }\r\n if (lastVisible > oldLastVisible || oldLastVisible === -1) {\r\n renderedRows = this.renderRows(oldLastVisible === -1 ? firstVisible : oldLastVisible + 1, lastVisible);\r\n p.$tbody.append(renderedRows);\r\n }\r\n }\r\n this.trigger('render');\r\n return this;\r\n};\r\n\r\n/**\r\n * Forces a full render of the table\r\n * @public\r\n * @expose\r\n * @param {Boolean=true} render - Should render now?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.clearAndRender = function (render) {\r\n let p = this.p;\r\n\r\n p.tableSkeletonNeedsRendering = true;\r\n\r\n if (render === undefined || render) {\r\n this.render();\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Render rows\r\n * @private\r\n * @param {Number} first first row to render\r\n * @param {Number} last last row to render\r\n * @returns {DocumentFragment} fragment containing all rendered rows\r\n */\r\nDGTable.prototype.renderRows = function (first, last) {\r\n const o = this.o, p = this.p;\r\n\r\n let tableClassName = o.tableClassName,\r\n rowClassName = tableClassName + '-row',\r\n altRowClassName = tableClassName + '-row-alt',\r\n cellClassName = tableClassName + '-cell',\r\n rows = p.filteredRows || p.rows,\r\n isDataFiltered = !!p.filteredRows,\r\n allowCellPreview = o.allowCellPreview,\r\n visibleColumns = p.visibleColumns,\r\n isVirtual = o.virtualTable,\r\n virtualRowHeightFirst = p.virtualRowHeightFirst,\r\n virtualRowHeight = p.virtualRowHeight,\r\n top,\r\n physicalRowIndex;\r\n\r\n let colCount = visibleColumns.length;\r\n for (let colIndex = 0, column; colIndex < colCount; colIndex++) {\r\n column = visibleColumns[colIndex];\r\n column._finalWidth = (column.actualWidthConsideringScrollbarWidth || column.actualWidth);\r\n }\r\n\r\n let bodyFragment = document.createDocumentFragment();\r\n\r\n let isRtl = this._isTableRtl(),\r\n virtualRowXAttr = isRtl ? 'right' : 'left';\r\n\r\n const supportedTransform = CssUtil.getSupportedTransform();\r\n\r\n for (let i = first, rowCount = rows.length;\r\n i < rowCount && i <= last;\r\n i++) {\r\n\r\n let rowData = rows[i];\r\n physicalRowIndex = isDataFiltered ? rowData['__i'] : i;\r\n\r\n let row = createElement('div');\r\n row.className = rowClassName;\r\n if (i % 2 === 1)\r\n row.className += ' ' + altRowClassName;\r\n\r\n row['rowIndex'] = i;\r\n row['physicalRowIndex'] = physicalRowIndex;\r\n\r\n for (let colIndex = 0; colIndex < colCount; colIndex++) {\r\n let column = visibleColumns[colIndex];\r\n let cell = createElement('div');\r\n cell['columnName'] = column.name;\r\n cell.setAttribute('data-column', column.name);\r\n cell.className = cellClassName;\r\n cell.style.width = column._finalWidth + 'px';\r\n if (column.cellClasses) cell.className += ' ' + column.cellClasses;\r\n if (allowCellPreview) {\r\n p._bindCellHoverIn(cell);\r\n }\r\n\r\n let cellInner = cell.appendChild(createElement('div'));\r\n cellInner.innerHTML = this._getHtmlForCell(rowData, column);\r\n\r\n row.appendChild(cell);\r\n }\r\n\r\n if (isVirtual) {\r\n top = i > 0 ? virtualRowHeightFirst + (i - 1) * virtualRowHeight : 0;\r\n row.style.position = 'absolute';\r\n row.style[virtualRowXAttr] = 0;\r\n\r\n if (supportedTransform === false) {\r\n row.style.top = `${top}px`;\r\n } else {\r\n row.style.top = '0px';\r\n row.style[supportedTransform] = `translateY(${top}px)`;\r\n }\r\n }\r\n\r\n bodyFragment.appendChild(row);\r\n\r\n this.trigger('rowcreate', i, physicalRowIndex, row, rowData);\r\n }\r\n\r\n return bodyFragment;\r\n};\r\n\r\n/**\r\n * Calculate virtual table height for scrollbar\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._calculateVirtualHeight = function () {\r\n let p = this.p;\r\n\r\n if (p.tbody) {\r\n let rowCount = (p.filteredRows || p.rows).length;\r\n let height = p.virtualRowHeight * rowCount;\r\n if (rowCount) {\r\n height += (p.virtualRowHeightFirst - p.virtualRowHeight);\r\n height += (p.virtualRowHeightLast - p.virtualRowHeight);\r\n }\r\n // At least 1 pixel - to show scrollers correctly.\r\n if (height < 1) {\r\n height = 1;\r\n }\r\n p.tbody.style.height = height + 'px';\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculate the size required for the table body width (which is the row's width)\r\n * @private\r\n * @returns {Number} calculated width\r\n */\r\nDGTable.prototype._calculateTbodyWidth = function () {\r\n const p = this.p;\r\n\r\n let tableClassName = this.o.tableClassName,\r\n rowClassName = tableClassName + '-row',\r\n cellClassName = tableClassName + '-cell',\r\n visibleColumns = p.visibleColumns,\r\n colCount = visibleColumns.length,\r\n cell,\r\n cellInner,\r\n colIndex,\r\n column;\r\n\r\n let $row = $('<div>').addClass(rowClassName).css('float', 'left');\r\n let sumActualWidth = 0;\r\n\r\n for (colIndex = 0; colIndex < colCount; colIndex++) {\r\n column = visibleColumns[colIndex];\r\n cell = createElement('div');\r\n cell.className = cellClassName;\r\n cell.style.width = column.actualWidth + 'px';\r\n if (column.cellClasses) cell.className += ' ' + column.cellClasses;\r\n cellInner = cell.appendChild(createElement('div'));\r\n $row.append(cell);\r\n sumActualWidth += column.actualWidth;\r\n }\r\n\r\n let $thisWrapper = $('<div>')\r\n .addClass(this.el.className)\r\n .css({ 'z-index': -1, 'position': 'absolute', left: '0', top: '-9999px', 'float': 'left', width: '1px', overflow: 'hidden' })\r\n .append(\r\n $('<div>').addClass(tableClassName).append(\r\n $('<div>').addClass(tableClassName + '-body').css('width', sumActualWidth + 10000).append(\r\n $row,\r\n ),\r\n ),\r\n );\r\n\r\n $thisWrapper.appendTo(document.body);\r\n\r\n let fractionTest = $('<div style=\"border:1.5px solid #000;width:0;height:0;position:absolute;left:0;top:-9999px\">').appendTo(document.body);\r\n let fractionValue = parseFloat(fractionTest.css('border-width'));\r\n let hasFractions = Math.round(fractionValue) !== fractionValue;\r\n fractionTest.remove();\r\n\r\n let width = getElementWidth($row[0], true, true, true);\r\n width -= p.scrollbarWidth || 0;\r\n\r\n if (hasFractions) {\r\n width++;\r\n }\r\n\r\n $thisWrapper.remove();\r\n return width;\r\n};\r\n\r\n/**\r\n * Sets the columns of the table\r\n * @public\r\n * @expose\r\n * @param {COLUMN_OPTIONS[]} columns - Column definitions array\r\n * @param {Boolean=true} render - Should render now?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setColumns = function (columns, render) {\r\n const p = this.p;\r\n\r\n columns = columns || [];\r\n\r\n let normalizedCols = new ColumnCollection();\r\n for (let i = 0, order = 0; i < columns.length; i++) {\r\n\r\n let columnData = columns[i];\r\n let normalizedColumn = this._initColumnFromData(columnData);\r\n\r\n if (columnData.order !== undefined) {\r\n if (columnData.order > order) {\r\n order = columnData.order + 1;\r\n }\r\n normalizedColumn.order = columnData.order;\r\n } else {\r\n normalizedColumn.order = order++;\r\n }\r\n\r\n normalizedCols.push(normalizedColumn);\r\n }\r\n normalizedCols.normalizeOrder();\r\n\r\n p.columns = normalizedCols;\r\n p.visibleColumns = normalizedCols.getVisibleColumns();\r\n\r\n this._ensureVisibleColumns().clearAndRender(render);\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Add a column to the table\r\n * @public\r\n * @expose\r\n * @param {COLUMN_OPTIONS} columnData column properties\r\n * @param {String|Number} [before=-1] column name or order to be inserted before\r\n * @param {Boolean=true} render - Should render now?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.addColumn = function (columnData, before, render) {\r\n const p = this.p;\r\n let columns = p.columns;\r\n\r\n if (columnData && !columns.get(columnData.name)) {\r\n let beforeColumn = null;\r\n if (before !== undefined) {\r\n beforeColumn = columns.get(before) || columns.getByOrder(before);\r\n }\r\n\r\n let column = this._initColumnFromData(columnData);\r\n column.order = beforeColumn ? beforeColumn.order : (columns.getMaxOrder() + 1);\r\n\r\n for (let i = columns.getMaxOrder(), to = column.order; i >= to ; i--) {\r\n let col = columns.getByOrder(i);\r\n if (col) {\r\n col.order++;\r\n }\r\n }\r\n\r\n columns.push(column);\r\n columns.normalizeOrder();\r\n\r\n p.visibleColumns = columns.getVisibleColumns();\r\n this._ensureVisibleColumns().clearAndRender(render);\r\n\r\n this.trigger('addcolumn', column.name);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove a column from the table\r\n * @public\r\n * @expose\r\n * @param {String} column column name\r\n * @param {Boolean=true} render - Should render now?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.removeColumn = function (column, render) {\r\n const p = this.p;\r\n let columns = p.columns;\r\n\r\n let colIdx = columns.indexOf(column);\r\n if (colIdx > -1) {\r\n columns.splice(colIdx, 1);\r\n columns.normalizeOrder();\r\n\r\n p.visibleColumns = columns.getVisibleColumns();\r\n this._ensureVisibleColumns().clearAndRender(render);\r\n\r\n this.trigger('removecolumn', column);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets a new cell formatter.\r\n * @public\r\n * @expose\r\n * @param {function(value: *, columnName: String, row: Object):String|null} [formatter=null] - The cell formatter. Should return an HTML.\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setCellFormatter = function (formatter) {\r\n if (!formatter) {\r\n formatter = val => (typeof val === 'string') ? htmlEncode(val) : val;\r\n formatter[IsSafeSymbol] = true;\r\n }\r\n\r\n /**\r\n * @private\r\n * @field {Function} cellFormatter */\r\n this.o.cellFormatter = formatter;\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets a new header cell formatter.\r\n * @public\r\n * @expose\r\n * @param {function(label: String, columnName: String):String|null} [formatter=null] - The cell formatter. Should return an HTML.\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setHeaderCellFormatter = function (formatter) {\r\n /**\r\n * @private\r\n * @field {Function} headerCellFormatter */\r\n this.o.headerCellFormatter = formatter || function (val) {\r\n return (typeof val === 'string') ? htmlEncode(val) : val;\r\n };\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {function(row:Object,args:Object):Boolean|null} [filterFunc=null] - The filter function to work with filters. Default is a by-colum filter.\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setFilter = function (filterFunc) {\r\n /** @private\r\n * @field {Function} filter */\r\n this.o.filter = filterFunc;\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {Object|null} args - Options to pass to the filter function\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.filter = function (args) {\r\n const p = this.p;\r\n\r\n let filterFunc = this.o.filter || ByColumnFilter;\r\n\r\n // Deprecated use of older by-column filter\r\n if (typeof arguments[0] === 'string' && typeof arguments[1] === 'string') {\r\n args = {\r\n column: arguments[0],\r\n keyword: arguments[1],\r\n caseSensitive: arguments[2],\r\n };\r\n }\r\n\r\n let hadFilter = !!p.filteredRows;\r\n if (p.filteredRows) {\r\n p.filteredRows = null; // Allow releasing array memory now\r\n }\r\n\r\n // Shallow-clone the args, as the filter function may want to modify it for keeping state\r\n p.filterArgs = args == null ? null : ((typeof args === 'object' && !Array.isArray(args)) ? $.extend({}, args) : args);\r\n\r\n if (p.filterArgs !== null) {\r\n p.filteredRows = p.rows.filteredCollection(filterFunc, p.filterArgs);\r\n\r\n if (hadFilter || p.filteredRows) {\r\n this.clearAndRender();\r\n this.trigger('filter', args);\r\n }\r\n }\r\n else {\r\n p.filterArgs = null;\r\n p.filteredRows = null;\r\n this.clearAndRender();\r\n this.trigger('filterclear', {});\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.clearFilter = function () {\r\n const p = this.p;\r\n\r\n if (p.filteredRows) {\r\n p.filterArgs = null;\r\n p.filteredRows = null;\r\n this.clearAndRender();\r\n this.trigger('filterclear', {});\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._refilter = function() {\r\n const p = this.p;\r\n\r\n if (p.filteredRows && p.filterArgs) {\r\n let filterFunc = this.o.filter || ByColumnFilter;\r\n p.filteredRows = p.rows.filteredCollection(filterFunc, p.filterArgs);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Set a new label to a column\r\n * @public\r\n * @expose\r\n * @param {String} column Name of the column\r\n * @param {String} label New label for the column\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setColumnLabel = function (column, label) {\r\n const p = this.p;\r\n\r\n let col = p.columns.get(column);\r\n if (col) {\r\n col.label = label === undefined ? col.name : label;\r\n\r\n if (col.element) {\r\n for (let i = 0; i < col.element[0].firstChild.childNodes.length; i++) {\r\n let node = col.element[0].firstChild.childNodes[i];\r\n if (node.nodeType === 3) {\r\n node.textContent = col.label;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Move a column to a new position\r\n * @public\r\n * @expose\r\n * @param {string|number} src Name or position of the column to be moved\r\n * @param {string|number} dest Name of the column currently in the desired position, or the position itself\r\n * @param {boolean} [visibleOnly=true] Should consider only visible columns and visible-relative indexes\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.moveColumn = function (src, dest, visibleOnly = true) {\r\n const o = this.o, p = this.p;\r\n\r\n let columns = p.columns,\r\n col, destCol;\r\n\r\n let columnsArray = visibleOnly ? p.visibleColumns : columns.getColumns();\r\n\r\n if (typeof src === 'string') {\r\n col = columns.get(src);\r\n } else if (typeof src === 'number') {\r\n col = columnsArray[src];\r\n }\r\n if (typeof dest === 'string') {\r\n destCol = columns.get(dest);\r\n } else if (typeof dest === 'number') {\r\n destCol = columnsArray[dest];\r\n }\r\n\r\n if (col && destCol && src !== dest) {\r\n let srcOrder = col.order, destOrder = destCol.order;\r\n\r\n let visibleColumns = columns.moveColumn(col, destCol).getVisibleColumns();\r\n\r\n if (p.visibleColumns.length !== visibleColumns.length ||\r\n p.visibleColumns.some((x, i) => x !== visibleColumns[i])) {\r\n\r\n p.visibleColumns = visibleColumns;\r\n this._ensureVisibleColumns();\r\n\r\n if (o.virtualTable) {\r\n this.clearAndRender()\r\n ._updateLastCellWidthFromScrollbar(true);\r\n } else {\r\n let headerCell = p.$headerRow.find('>div.' + o.tableClassName + '-header-cell');\r\n let beforePos = srcOrder < destOrder ? destOrder + 1 : destOrder,\r\n fromPos = srcOrder;\r\n headerCell[0].parentNode.insertBefore(headerCell[fromPos], headerCell[beforePos]);\r\n\r\n let srcWidth = p.visibleColumns[srcOrder];\r\n srcWidth = (srcWidth.actualWidthConsideringScrollbarWidth || srcWidth.actualWidth) + 'px';\r\n let destWidth = p.visibleColumns[destOrder];\r\n destWidth = (destWidth.actualWidthConsideringScrollbarWidth || destWidth.actualWidth) + 'px';\r\n\r\n let tbodyChildren = p.$tbody[0].childNodes;\r\n for (let i = 0, count = tbodyChildren.length; i < count; i++) {\r\n let row = tbodyChildren[i];\r\n if (row.nodeType !== 1) continue;\r\n row.insertBefore(row.childNodes[fromPos], row.childNodes[beforePos]);\r\n row.childNodes[destOrder].firstChild.style.width = destWidth;\r\n row.childNodes[srcOrder].firstChild.style.width = srcWidth;\r\n }\r\n }\r\n }\r\n\r\n this.trigger('movecolumn', col.name, srcOrder, destOrder);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Sort the table\r\n * @public\r\n * @expose\r\n * @param {String?} column Name of the column to sort on (or null to remove sort arrow)\r\n * @param {Boolean=} descending Sort in descending order\r\n * @param {Boolean} [add=false] Should this sort be on top of the existing sort? (For multiple column sort)\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.sort = function (column, descending, add) {\r\n const o = this.o, p = this.p;\r\n\r\n let columns = p.columns,\r\n col = columns.get(column);\r\n\r\n let currentSort = p.rows.sortColumn;\r\n\r\n if (col) {\r\n\r\n if (currentSort.length && currentSort[currentSort.length - 1].column === column) {\r\n // Recognize current descending mode, if currently sorting by this column\r\n descending = descending === undefined ? !currentSort[currentSort.length - 1].descending : descending;\r\n }\r\n\r\n if (add) { // Add the sort to current sort stack\r\n\r\n for (let i = 0; i < currentSort.length; i++) {\r\n if (currentSort[i].column === col.name) {\r\n if (i < currentSort.length - 1) {\r\n currentSort.length = 0;\r\n } else {\r\n currentSort.splice(currentSort.length - 1, 1);\r\n }\r\n break;\r\n }\r\n }\r\n if ((o.sortableColumns > 0 /* allow manual sort when disabled */ && currentSort.length >= o.sortableColumns) || currentSort.length >= p.visibleColumns.length) {\r\n currentSort.length = 0;\r\n }\r\n\r\n } else { // Sort only by this column\r\n currentSort.length = 0;\r\n }\r\n\r\n // Default to ascending\r\n descending = descending === undefined ? false : descending;\r\n\r\n // Set the required column in the front of the stack\r\n currentSort.push({\r\n column: col.name,\r\n comparePath: col.comparePath || col.dataPath,\r\n descending: !!descending,\r\n });\r\n } else {\r\n currentSort.length = 0;\r\n }\r\n\r\n this._clearSortArrows();\r\n\r\n for (let i = 0; i < currentSort.length; i++) {\r\n this._showSortArrow(currentSort[i].column, currentSort[i].descending);\r\n }\r\n\r\n if (o.adjustColumnWidthForSortArrow && !o._tableSkeletonNeedsRendering) {\r\n this.tableWidthChanged(true);\r\n }\r\n\r\n if (o.virtualTable) {\r\n while (p.tbody && p.tbody.firstChild) {\r\n this.trigger('rowdestroy', p.tbody.firstChild);\r\n this._unbindCellEventsForRow(p.tbody.firstChild);\r\n p.tbody.removeChild(p.tbody.firstChild);\r\n }\r\n } else {\r\n p.tableSkeletonNeedsRendering = true;\r\n }\r\n\r\n p.rows.sortColumn = currentSort;\r\n\r\n if (currentSort.length) {\r\n p.rows.sort(!!p.filteredRows);\r\n if (p.filteredRows) {\r\n p.filteredRows.sort(!!p.filteredRows);\r\n }\r\n }\r\n\r\n // Build output for event, with option names that will survive compilers\r\n let sorts = [];\r\n for (let i = 0; i < currentSort.length; i++) {\r\n sorts.push({ 'column': currentSort[i].column, 'descending': currentSort[i].descending });\r\n }\r\n this.trigger('sort', sorts, true /* direct sort */);\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Re-sort the table using current sort specifiers\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.resort = function () {\r\n const p = this.p;\r\n let columns = p.columns;\r\n\r\n let currentSort = p.rows.sortColumn;\r\n if (currentSort.length) {\r\n\r\n for (let i = 0; i < currentSort.length; i++) {\r\n if (!columns.get(currentSort[i].column)) {\r\n currentSort.splice(i--, 1);\r\n }\r\n }\r\n\r\n p.rows.sortColumn = currentSort;\r\n if (currentSort.length) {\r\n p.rows.sort(!!p.filteredRows);\r\n if (p.filteredRows) {\r\n p.filteredRows.sort(!!p.filteredRows);\r\n }\r\n }\r\n\r\n // Build output for event, with option names that will survive compilers\r\n let sorts = [];\r\n for (let i = 0; i < currentSort.length; i++) {\r\n sorts.push({ 'column': currentSort[i].column, 'descending': currentSort[i].descending });\r\n }\r\n this.trigger('sort', sorts, false /* indirect sort */);\r\n }\r\n\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Make sure there's at least one column visible\r\n * @private\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._ensureVisibleColumns = function () {\r\n const p = this.p;\r\n\r\n if (p.visibleColumns.length === 0 && p.columns.length) {\r\n p.columns[0].visible = true;\r\n p.visibleColumns.push(p.columns[0]);\r\n this.trigger('showcolumn', p.columns[0].name);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Show or hide a column\r\n * @public\r\n * @expose\r\n * @param {String} column Unique column name\r\n * @param {Boolean} visible New visibility mode for the column\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setColumnVisible = function (column, visible) {\r\n const p = this.p;\r\n\r\n let col = p.columns.get(column);\r\n\r\n //noinspection PointlessBooleanExpressionJS\r\n visible = !!visible;\r\n\r\n if (col && !!col.visible !== visible) {\r\n col.visible = visible;\r\n p.visibleColumns = p.columns.getVisibleColumns();\r\n this.trigger(visible ? 'showcolumn' : 'hidecolumn', column);\r\n this._ensureVisibleColumns();\r\n this.clearAndRender();\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Get the visibility mode of a column\r\n * @public\r\n * @expose\r\n * @returns {Boolean} true if visible\r\n */\r\nDGTable.prototype.isColumnVisible = function (column) {\r\n const p = this.p;\r\n let col = p.columns.get(column);\r\n if (col) {\r\n return col.visible;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Globally set the minimum column width\r\n * @public\r\n * @expose\r\n * @param {Number} minColumnWidth Minimum column width\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setMinColumnWidth = function (minColumnWidth) {\r\n let o = this.o;\r\n minColumnWidth = Math.max(minColumnWidth, 0);\r\n if (o.minColumnWidth !== minColumnWidth) {\r\n o.minColumnWidth = minColumnWidth;\r\n this.tableWidthChanged(true);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Get the current minimum column width\r\n * @public\r\n * @expose\r\n * @returns {Number} Minimum column width\r\n */\r\nDGTable.prototype.getMinColumnWidth = function () {\r\n return this.o.minColumnWidth;\r\n};\r\n\r\n/**\r\n * Set the limit on concurrent columns sorted\r\n * @public\r\n * @expose\r\n * @param {Number} sortableColumns How many sortable columns to allow?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setSortableColumns = function (sortableColumns) {\r\n const p = this.p, o = this.o;\r\n if (o.sortableColumns !== sortableColumns) {\r\n o.sortableColumns = sortableColumns;\r\n if (p.$table) {\r\n let headerCell = p.$headerRow.find('>div.' + o.tableClassName + '-header-cell');\r\n for (let i = 0; i < headerCell.length; i++) {\r\n $(headerCell[0])[(o.sortableColumns > 0 && p.visibleColumns[i].sortable) ? 'addClass' : 'removeClass']('sortable');\r\n }\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Get the limit on concurrent columns sorted\r\n * @public\r\n * @expose\r\n * @returns {Number} How many sortable columns are allowed?\r\n */\r\nDGTable.prototype.getSortableColumns = function () {\r\n return this.o.sortableColumns;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {Boolean?} movableColumns=true are the columns movable?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setMovableColumns = function (movableColumns) {\r\n let o = this.o;\r\n //noinspection PointlessBooleanExpressionJS\r\n movableColumns = movableColumns === undefined ? true : !!movableColumns;\r\n if (o.movableColumns !== movableColumns) {\r\n o.movableColumns = movableColumns;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @returns {Boolean} are the columns movable?\r\n */\r\nDGTable.prototype.getMovableColumns = function () {\r\n return this.o.movableColumns;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {Boolean} resizableColumns=true are the columns resizable?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setResizableColumns = function (resizableColumns) {\r\n let o = this.o;\r\n //noinspection PointlessBooleanExpressionJS\r\n resizableColumns = resizableColumns === undefined ? true : !!resizableColumns;\r\n if (o.resizableColumns !== resizableColumns) {\r\n o.resizableColumns = resizableColumns;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @returns {Boolean} are the columns resizable?\r\n */\r\nDGTable.prototype.getResizableColumns = function () {\r\n return this.o.resizableColumns;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {{function(columnName: string, descending: boolean, defaultComparator: function(a,b):number):{function(a,b):number}}} comparatorCallback a callback function that returns the comparator for a specific column\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setComparatorCallback = function (comparatorCallback) {\r\n let o = this.o;\r\n if (o.onComparatorRequired !== comparatorCallback) {\r\n o.onComparatorRequired = comparatorCallback;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Set a new width to a column\r\n * @public\r\n * @expose\r\n * @param {String} column name of the column to resize\r\n * @param {Number|String} width new column as pixels, or relative size (0.5, 50%)\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setColumnWidth = function (column, width) {\r\n\r\n const p = this.p;\r\n\r\n let col = p.columns.get(column);\r\n\r\n let parsedWidth = this._parseColumnWidth(width, col.ignoreMin ? 0 : this.o.minColumnWidth);\r\n\r\n if (col) {\r\n let oldWidth = this._serializeColumnWidth(col);\r\n\r\n col.width = parsedWidth.width;\r\n col.widthMode = parsedWidth.mode;\r\n\r\n let newWidth = this._serializeColumnWidth(col);\r\n\r\n if (oldWidth !== newWidth) {\r\n this.tableWidthChanged(true); // Calculate actual sizes\r\n }\r\n\r\n this.trigger('columnwidth', col.name, oldWidth, newWidth);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {String} column name of the column\r\n * @returns {String|null} the serialized width of the specified column, or null if column not found\r\n */\r\nDGTable.prototype.getColumnWidth = function (column) {\r\n const p = this.p;\r\n\r\n let col = p.columns.get(column);\r\n if (col) {\r\n return this._serializeColumnWidth(col);\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @param {String} column name of the column\r\n * @returns {SERIALIZED_COLUMN|null} configuration for all columns\r\n */\r\nDGTable.prototype.getColumnConfig = function (column) {\r\n const p = this.p;\r\n let col = p.columns.get(column);\r\n if (col) {\r\n return {\r\n 'order': col.order,\r\n 'width': this._serializeColumnWidth(col),\r\n 'visible': col.visible,\r\n 'label': col.label,\r\n };\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Returns a config object for the columns, to allow saving configurations for next time...\r\n * @public\r\n * @expose\r\n * @returns {Object} configuration for all columns\r\n */\r\nDGTable.prototype.getColumnsConfig = function () {\r\n const p = this.p;\r\n\r\n let config = {};\r\n for (let i = 0; i < p.columns.length; i++) {\r\n config[p.columns[i].name] = this.getColumnConfig(p.columns[i].name);\r\n }\r\n return config;\r\n};\r\n\r\n/**\r\n * Returns an array of the currently sorted columns\r\n * @public\r\n * @expose\r\n * @returns {Array.<SERIALIZED_COLUMN_SORT>} configuration for all columns\r\n */\r\nDGTable.prototype.getSortedColumns = function () {\r\n const p = this.p;\r\n\r\n let sorted = [];\r\n for (let i = 0; i < p.rows.sortColumn.length; i++) {\r\n let sort = p.rows.sortColumn[i];\r\n sorted.push({ column: sort.column, descending: sort.descending });\r\n }\r\n return sorted;\r\n};\r\n\r\n/**\r\n * Returns the HTML string for a specific cell. Can be used externally for special cases (i.e. when setting a fresh HTML in the cell preview through the callback).\r\n * @public\r\n * @expose\r\n * @param {number} rowIndex - index of the row\r\n * @param {string} columnName - name of the column\r\n * @returns {string} HTML string for the specified cell\r\n */\r\nDGTable.prototype.getHtmlForRowCell = function (rowIndex, columnName) {\r\n const p = this.p;\r\n\r\n if (rowIndex < 0 || rowIndex > p.rows.length - 1) return null;\r\n let column = p.columns.get(columnName);\r\n if (!column) return null;\r\n let rowData = p.rows[rowIndex];\r\n\r\n return this._getHtmlForCell(rowData, column);\r\n};\r\n\r\n/**\r\n * Returns the HTML string for a specific cell. Can be used externally for special cases (i.e. when setting a fresh HTML in the cell preview through the callback).\r\n * @public\r\n * @expose\r\n * @param {Object} rowData - row data\r\n * @param {Object} columnName - column data\r\n * @returns {string|null} HTML string for the specified cell\r\n */\r\nDGTable.prototype.getHtmlForRowDataCell = function (rowData, columnName) {\r\n const p = this.p;\r\n\r\n let column = p.columns.get(columnName);\r\n if (!column) return null;\r\n\r\n return this._getHtmlForCell(rowData, column);\r\n};\r\n\r\n/**\r\n * Returns the HTML string for a specific cell. Can be used externally for special cases (i.e. when setting a fresh HTML in the cell preview through the callback).\r\n * @private\r\n * @expose\r\n * @param {Object} rowData - row data\r\n * @param {Object} column - column data\r\n * @returns {string} HTML string for the specified cell\r\n */\r\nDGTable.prototype._getHtmlForCell = function (rowData, column) {\r\n let dataPath = column.dataPath;\r\n let colValue = rowData[dataPath[0]];\r\n for (let dataPathIndex = 1; dataPathIndex < dataPath.length; dataPathIndex++) {\r\n if (colValue == null) break;\r\n colValue = colValue && colValue[dataPath[dataPathIndex]];\r\n }\r\n\r\n const formatter = this.o.cellFormatter;\r\n let content;\r\n\r\n if (formatter[IsSafeSymbol]) {\r\n content = formatter(colValue, column.name, rowData);\r\n } else {\r\n try {\r\n content = formatter(colValue, column.name, rowData);\r\n } catch (err) {\r\n content = '[ERROR]';\r\n // eslint-disable-next-line no-console\r\n console.error('Failed to generate content for cell ' + column.name, err);\r\n }\r\n }\r\n\r\n if (content === undefined || content === null) {\r\n content = '';\r\n }\r\n\r\n return content;\r\n};\r\n\r\n/**\r\n * Returns the y pos of a row by index\r\n * @public\r\n * @expose\r\n * @param {Number} rowIndex - index of the row\r\n * @returns {Number|null} Y pos\r\n */\r\nDGTable.prototype.getRowYPos = function (rowIndex) {\r\n const p = this.p;\r\n\r\n if (this.o.virtualTable) {\r\n return rowIndex > 0 ? p.virtualRowHeightFirst + (rowIndex - 1) * p.virtualRowHeight : 0;\r\n } else {\r\n let row = p.tbody.childNodes[rowIndex];\r\n return row ? row.offsetTop : null;\r\n }\r\n};\r\n\r\n/**\r\n * Returns the row data for a specific row\r\n * @public\r\n * @expose\r\n * @param {Number} row index of the row\r\n * @returns {Object} Row data\r\n */\r\nDGTable.prototype.getDataForRow = function (row) {\r\n const p = this.p;\r\n\r\n if (row < 0 || row > p.rows.length - 1) return null;\r\n return p.rows[row];\r\n};\r\n\r\n/**\r\n * Gets the number of rows\r\n * @public\r\n * @expose\r\n * @returns {Number} Row count\r\n */\r\nDGTable.prototype.getRowCount = function () {\r\n const p = this.p;\r\n return p.rows ? p.rows.length : 0;\r\n};\r\n\r\n/**\r\n * Returns the physical row index for specific row\r\n * @public\r\n * @expose\r\n * @param {Object} rowData - Row data to find\r\n * @returns {Number} Row index\r\n */\r\nDGTable.prototype.getIndexForRow = function (rowData) {\r\n const p = this.p;\r\n return p.rows.indexOf(rowData);\r\n};\r\n\r\n/**\r\n * Gets the number of filtered rows\r\n * @public\r\n * @expose\r\n * @returns {Number} Filtered row count\r\n */\r\nDGTable.prototype.getFilteredRowCount = function () {\r\n const p = this.p;\r\n return (p.filteredRows || p.rows).length;\r\n};\r\n\r\n/**\r\n * Returns the filtered row index for specific row\r\n * @public\r\n * @expose\r\n * @param {Object} rowData - Row data to find\r\n * @returns {Number} Row index\r\n */\r\nDGTable.prototype.getIndexForFilteredRow = function (rowData) {\r\n const p = this.p;\r\n return (p.filteredRows || p.rows).indexOf(rowData);\r\n};\r\n\r\n/**\r\n * Returns the row data for a specific row\r\n * @public\r\n * @expose\r\n * @param {Number} row index of the filtered row\r\n * @returns {Object} Row data\r\n */\r\nDGTable.prototype.getDataForFilteredRow = function (row) {\r\n const p = this.p;\r\n if (row < 0 || row > (p.filteredRows || p.rows).length - 1) return null;\r\n return (p.filteredRows || p.rows)[row];\r\n};\r\n\r\n/**\r\n * Returns DOM element of the header row\r\n * @public\r\n * @expose\r\n * @returns {Element} Row element\r\n */\r\nDGTable.prototype.getHeaderRowElement = function () {\r\n return this.p.headerRow;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {Element} el\r\n * @returns {Number} width\r\n */\r\nDGTable.prototype._horizontalPadding = function(el) {\r\n return ((parseFloat($.css(el, 'padding-left')) || 0) +\r\n (parseFloat($.css(el, 'padding-right')) || 0));\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {Element} el\r\n * @returns {Number} width\r\n */\r\nDGTable.prototype._horizontalBorderWidth = function(el) {\r\n return ((parseFloat($.css(el, 'border-left')) || 0) +\r\n (parseFloat($.css(el, 'border-right')) || 0));\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {Number} width\r\n */\r\nDGTable.prototype._calculateWidthAvailableForColumns = function() {\r\n const o = this.o, p = this.p;\r\n\r\n // Changing display mode briefly, to prevent taking in account the parent's scrollbar width when we are the cause for it\r\n let oldDisplay, lastScrollTop, lastScrollLeft;\r\n if (p.$table) {\r\n lastScrollTop = p.table ? p.table.scrollTop : 0;\r\n lastScrollLeft = p.table ? p.table.scrollLeft : 0;\r\n\r\n if (o.virtualTable) {\r\n oldDisplay = p.$table[0].style.display;\r\n p.$table[0].style.display = 'none';\r\n }\r\n }\r\n\r\n let detectedWidth = getElementWidth(this.$el[0]);\r\n\r\n if (p.$table) {\r\n if (o.virtualTable) {\r\n p.$table[0].style.display = oldDisplay;\r\n }\r\n\r\n p.table.scrollTop = lastScrollTop;\r\n p.table.scrollLeft = lastScrollLeft;\r\n p.header.scrollLeft = lastScrollLeft;\r\n }\r\n\r\n let tableClassName = o.tableClassName;\r\n\r\n let $thisWrapper = $('<div>').addClass(this.el.className).css({ 'z-index': -1, 'position': 'absolute', left: '0', top: '-9999px' });\r\n let $header = $('<div>').addClass(tableClassName + '-header').appendTo($thisWrapper);\r\n let $headerRow = $('<div>').addClass(tableClassName + '-header-row').appendTo($header);\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n $headerRow.append($('<div><div></div></div>').addClass(tableClassName + '-header-cell').addClass(p.visibleColumns[i].cellClasses || ''));\r\n }\r\n $thisWrapper.appendTo(document.body);\r\n\r\n detectedWidth -= this._horizontalBorderWidth($headerRow[0]);\r\n\r\n let $cells = $headerRow.find('>div.' + tableClassName + '-header-cell');\r\n for (let i = 0; i < $cells.length; i++) {\r\n let $cell = $($cells[i]);\r\n\r\n let isBoxing = $cell.css('boxSizing') === 'border-box';\r\n if (!isBoxing) {\r\n detectedWidth -=\r\n (parseFloat($cell.css('border-right-width')) || 0) +\r\n (parseFloat($cell.css('border-left-width')) || 0) +\r\n (this._horizontalPadding($cell[0])); // CELL's padding\r\n }\r\n }\r\n\r\n if ($thisWrapper) {\r\n $thisWrapper.remove();\r\n }\r\n\r\n return Math.max(0, detectedWidth);\r\n};\r\n\r\n/**\r\n * Notify the table that its width has changed\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.tableWidthChanged = (function () {\r\n\r\n let getTextWidth = function(text) {\r\n let tableClassName = this.o.tableClassName;\r\n\r\n let $cell, $tableWrapper = $('<div>').addClass(this.$el).append(\r\n $('<div>').addClass(tableClassName + '-header').append(\r\n $('<div>').addClass(tableClassName + '-header-row').append(\r\n $cell = $('<div>').addClass(tableClassName + '-header-cell').append(\r\n $('<div>').text(text),\r\n ),\r\n ),\r\n ),\r\n ).css({ 'position': 'absolute', top: '-9999px', 'visibility': 'hidden' });\r\n $tableWrapper.appendTo(document.body);\r\n\r\n let width = getElementWidth($cell[0]);\r\n\r\n $tableWrapper.remove();\r\n\r\n return width;\r\n };\r\n\r\n let lastDetectedWidth = null;\r\n\r\n /**\r\n * @public\r\n * @expose\r\n * @param {Boolean} [forceUpdate=false]\r\n * @param {Boolean} [renderColumns=true]\r\n * @returns {DGTable} self\r\n */\r\n return function(forceUpdate, renderColumns) {\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p,\r\n detectedWidth = this._calculateWidthAvailableForColumns(),\r\n sizeLeft = detectedWidth,\r\n relatives = 0;\r\n\r\n if (!p.$table) return this;\r\n\r\n renderColumns = renderColumns === undefined || renderColumns;\r\n\r\n let tableWidthBeforeCalculations = 0;\r\n\r\n if (!p.tbody) {\r\n renderColumns = false;\r\n }\r\n\r\n if (renderColumns) {\r\n tableWidthBeforeCalculations = parseFloat(p.tbody.style.minWidth) || 0;\r\n }\r\n\r\n if (sizeLeft !== lastDetectedWidth || forceUpdate) {\r\n lastDetectedWidth = detectedWidth;\r\n\r\n let absWidthTotal = 0, changedColumnIndexes = [], totalRelativePercentage = 0;\r\n\r\n for (let i = 0; i < p.columns.length; i++) {\r\n p.columns[i].actualWidthConsideringScrollbarWidth = null;\r\n }\r\n\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.widthMode === ColumnWidthMode.ABSOLUTE) {\r\n let width = col.width;\r\n width += col.arrowProposedWidth || 0; // Sort-arrow width\r\n if (!col.ignoreMin && width < o.minColumnWidth) {\r\n width = o.minColumnWidth;\r\n }\r\n sizeLeft -= width;\r\n absWidthTotal += width;\r\n\r\n // Update actualWidth\r\n if (width !== col.actualWidth) {\r\n col.actualWidth = width;\r\n changedColumnIndexes.push(i);\r\n }\r\n } else if (col.widthMode === ColumnWidthMode.AUTO) {\r\n let width = getTextWidth.call(this, col.label) + 20;\r\n width += col.arrowProposedWidth || 0; // Sort-arrow width\r\n if (!col.ignoreMin && width < o.minColumnWidth) {\r\n width = o.minColumnWidth;\r\n }\r\n sizeLeft -= width;\r\n absWidthTotal += width;\r\n\r\n // Update actualWidth\r\n if (width !== col.actualWidth) {\r\n col.actualWidth = width;\r\n if (!o.convertColumnWidthsToRelative) {\r\n changedColumnIndexes.push(i);\r\n }\r\n }\r\n } else if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n totalRelativePercentage += col.width;\r\n relatives++;\r\n }\r\n }\r\n\r\n // Normalize relative sizes if needed\r\n if (o.convertColumnWidthsToRelative) {\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.widthMode === ColumnWidthMode.AUTO) {\r\n col.widthMode = ColumnWidthMode.RELATIVE;\r\n sizeLeft += col.actualWidth;\r\n col.width = col.actualWidth / absWidthTotal;\r\n totalRelativePercentage += col.width;\r\n relatives++;\r\n }\r\n }\r\n }\r\n\r\n // Normalize relative sizes if needed\r\n if (relatives && ((totalRelativePercentage < 1 && o.relativeWidthGrowsToFillWidth) ||\r\n (totalRelativePercentage > 1 && o.relativeWidthShrinksToFillWidth))) {\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n col.width /= totalRelativePercentage;\r\n }\r\n }\r\n }\r\n\r\n let sizeLeftForRelative = Math.max(0, sizeLeft); // Use this as the space to take the relative widths out of\r\n if (sizeLeftForRelative === 0) {\r\n sizeLeftForRelative = p.table.clientWidth;\r\n }\r\n\r\n let minColumnWidthRelative = (o.minColumnWidth / sizeLeftForRelative);\r\n if (isNaN(minColumnWidthRelative)) {\r\n minColumnWidthRelative = 0;\r\n }\r\n if (minColumnWidthRelative > 0) {\r\n let extraRelative = 0, delta;\r\n\r\n // First pass - make sure they are all constrained to the minimum width\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n if (!col.ignoreMin && col.width < minColumnWidthRelative) {\r\n extraRelative += minColumnWidthRelative - col.width;\r\n col.width = minColumnWidthRelative;\r\n }\r\n }\r\n }\r\n\r\n // Second pass - try to take the extra width out of the other columns to compensate\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n if (!col.ignoreMin && col.width > minColumnWidthRelative) {\r\n if (extraRelative > 0) {\r\n delta = Math.min(extraRelative, col.width - minColumnWidthRelative);\r\n col.width -= delta;\r\n extraRelative -= delta;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Try to fill width\r\n if (o.autoFillTableWidth && sizeLeft > 0) {\r\n let nonResizableTotal = 0;\r\n let sizeLeftToFill = sizeLeft;\r\n\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (!col.resizable && col.widthMode === ColumnWidthMode.ABSOLUTE)\r\n nonResizableTotal += col.width;\r\n\r\n if (col.widthMode === ColumnWidthMode.RELATIVE)\r\n sizeLeftToFill -= Math.round(sizeLeftForRelative * col.width);\r\n }\r\n\r\n let conv = ((detectedWidth - nonResizableTotal) / (detectedWidth - sizeLeftToFill - nonResizableTotal)) || NaN;\r\n for (let i = 0; i < p.visibleColumns.length && sizeLeftToFill > 0; i++) {\r\n let col = p.visibleColumns[i];\r\n if (!col.resizable && col.widthMode === ColumnWidthMode.ABSOLUTE)\r\n continue;\r\n\r\n if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n col.width *= conv;\r\n } else {\r\n let width = col.actualWidth * conv;\r\n if (col.actualWidth !== width) {\r\n col.actualWidth = width;\r\n if (changedColumnIndexes.indexOf(i) === -1)\r\n changedColumnIndexes.push(i);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Materialize relative sizes\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n let width = Math.round(sizeLeftForRelative * col.width);\r\n sizeLeft -= width;\r\n relatives--;\r\n\r\n // Take care of rounding errors\r\n if (relatives === 0 && sizeLeft === 1) { // Take care of rounding errors\r\n width++;\r\n sizeLeft--;\r\n }\r\n if (sizeLeft === -1) {\r\n width--;\r\n sizeLeft++;\r\n }\r\n\r\n // Update actualWidth\r\n if (width !== col.actualWidth) {\r\n col.actualWidth = width;\r\n changedColumnIndexes.push(i);\r\n }\r\n }\r\n }\r\n\r\n if (p.visibleColumns.length) {\r\n // (There should always be at least 1 column visible, but just in case)\r\n p.visibleColumns[p.visibleColumns.length - 1].actualWidthConsideringScrollbarWidth =\r\n p.visibleColumns[p.visibleColumns.length - 1].actualWidth - (p.scrollbarWidth || 0);\r\n }\r\n\r\n if (renderColumns) {\r\n let tableWidth = this._calculateTbodyWidth();\r\n\r\n if (tableWidthBeforeCalculations < tableWidth) {\r\n this._updateTableWidth(false);\r\n }\r\n\r\n for (let i = 0; i < changedColumnIndexes.length; i++) {\r\n this._resizeColumnElements(changedColumnIndexes[i]);\r\n }\r\n\r\n if (tableWidthBeforeCalculations > tableWidth) {\r\n this._updateTableWidth(false);\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n})();\r\n\r\n/**\r\n * Notify the table that its height has changed\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.tableHeightChanged = function () {\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n if (!p.$table) {\r\n return that;\r\n }\r\n\r\n let height = getElementHeight(that.$el[0], true)\r\n - (parseFloat(p.$table.css('border-top-width')) || 0) // Subtract top border of inner element\r\n - (parseFloat(p.$table.css('border-bottom-width')) || 0); // Subtract bottom border of inner element\r\n\r\n if (height !== o.height) {\r\n\r\n o.height = height;\r\n\r\n if (p.tbody) {\r\n // At least 1 pixel - to show scrollers correctly.\r\n p.tbody.style.height = Math.max(o.height - getElementHeight(p.$headerRow[0], true, true, true), 1) + 'px';\r\n }\r\n\r\n if (o.virtualTable) {\r\n that.clearAndRender();\r\n }\r\n }\r\n\r\n return that;\r\n};\r\n\r\n/**\r\n * Add rows to the table\r\n * @public\r\n * @expose\r\n * @param {Object[]} data - array of rows to add to the table\r\n * @param {Number} [at=-1] - where to add the rows at\r\n * @param {Boolean} [resort=false] - should resort all rows?\r\n * @param {Boolean} [render=true]\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.addRows = function (data, at, resort, render) {\r\n let that = this,\r\n p = that.p;\r\n\r\n if (typeof at === 'boolean') {\r\n render = resort;\r\n resort = at;\r\n at = -1;\r\n }\r\n\r\n if (typeof at !== 'number')\r\n at = -1;\r\n\r\n if (at < 0 || at > p.rows.length)\r\n at = p.rows.length;\r\n\r\n render = (render === undefined) ? true : !!render;\r\n\r\n if (data) {\r\n p.rows.add(data, at);\r\n\r\n if (p.filteredRows || (resort && p.rows.sortColumn.length)) {\r\n\r\n if (resort && p.rows.sortColumn.length) {\r\n this.resort();\r\n } else {\r\n this._refilter();\r\n }\r\n\r\n p.tableSkeletonNeedsRendering = true;\r\n\r\n if (render) {\r\n // Render the skeleton with all rows from scratch\r\n this.render();\r\n }\r\n\r\n } else if (render) {\r\n let childNodes = p.tbody.childNodes;\r\n\r\n if (that.o.virtualTable) {\r\n\r\n while (p.tbody.firstChild) {\r\n this.trigger('rowdestroy', p.tbody.firstChild);\r\n this._unbindCellEventsForRow(p.tbody.firstChild);\r\n p.tbody.removeChild(p.tbody.firstChild);\r\n }\r\n\r\n this._calculateVirtualHeight() // Calculate virtual height\r\n ._updateLastCellWidthFromScrollbar() // Detect vertical scrollbar height\r\n .render()\r\n ._updateTableWidth(false); // Update table width to suit the required width considering vertical scrollbar\r\n\r\n } else if (p.$tbody) {\r\n\r\n let firstRow = at,\r\n lastRow = at + data.length - 1;\r\n\r\n let renderedRows = that.renderRows(firstRow, lastRow);\r\n p.tbody.insertBefore(renderedRows, childNodes[at] || null);\r\n\r\n for (let i = lastRow + 1; i < childNodes.length; i++) {\r\n let row = childNodes[i];\r\n row['rowIndex'] += data.length;\r\n row['physicalRowIndex'] += data.length;\r\n }\r\n\r\n this.render()\r\n ._updateLastCellWidthFromScrollbar() // Detect vertical scrollbar height, and update existing last cells\r\n ._updateTableWidth(true); // Update table width to suit the required width considering vertical scrollbar\r\n\r\n }\r\n }\r\n\r\n this.trigger('addrows', data.length, false);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a row from the table\r\n * @public\r\n * @expose\r\n * @param {Number} physicalRowIndex - index\r\n * @param {Number} count - how many rows to remove\r\n * @param {Boolean=true} render\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.removeRows = function (physicalRowIndex, count, render) {\r\n let that = this,\r\n p = that.p;\r\n\r\n if (typeof count !== 'number' || count <= 0) return this;\r\n\r\n if (physicalRowIndex < 0 || physicalRowIndex > p.rows.length - 1) return this;\r\n\r\n p.rows.splice(physicalRowIndex, count);\r\n render = (render === undefined) ? true : !!render;\r\n\r\n if (p.filteredRows) {\r\n\r\n this._refilter();\r\n\r\n p.tableSkeletonNeedsRendering = true;\r\n\r\n if (render) {\r\n // Render the skeleton with all rows from scratch\r\n this.render();\r\n }\r\n\r\n } else if (render) {\r\n\r\n let childNodes = p.tbody.childNodes;\r\n\r\n if (this.o.virtualTable) {\r\n\r\n while (p.tbody.firstChild) {\r\n this.trigger('rowdestroy', p.tbody.firstChild);\r\n this._unbindCellEventsForRow(p.tbody.firstChild);\r\n p.tbody.removeChild(p.tbody.firstChild);\r\n }\r\n\r\n this._calculateVirtualHeight()\r\n ._updateLastCellWidthFromScrollbar()\r\n .render()\r\n ._updateTableWidth(false); // Update table width to suit the required width considering vertical scrollbar\r\n\r\n\r\n } else {\r\n\r\n let countRemoved = 0, lastRowIndex = physicalRowIndex + count - 1;\r\n\r\n for (let i = 0; i < childNodes.length; i++) {\r\n let row = childNodes[i];\r\n let index = row['physicalRowIndex'];\r\n\r\n if (index >= physicalRowIndex) {\r\n if (index <= lastRowIndex) {\r\n this.trigger('rowdestroy', row);\r\n this._unbindCellEventsForRow(row);\r\n p.tbody.removeChild(row);\r\n i--;\r\n } else {\r\n row['physicalRowIndex'] -= count;\r\n }\r\n } else {\r\n row['rowIndex'] = i;\r\n }\r\n }\r\n\r\n this.render()\r\n ._updateLastCellWidthFromScrollbar()\r\n ._updateTableWidth(true); // Update table width to suit the required width considering vertical scrollbar\r\n\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a row from the table\r\n * @public\r\n * @expose\r\n * @param {Number} physicalRowIndex - index\r\n * @param {Boolean=true} render\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.removeRow = function (physicalRowIndex, render) {\r\n return this.removeRows(physicalRowIndex, 1, render);\r\n};\r\n\r\n/**\r\n * Refreshes the row specified\r\n * @public\r\n * @expose\r\n * @param {Number} physicalRowIndex index\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.refreshRow = function(physicalRowIndex) {\r\n let that = this,\r\n p = that.p;\r\n\r\n if (physicalRowIndex < 0 || physicalRowIndex > p.rows.length - 1) return this;\r\n\r\n // Find out if the row is in the rendered dataset\r\n let rowIndex = -1;\r\n if (p.filteredRows && (rowIndex = p.filteredRows.indexOf(p.rows[physicalRowIndex])) === -1) return this;\r\n\r\n if (rowIndex === -1) {\r\n rowIndex = physicalRowIndex;\r\n }\r\n\r\n let childNodes = p.tbody.childNodes;\r\n\r\n if (this.o.virtualTable) {\r\n // Now make sure that the row actually rendered, as this is a virtual table\r\n let isRowVisible = false;\r\n let i = 0;\r\n\r\n for (; i < childNodes.length; i++) {\r\n if (childNodes[i]['physicalRowIndex'] === physicalRowIndex) {\r\n isRowVisible = true;\r\n this.trigger('rowdestroy', childNodes[i]);\r\n this._unbindCellEventsForRow(childNodes[i]);\r\n p.tbody.removeChild(childNodes[i]);\r\n break;\r\n }\r\n }\r\n\r\n if (isRowVisible) {\r\n let renderedRow = this.renderRows(rowIndex, rowIndex);\r\n p.tbody.insertBefore(renderedRow, childNodes[i] || null);\r\n }\r\n } else {\r\n this.trigger('rowdestroy', childNodes[rowIndex]);\r\n this._unbindCellEventsForRow(childNodes[rowIndex]);\r\n p.tbody.removeChild(childNodes[rowIndex]);\r\n let renderedRow = this.renderRows(rowIndex, rowIndex);\r\n p.tbody.insertBefore(renderedRow, childNodes[rowIndex] || null);\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Get the DOM element for the specified row, if it exists\r\n * @public\r\n * @expose\r\n * @param {Number} physicalRowIndex index\r\n * @returns {Element|null} row or null\r\n */\r\nDGTable.prototype.getRowElement = function(physicalRowIndex) {\r\n let that = this,\r\n p = that.p;\r\n\r\n if (physicalRowIndex < 0 || physicalRowIndex > p.rows.length - 1) return null;\r\n\r\n // Find out if the row is in the rendered dataset\r\n let rowIndex = -1;\r\n if (p.filteredRows && (rowIndex = p.filteredRows.indexOf(p.rows[physicalRowIndex])) === -1) return this;\r\n\r\n if (rowIndex === -1) {\r\n rowIndex = physicalRowIndex;\r\n }\r\n\r\n let childNodes = p.tbody.childNodes;\r\n\r\n if (this.o.virtualTable) {\r\n // Now make sure that the row actually rendered, as this is a virtual table\r\n for (let i = 0; i < childNodes.length; i++) {\r\n if (childNodes[i]['physicalRowIndex'] === physicalRowIndex) {\r\n return childNodes[i];\r\n }\r\n }\r\n } else {\r\n return childNodes[rowIndex];\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Refreshes all virtual rows\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.refreshAllVirtualRows = function () {\r\n\r\n const p = this.p;\r\n\r\n if (this.o.virtualTable) {\r\n // Now make sure that the row actually rendered, as this is a virtual table\r\n let rowsToRender = [];\r\n let childNodes = p.tbody.childNodes;\r\n\r\n for (let i = 0, rowCount = childNodes.length; i < rowCount; i++) {\r\n rowsToRender.push(childNodes[i]['physicalRowIndex']);\r\n this.trigger('rowdestroy', childNodes[i]);\r\n this._unbindCellEventsForRow(childNodes[i]);\r\n p.tbody.removeChild(childNodes[i]);\r\n i--;\r\n rowCount--;\r\n }\r\n\r\n for (let i = 0; i < rowsToRender.length; i++) {\r\n let renderedRow = this.renderRows(rowsToRender[i], rowsToRender[i]);\r\n p.tbody.appendChild(renderedRow);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Replace the whole dataset\r\n * @public\r\n * @expose\r\n * @param {Object[]} data array of rows to add to the table\r\n * @param {Boolean} [resort=false] should resort all rows?\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.setRows = function (data, resort) {\r\n let that = this,\r\n p = that.p;\r\n\r\n // this.scrollTop = this.$el.find('.table').scrollTop();\r\n p.rows.reset(data);\r\n\r\n if (resort && p.rows.sortColumn.length) {\r\n this.resort();\r\n } else {\r\n this._refilter();\r\n }\r\n\r\n this.clearAndRender().trigger('addrows', data.length, true);\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Creates a URL representing the data in the specified element.\r\n * This uses the Blob or BlobBuilder of the modern browsers.\r\n * The url can be used for a Web Worker.\r\n * @public\r\n * @expose\r\n * @param {string} id Id of the element containing your data\r\n * @returns {String|null} the url, or null if not supported\r\n */\r\nDGTable.prototype.getUrlForElementContent = function (id) {\r\n let blob,\r\n el = document.getElementById(id);\r\n if (el) {\r\n let data = el.textContent;\r\n if (typeof Blob === 'function') {\r\n blob = new Blob([data]);\r\n } else {\r\n let BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\r\n if (!BlobBuilder) {\r\n return null;\r\n }\r\n let builder = new BlobBuilder();\r\n builder.append(data);\r\n blob = builder.getBlob();\r\n }\r\n return (window.URL || window.webkitURL).createObjectURL(blob);\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * @public\r\n * @expose\r\n * @returns {Boolean} A value indicating whether Web Workers are supported\r\n */\r\nDGTable.prototype.isWorkerSupported = function() {\r\n return window['Worker'] instanceof Function;\r\n};\r\n\r\n/**\r\n * Creates a Web Worker for updating the table.\r\n * @public\r\n * @expose\r\n * @param {string} url Url to the script for the Web Worker\r\n * @param {boolean} [start=true] if true, starts the Worker immediately\r\n * @param {boolean} [resort=false]\r\n * @returns {Worker|null} the Web Worker, or null if not supported\r\n */\r\nDGTable.prototype.createWebWorker = function (url, start, resort) {\r\n if (this.isWorkerSupported()) {\r\n let that = this,\r\n p = that.p;\r\n\r\n let worker = new Worker(url);\r\n let listener = function (evt) {\r\n if (evt.data.append) {\r\n that.addRows(evt.data.rows, resort);\r\n } else {\r\n that.setRows(evt.data.rows, resort);\r\n }\r\n };\r\n worker.addEventListener('message', listener, false);\r\n if (!p.workerListeners) {\r\n p.workerListeners = [];\r\n }\r\n p.workerListeners.push({ worker: worker, listener: listener });\r\n if (start || start === undefined) {\r\n worker.postMessage(null);\r\n }\r\n return worker;\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Unbinds a Web Worker from the table, stopping updates.\r\n * @public\r\n * @expose\r\n * @param {Worker} worker the Web Worker\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.unbindWebWorker = function (worker) {\r\n let that = this,\r\n p = that.p;\r\n\r\n if (p.workerListeners) {\r\n for (let j = 0; j < p.workerListeners.length; j++) {\r\n if (p.workerListeners[j].worker === worker) {\r\n worker.removeEventListener('message', p.workerListeners[j].listener, false);\r\n p.workerListeners.splice(j, 1);\r\n j--;\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * A synonym for hideCellPreview()\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.abortCellPreview = function() {\r\n this.hideCellPreview();\r\n return this;\r\n};\r\n\r\n/**\r\n * Cancel a resize in progress\r\n * @expose\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.cancelColumnResize = function() {\r\n const p = this.p;\r\n\r\n if (p.$resizer) {\r\n p.$resizer.remove();\r\n p.$resizer = null;\r\n $(document).off('mousemove.dgtable', p.onMouseMoveResizeAreaBound)\r\n .off('mouseup.dgtable', p.onEndDragColumnHeaderBound);\r\n }\r\n\r\n return this;\r\n};\r\n\r\nDGTable.prototype._onVirtualTableScrolled = function () {\r\n this.render();\r\n};\r\n\r\nDGTable.prototype._onTableScrolledHorizontally = function () {\r\n const p = this.p;\r\n\r\n p.header.scrollLeft = p.table.scrollLeft;\r\n};\r\n\r\n/**previousElementSibling\r\n * Reverse-calculate the column to resize from mouse position\r\n * @private\r\n * @param {jQuery_Event} e jQuery mouse event\r\n * @returns {String} name of the column which the mouse is over, or null if the mouse is not in resize position\r\n */\r\nDGTable.prototype._getColumnByResizePosition = function (e) {\r\n\r\n let that = this,\r\n o = that.o,\r\n rtl = this._isTableRtl();\r\n\r\n let $headerCell = $(e.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName),\r\n headerCell = $headerCell[0];\r\n if (headerCell['__cell']) {\r\n headerCell = headerCell['__cell'];\r\n $headerCell = $(headerCell);\r\n }\r\n\r\n let previousElementSibling = $headerCell[0].previousSibling;\r\n while (previousElementSibling && previousElementSibling.nodeType !== 1) {\r\n previousElementSibling = previousElementSibling.previousSibling;\r\n }\r\n\r\n let firstCol = !previousElementSibling;\r\n\r\n let mouseX = ((e.pageX != null ? e.pageX : e.originalEvent.pageX) || e.originalEvent.clientX) - $headerCell.offset().left;\r\n\r\n if (rtl) {\r\n if (!firstCol && getElementWidth($headerCell[0], true, true, true) - mouseX <= o.resizeAreaWidth / 2) {\r\n return previousElementSibling['columnName'];\r\n } else if (mouseX <= o.resizeAreaWidth / 2) {\r\n return headerCell['columnName'];\r\n }\r\n } else {\r\n if (!firstCol && mouseX <= o.resizeAreaWidth / 2) {\r\n return previousElementSibling['columnName'];\r\n } else if (getElementWidth($headerCell[0], true, true, true) - mouseX <= o.resizeAreaWidth / 2) {\r\n return headerCell['columnName'];\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * @param {jQuery_Event} event\r\n */\r\nDGTable.prototype._onTouchStartColumnHeader = function (event) {\r\n const p = this.p;\r\n\r\n if (p.currentTouchId) return;\r\n\r\n let startTouch = event.originalEvent.changedTouches[0];\r\n p.currentTouchId = startTouch.identifier;\r\n\r\n let $eventTarget = $(event.currentTarget);\r\n\r\n let startPos = { x: startTouch.pageX, y: startTouch.pageY },\r\n currentPos = startPos,\r\n distanceTreshold = 9;\r\n\r\n let tapAndHoldTimeout;\r\n\r\n let unbind = function () {\r\n p.currentTouchId = null;\r\n $eventTarget.off('touchend').off('touchcancel');\r\n clearTimeout(tapAndHoldTimeout);\r\n };\r\n\r\n let fakeEvent = function (name) {\r\n let fakeEvent = $.Event(name);\r\n let extendObjects = Array.prototype.slice.call(arguments, 1);\r\n for (let key of ['target', 'clientX', 'clientY', 'offsetX', 'offsetY', 'screenX', 'screenY', 'pageX', 'pageY', 'which']) {\r\n fakeEvent[key] = event[key];\r\n for (let i = 0; i < extendObjects.length; i++) {\r\n if (extendObjects[i][key] != null) {\r\n fakeEvent[key] = extendObjects[i][key];\r\n }\r\n }\r\n }\r\n return fakeEvent;\r\n };\r\n\r\n $eventTarget.trigger(fakeEvent('mousedown', event.originalEvent.changedTouches[0], { 'which': 1, target: event.target }));\r\n\r\n tapAndHoldTimeout = setTimeout(() => {\r\n unbind();\r\n\r\n $eventTarget\r\n .one('touchend', (event) => {\r\n // Prevent simulated mouse events after touchend\r\n if (!isInputElementEvent(event))\r\n event.preventDefault();\r\n\r\n $eventTarget.off('touchend').off('touchcancel');\r\n })\r\n .one('touchcancel', (_event) => {\r\n $eventTarget.off('touchend').off('touchcancel');\r\n });\r\n\r\n let distanceTravelled = Math.sqrt(Math.pow(Math.abs(currentPos.x - startPos.x), 2) + Math.pow(Math.abs(currentPos.y - startPos.y), 2));\r\n\r\n if (distanceTravelled < distanceTreshold) {\r\n this.cancelColumnResize();\r\n $eventTarget.trigger(fakeEvent('mouseup', event.originalEvent.changedTouches[0], { 'which': 3, target: event.target }));\r\n }\r\n\r\n }, 500);\r\n\r\n $eventTarget\r\n .on('touchend', (event) => {\r\n let touch = find(event.originalEvent.changedTouches, (touch) => touch.identifier === p.currentTouchId);\r\n if (!touch) return;\r\n\r\n unbind();\r\n\r\n // Prevent simulated mouse events after touchend\r\n if (!isInputElementEvent(event))\r\n event.preventDefault();\r\n\r\n currentPos = { x: touch.pageX, y: touch.pageY };\r\n let distanceTravelled = Math.sqrt(Math.pow(Math.abs(currentPos.x - startPos.x), 2) + Math.pow(Math.abs(currentPos.y - startPos.y), 2));\r\n\r\n if (distanceTravelled < distanceTreshold || p.$resizer) {\r\n $eventTarget.trigger(fakeEvent('mouseup', touch, { 'which': 1, target: event.target }));\r\n $eventTarget.trigger(fakeEvent('click', touch, { 'which': 1, target: event.target }));\r\n }\r\n\r\n })\r\n .on('touchcancel', () => {\r\n unbind();\r\n })\r\n .on('touchmove', (event) => {\r\n let touch = find(event.originalEvent.changedTouches, (touch) => touch.identifier === p.currentTouchId);\r\n if (!touch) return;\r\n\r\n // Keep track of current position, so we know if we need to cancel the tap-and-hold\r\n currentPos = { x: touch.pageX, y: touch.pageY };\r\n\r\n if (p.$resizer) {\r\n event.preventDefault();\r\n\r\n $eventTarget.trigger(fakeEvent('mousemove', touch, { target: event.target }));\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * @param {jQuery_Event} event\r\n */\r\nDGTable.prototype._onMouseDownColumnHeader = function (event) {\r\n if (event.which !== 1) return this; // Only treat left-clicks\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p,\r\n col = this._getColumnByResizePosition(event);\r\n\r\n if (col) {\r\n let column = p.columns.get(col);\r\n if (!o.resizableColumns || !column || !column.resizable) {\r\n return false;\r\n }\r\n\r\n let rtl = this._isTableRtl();\r\n\r\n if (p.$resizer) {\r\n $(p.$resizer).remove();\r\n }\r\n p.$resizer = $('<div></div>')\r\n .addClass(o.resizerClassName)\r\n .css({\r\n 'position': 'absolute',\r\n 'display': 'block',\r\n 'z-index': -1,\r\n 'visibility': 'hidden',\r\n 'width': '2px',\r\n 'background': '#000',\r\n 'opacity': 0.7,\r\n })\r\n .appendTo(this.$el);\r\n\r\n let selectedHeaderCell = column.element,\r\n commonAncestor = p.$resizer.parent();\r\n\r\n let posCol = selectedHeaderCell.offset(),\r\n posRelative = commonAncestor.offset();\r\n if (ieVersion === 8) {\r\n posCol = selectedHeaderCell.offset(); // IE8 bug, first time it receives zeros...\r\n }\r\n posRelative.left += parseFloat(commonAncestor.css('border-left-width')) || 0;\r\n posRelative.top += parseFloat(commonAncestor.css('border-top-width')) || 0;\r\n posCol.left -= posRelative.left;\r\n posCol.top -= posRelative.top;\r\n posCol.top -= parseFloat(selectedHeaderCell.css('border-top-width')) || 0;\r\n let resizerWidth = getElementWidth(p.$resizer[0], true, true, true);\r\n if (rtl) {\r\n posCol.left -= Math.ceil((parseFloat(selectedHeaderCell.css('border-left-width')) || 0) / 2);\r\n posCol.left -= Math.ceil(resizerWidth / 2);\r\n } else {\r\n posCol.left += getElementWidth(selectedHeaderCell[0], true, true, true);\r\n posCol.left += Math.ceil((parseFloat(selectedHeaderCell.css('border-right-width')) || 0) / 2);\r\n posCol.left -= Math.ceil(resizerWidth / 2);\r\n }\r\n\r\n p.$resizer\r\n .css({\r\n 'z-index': '10',\r\n 'visibility': 'visible',\r\n 'left': posCol.left,\r\n 'top': posCol.top,\r\n 'height': getElementHeight(this.$el[0]),\r\n })[0]['columnName'] = selectedHeaderCell[0]['columnName'];\r\n\r\n try { p.$resizer[0].style.zIndex = ''; }\r\n catch (ignored) { /* we're ok with this */ }\r\n\r\n $(document).on('mousemove.dgtable', p.onMouseMoveResizeAreaBound);\r\n $(document).on('mouseup.dgtable', p.onEndDragColumnHeaderBound);\r\n\r\n event.preventDefault();\r\n }\r\n};\r\n\r\n/**\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onMouseMoveColumnHeader = function (event) {\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n if (o.resizableColumns) {\r\n let col = this._getColumnByResizePosition(event);\r\n let headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName)[0];\r\n if (!col || !p.columns.get(col).resizable) {\r\n headerCell.style.cursor = '';\r\n } else {\r\n headerCell.style.cursor = 'e-resize';\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @param {jQuery_Event} event\r\n */\r\nDGTable.prototype._onMouseUpColumnHeader = function (event) {\r\n if (event.which === 3) {\r\n let o = this.o;\r\n let $headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName);\r\n let bounds = $headerCell.offset();\r\n bounds['width'] = getElementWidth($headerCell[0], true, true, true);\r\n bounds['height'] = getElementHeight($headerCell[0], true, true, true);\r\n this.trigger('headercontextmenu', $headerCell[0]['columnName'], event.pageX, event.pageY, bounds);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onMouseLeaveColumnHeader = function (event) {\r\n let o = this.o;\r\n let headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName)[0];\r\n headerCell.style.cursor = '';\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onClickColumnHeader = function (event) {\r\n if (isInputElementEvent(event))\r\n return;\r\n\r\n if (!this._getColumnByResizePosition(event)) {\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n let headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName)[0];\r\n if (o.sortableColumns) {\r\n let column = p.columns.get(headerCell['columnName']);\r\n if (column && column.sortable) {\r\n this.sort(headerCell['columnName'], undefined, true).render();\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onStartDragColumnHeader = function (event) {\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n if (o.movableColumns) {\r\n\r\n let $headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName);\r\n let column = p.columns.get($headerCell[0]['columnName']);\r\n if (column && column.movable) {\r\n $headerCell[0].style.opacity = 0.35;\r\n p.dragId = Math.random() * 0x9999999; // Recognize this ID on drop\r\n event.originalEvent.dataTransfer.setData('text', JSON.stringify({ dragId: p.dragId, column: column.name }));\r\n } else {\r\n event.preventDefault();\r\n }\r\n\r\n } else {\r\n\r\n event.preventDefault();\r\n\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {MouseEvent} event event\r\n */\r\nDGTable.prototype._onMouseMoveResizeArea = function (event) {\r\n\r\n let that = this,\r\n p = that.p;\r\n\r\n let column = p.columns.get(p.$resizer[0]['columnName']);\r\n let rtl = this._isTableRtl();\r\n\r\n let selectedHeaderCell = column.element,\r\n commonAncestor = p.$resizer.parent();\r\n let posCol = selectedHeaderCell.offset(), posRelative = commonAncestor.offset();\r\n posRelative.left += parseFloat(commonAncestor.css('border-left-width')) || 0;\r\n posCol.left -= posRelative.left;\r\n let resizerWidth = getElementWidth(p.$resizer[0], true, true, true);\r\n\r\n let isBoxing = selectedHeaderCell.css('box-sizing') === 'border-box';\r\n\r\n let actualX = event.pageX - posRelative.left;\r\n let minX = posCol.left;\r\n\r\n minX -= Math.ceil(resizerWidth / 2);\r\n\r\n if (rtl) {\r\n minX += getElementWidth(selectedHeaderCell[0], true, true, true);\r\n minX -= column.ignoreMin ? 0 : this.o.minColumnWidth;\r\n\r\n if (!isBoxing) {\r\n minX -= Math.ceil((parseFloat(selectedHeaderCell.css('border-left-width')) || 0) / 2);\r\n minX -= this._horizontalPadding(selectedHeaderCell[0]);\r\n }\r\n\r\n if (actualX > minX) {\r\n actualX = minX;\r\n }\r\n } else {\r\n minX += column.ignoreMin ? 0 : this.o.minColumnWidth;\r\n\r\n if (!isBoxing) {\r\n minX += Math.ceil((parseFloat(selectedHeaderCell.css('border-right-width')) || 0) / 2);\r\n minX += this._horizontalPadding(selectedHeaderCell[0]);\r\n }\r\n\r\n if (actualX < minX) {\r\n actualX = minX;\r\n }\r\n }\r\n\r\n p.$resizer.css('left', actualX + 'px');\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {Event} event event\r\n */\r\nDGTable.prototype._onEndDragColumnHeader = function (event) {\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n if (!p.$resizer) {\r\n event.target.style.opacity = null;\r\n } else {\r\n $(document).off('mousemove.dgtable', p.onMouseMoveResizeAreaBound)\r\n .off('mouseup.dgtable', p.onEndDragColumnHeaderBound);\r\n\r\n let column = p.columns.get(p.$resizer[0]['columnName']);\r\n let rtl = this._isTableRtl();\r\n\r\n let selectedHeaderCell = column.element,\r\n commonAncestor = p.$resizer.parent();\r\n let posCol = selectedHeaderCell.offset(), posRelative = commonAncestor.offset();\r\n posRelative.left += parseFloat(commonAncestor.css('border-left-width')) || 0;\r\n posCol.left -= posRelative.left;\r\n let resizerWidth = getElementWidth(p.$resizer[0], true, true, true);\r\n\r\n let isBoxing = selectedHeaderCell.css('box-sizing') === 'border-box';\r\n\r\n let actualX = event.pageX - posRelative.left;\r\n let baseX = posCol.left, minX = posCol.left;\r\n let width = 0;\r\n\r\n baseX -= Math.ceil(resizerWidth / 2);\r\n\r\n if (rtl) {\r\n\r\n if (!isBoxing) {\r\n actualX += this._horizontalPadding(selectedHeaderCell[0]);\r\n actualX += parseFloat(selectedHeaderCell.css('border-left-width')) || 0;\r\n actualX += parseFloat(selectedHeaderCell.css('border-right-width')) || 0;\r\n }\r\n\r\n baseX += getElementWidth(selectedHeaderCell[0], true, true, true);\r\n\r\n minX = baseX - (column.ignoreMin ? 0 : this.o.minColumnWidth);\r\n if (actualX > minX) {\r\n actualX = minX;\r\n }\r\n\r\n width = baseX - actualX;\r\n } else {\r\n\r\n if (!isBoxing) {\r\n actualX -= this._horizontalPadding(selectedHeaderCell[0]);\r\n actualX -= parseFloat(selectedHeaderCell.css('border-left-width')) || 0;\r\n actualX -= parseFloat(selectedHeaderCell.css('border-right-width')) || 0;\r\n }\r\n\r\n minX = baseX + (column.ignoreMin ? 0 : this.o.minColumnWidth);\r\n if (actualX < minX) {\r\n actualX = minX;\r\n }\r\n\r\n width = actualX - baseX;\r\n }\r\n\r\n p.$resizer.remove();\r\n p.$resizer = null;\r\n\r\n let sizeToSet = width;\r\n\r\n if (column.widthMode === ColumnWidthMode.RELATIVE) {\r\n let sizeLeft = this._calculateWidthAvailableForColumns();\r\n //sizeLeft -= p.table.offsetWidth - p.table.clientWidth;\r\n\r\n let totalRelativePercentage = 0;\r\n let relatives = 0;\r\n\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let col = p.visibleColumns[i];\r\n if (col.name === column.name) continue;\r\n\r\n if (col.widthMode === ColumnWidthMode.RELATIVE) {\r\n totalRelativePercentage += col.width;\r\n relatives++;\r\n } else {\r\n sizeLeft -= col.actualWidth;\r\n }\r\n }\r\n\r\n sizeLeft = Math.max(1, sizeLeft);\r\n sizeToSet = width / sizeLeft;\r\n\r\n if (relatives > 0) {\r\n // When there's more than one relative overall,\r\n // we can do relative enlarging/shrinking.\r\n // Otherwise, we can end up having a 0 width.\r\n\r\n let unNormalizedSizeToSet = sizeToSet / ((1 - sizeToSet) / totalRelativePercentage);\r\n\r\n totalRelativePercentage += sizeToSet;\r\n\r\n // Account for relative widths scaling later\r\n if ((totalRelativePercentage < 1 && o.relativeWidthGrowsToFillWidth) ||\r\n (totalRelativePercentage > 1 && o.relativeWidthShrinksToFillWidth)) {\r\n sizeToSet = unNormalizedSizeToSet;\r\n }\r\n }\r\n\r\n sizeToSet *= 100;\r\n sizeToSet += '%';\r\n }\r\n\r\n this.setColumnWidth(column.name, sizeToSet);\r\n }\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onDragEnterColumnHeader = function (event) {\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n if (o.movableColumns) {\r\n let dataTransferred = event.originalEvent.dataTransfer.getData('text');\r\n if (dataTransferred) {\r\n dataTransferred = JSON.parse(dataTransferred);\r\n }\r\n else {\r\n dataTransferred = null; // WebKit does not provide the dataTransfer on dragenter?..\r\n }\r\n\r\n let $headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName);\r\n if (!dataTransferred ||\r\n (p.dragId === dataTransferred.dragId && $headerCell['columnName'] !== dataTransferred.column)) {\r\n\r\n let column = p.columns.get($headerCell[0]['columnName']);\r\n if (column && (column.movable || column !== p.visibleColumns[0])) {\r\n $($headerCell).addClass('drag-over');\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onDragOverColumnHeader = function (event) {\r\n event.preventDefault();\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onDragLeaveColumnHeader = function (event) {\r\n let o = this.o;\r\n let $headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName);\r\n if ( !$($headerCell[0].firstChild)\r\n .has(event.originalEvent.relatedTarget).length ) {\r\n $headerCell.removeClass('drag-over');\r\n }\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {jQuery_Event} event event\r\n */\r\nDGTable.prototype._onDropColumnHeader = function (event) {\r\n event.preventDefault();\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n let dataTransferred = JSON.parse(event.originalEvent.dataTransfer.getData('text'));\r\n let $headerCell = $(event.target).closest('div.' + o.tableClassName + '-header-cell,div.' + o.cellPreviewClassName);\r\n if (o.movableColumns && dataTransferred.dragId === p.dragId) {\r\n let srcColName = dataTransferred.column,\r\n destColName = $headerCell[0]['columnName'],\r\n srcCol = p.columns.get(srcColName),\r\n destCol = p.columns.get(destColName);\r\n if (srcCol && destCol && srcCol.movable && (destCol.movable || destCol !== p.visibleColumns[0])) {\r\n this.moveColumn(srcColName, destColName);\r\n }\r\n }\r\n $($headerCell).removeClass('drag-over');\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._clearSortArrows = function () {\r\n\r\n let that = this,\r\n p = that.p;\r\n\r\n if (p.$table) {\r\n let tableClassName = this.o.tableClassName;\r\n let sortedColumns = p.$headerRow.find('>div.' + tableClassName + '-header-cell.sorted');\r\n let arrows = sortedColumns.find('>div>.sort-arrow');\r\n for (let arrow of arrows) {\r\n let col = p.columns.get(arrow.parentNode.parentNode['columnName']);\r\n if (col) {\r\n col.arrowProposedWidth = 0;\r\n }\r\n }\r\n arrows.remove();\r\n sortedColumns.removeClass('sorted').removeClass('desc');\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {String} column the name of the sort column\r\n * @param {Boolean} descending table is sorted descending\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._showSortArrow = function (column, descending) {\r\n\r\n let that = this,\r\n p = that.p;\r\n\r\n let col = p.columns.get(column);\r\n if (!col) return false;\r\n\r\n let arrow = createElement('span');\r\n arrow.className = 'sort-arrow';\r\n\r\n if (col.element) {\r\n col.element.addClass(descending ? 'sorted desc' : 'sorted');\r\n col.element[0].firstChild.insertBefore(arrow, col.element[0].firstChild.firstChild);\r\n }\r\n\r\n if (col.widthMode !== ColumnWidthMode.RELATIVE && this.o.adjustColumnWidthForSortArrow) {\r\n col.arrowProposedWidth = arrow.scrollWidth + (parseFloat($(arrow).css('margin-right')) || 0) + (parseFloat($(arrow).css('margin-left')) || 0);\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {Number} cellIndex index of the column in the DOM\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._resizeColumnElements = function (cellIndex) {\r\n\r\n let that = this,\r\n p = that.p;\r\n\r\n let headerCells = p.$headerRow.find('div.' + this.o.tableClassName + '-header-cell');\r\n let col = p.columns.get(headerCells[cellIndex]['columnName']);\r\n\r\n if (col) {\r\n headerCells[cellIndex].style.width = (col.actualWidthConsideringScrollbarWidth || col.actualWidth) + 'px';\r\n\r\n let width = (col.actualWidthConsideringScrollbarWidth || col.actualWidth) + 'px';\r\n let tbodyChildren = p.$tbody[0].childNodes;\r\n for (let i = 0, count = tbodyChildren.length; i < count; i++) {\r\n let headerRow = tbodyChildren[i];\r\n if (headerRow.nodeType !== 1) continue;\r\n headerRow.childNodes[cellIndex].style.width = width;\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @returns {DGTable} self\r\n * */\r\nDGTable.prototype._destroyHeaderCells = function() {\r\n\r\n let that = this,\r\n o = that.o,\r\n p = that.p;\r\n\r\n if (p.$headerRow) {\r\n this.trigger('headerrowdestroy', p.headerRow);\r\n p.$headerRow.find('div.' + o.tableClassName + '-header-cell').remove();\r\n p.$headerRow = null;\r\n p.headerRow = null;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._renderSkeletonBase = function () {\r\n let that = this,\r\n p = that.p,\r\n o = that.o;\r\n\r\n // Clean up old elements\r\n\r\n if (p.$table && o.virtualTable) {\r\n p.$table.remove();\r\n if (p.$tbody) {\r\n let rows = p.$tbody[0].childNodes;\r\n for (let i = 0, len = rows.length; i < len; i++) {\r\n that.trigger('rowdestroy', rows[i]);\r\n that._unbindCellEventsForRow(rows[i]);\r\n }\r\n }\r\n p.$table = p.table = p.$tbody = p.tbody = null;\r\n }\r\n\r\n that._destroyHeaderCells();\r\n p.currentTouchId = null;\r\n if (p.$header) {\r\n p.$header.remove();\r\n }\r\n\r\n // Create new base elements\r\n let tableClassName = o.tableClassName,\r\n headerCellClassName = tableClassName + '-header-cell',\r\n header = createElement('div'),\r\n $header = $(header),\r\n headerRow = createElement('div'),\r\n $headerRow = $(headerRow);\r\n\r\n header.className = tableClassName + '-header';\r\n headerRow.className = tableClassName + '-header-row';\r\n\r\n p.$header = $header;\r\n p.header = header;\r\n p.$headerRow = $headerRow;\r\n p.headerRow = headerRow;\r\n $headerRow.appendTo(p.$header);\r\n $header.prependTo(this.$el);\r\n\r\n relativizeElement(that.$el);\r\n\r\n if (o.width === DGTable.Width.SCROLL) {\r\n this.el.style.overflow = 'hidden';\r\n } else {\r\n this.el.style.overflow = '';\r\n }\r\n\r\n if (!o.height && o.virtualTable) {\r\n o.height = getElementHeight(this.$el[0], true);\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._renderSkeletonHeaderCells = function () {\r\n let that = this,\r\n p = that.p,\r\n o = that.o;\r\n\r\n let allowCellPreview = o.allowCellPreview,\r\n allowHeaderCellPreview = o.allowHeaderCellPreview;\r\n\r\n let tableClassName = o.tableClassName,\r\n headerCellClassName = tableClassName + '-header-cell',\r\n headerRow = p.headerRow;\r\n\r\n let ieDragDropHandler;\r\n if (hasIeDragAndDropBug) {\r\n ieDragDropHandler = function(evt) {\r\n evt.preventDefault();\r\n this.dragDrop();\r\n return false;\r\n };\r\n }\r\n\r\n let preventDefault = function (event) { event.preventDefault(); };\r\n\r\n // Create header cells\r\n for (let i = 0; i < p.visibleColumns.length; i++) {\r\n let column = p.visibleColumns[i];\r\n if (column.visible) {\r\n let cell = createElement('div');\r\n let $cell = $(cell);\r\n cell.draggable = true;\r\n cell.className = headerCellClassName;\r\n cell.style.width = column.actualWidth + 'px';\r\n if (o.sortableColumns && column.sortable) {\r\n cell.className += ' sortable';\r\n }\r\n cell['columnName'] = column.name;\r\n cell.setAttribute('data-column', column.name);\r\n\r\n let cellInside = createElement('div');\r\n cellInside.innerHTML = o.headerCellFormatter(column.label, column.name);\r\n cell.appendChild(cellInside);\r\n if (allowCellPreview && allowHeaderCellPreview) {\r\n p._bindCellHoverIn(cell);\r\n }\r\n headerRow.appendChild(cell);\r\n\r\n p.visibleColumns[i].element = $cell;\r\n\r\n $cell.on('mousedown.dgtable', that._onMouseDownColumnHeader.bind(that))\r\n .on('mousemove.dgtable', that._onMouseMoveColumnHeader.bind(that))\r\n .on('mouseup.dgtable', that._onMouseUpColumnHeader.bind(that))\r\n .on('mouseleave.dgtable', that._onMouseLeaveColumnHeader.bind(that))\r\n .on('touchstart.dgtable', that._onTouchStartColumnHeader.bind(that))\r\n .on('dragstart.dgtable', that._onStartDragColumnHeader.bind(that))\r\n .on('click.dgtable', that._onClickColumnHeader.bind(that))\r\n .on('contextmenu.dgtable', preventDefault);\r\n $(cellInside)\r\n .on('dragenter.dgtable', that._onDragEnterColumnHeader.bind(that))\r\n .on('dragover.dgtable', that._onDragOverColumnHeader.bind(that))\r\n .on('dragleave.dgtable', that._onDragLeaveColumnHeader.bind(that))\r\n .on('drop.dgtable', that._onDropColumnHeader.bind(that));\r\n\r\n if (hasIeDragAndDropBug) {\r\n $cell.on('selectstart.dgtable', ieDragDropHandler.bind(cell));\r\n }\r\n\r\n // Disable these to allow our own context menu events without interruption\r\n $cell.css({ '-webkit-touch-callout': 'none', '-webkit-user-select': 'none', '-moz-user-select': 'none', '-ms-user-select': 'none', '-o-user-select': 'none', 'user-select': 'none' });\r\n }\r\n }\r\n\r\n this.trigger('headerrowcreate', headerRow);\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._renderSkeletonBody = function () {\r\n let that = this,\r\n p = that.p,\r\n o = that.o;\r\n\r\n let tableClassName = o.tableClassName;\r\n\r\n // Calculate virtual row heights\r\n if (o.virtualTable && !p.virtualRowHeight) {\r\n let createDummyRow = function() {\r\n let row = createElement('div'),\r\n cell = row.appendChild(createElement('div')),\r\n cellInner = cell.appendChild(createElement('div'));\r\n row.className = tableClassName + '-row';\r\n cell.className = tableClassName + '-cell';\r\n cellInner.innerHTML = '0';\r\n row.style.visibility = 'hidden';\r\n row.style.position = 'absolute';\r\n return row;\r\n };\r\n\r\n let $dummyTbody, $dummyWrapper = $('<div>')\r\n .addClass(that.el.className)\r\n .css({ 'z-index': -1, 'position': 'absolute', left: '0', top: '-9999px', width: '1px', overflow: 'hidden' })\r\n .append(\r\n $('<div>').addClass(tableClassName).append(\r\n $dummyTbody = $('<div>').addClass(tableClassName + '-body').css('width', 99999),\r\n ),\r\n );\r\n\r\n $dummyWrapper.appendTo(document.body);\r\n\r\n let row1 = createDummyRow(), row2 = createDummyRow(), row3 = createDummyRow();\r\n $dummyTbody.append(row1, row2, row3);\r\n\r\n p.virtualRowHeightFirst = getElementHeight(row1, true, true, true);\r\n p.virtualRowHeight = getElementHeight(row2, true, true, true);\r\n p.virtualRowHeightLast = getElementHeight(row3, true, true, true);\r\n\r\n p.virtualRowHeightMin = Math.min(Math.min(p.virtualRowHeightFirst, p.virtualRowHeight), p.virtualRowHeightLast);\r\n p.virtualRowHeightMax = Math.max(Math.max(p.virtualRowHeightFirst, p.virtualRowHeight), p.virtualRowHeightLast);\r\n\r\n $dummyWrapper.remove();\r\n }\r\n\r\n // Create inner table and tbody\r\n if (!p.$table) {\r\n\r\n let fragment = document.createDocumentFragment();\r\n\r\n // Create the inner table element\r\n let table = createElement('div');\r\n let $table = $(table);\r\n table.className = tableClassName;\r\n\r\n if (o.virtualTable) {\r\n table.className += ' virtual';\r\n }\r\n\r\n let tableHeight = (o.height - getElementHeight(p.$headerRow[0], true, true, true));\r\n if ($table.css('box-sizing') !== 'border-box') {\r\n tableHeight -= parseFloat($table.css('border-top-width')) || 0;\r\n tableHeight -= parseFloat($table.css('border-bottom-width')) || 0;\r\n tableHeight -= parseFloat($table.css('padding-top')) || 0;\r\n tableHeight -= parseFloat($table.css('padding-bottom')) || 0;\r\n }\r\n p.visibleHeight = tableHeight;\r\n table.style.height = o.height ? tableHeight + 'px' : 'auto';\r\n table.style.display = 'block';\r\n table.style.overflowY = 'auto';\r\n table.style.overflowX = o.width === DGTable.Width.SCROLL ? 'auto' : 'hidden';\r\n fragment.appendChild(table);\r\n\r\n // Create the \"tbody\" element\r\n let tbody = createElement('div');\r\n let $tbody = $(tbody);\r\n tbody.className = o.tableClassName + '-body';\r\n p.table = table;\r\n p.tbody = tbody;\r\n p.$table = $table;\r\n p.$tbody = $tbody;\r\n\r\n if (o.virtualTable) {\r\n p.virtualVisibleRows = Math.ceil(p.visibleHeight / p.virtualRowHeightMin);\r\n }\r\n\r\n that._calculateVirtualHeight();\r\n\r\n relativizeElement($tbody);\r\n relativizeElement($table);\r\n\r\n table.appendChild(tbody);\r\n that.el.appendChild(fragment);\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n * @deprecated\r\n */\r\nDGTable.prototype._renderSkeleton = function () {\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._updateLastCellWidthFromScrollbar = function(force) {\r\n\r\n const p = this.p;\r\n\r\n // Calculate scrollbar's width and reduce from lat column's width\r\n let scrollbarWidth = p.table.offsetWidth - p.table.clientWidth;\r\n if (scrollbarWidth !== p.scrollbarWidth || force) {\r\n p.scrollbarWidth = scrollbarWidth;\r\n for (let i = 0; i < p.columns.length; i++) {\r\n p.columns[i].actualWidthConsideringScrollbarWidth = null;\r\n }\r\n\r\n if (p.scrollbarWidth > 0 && p.visibleColumns.length > 0) {\r\n // (There should always be at least 1 column visible, but just in case)\r\n let lastColIndex = p.visibleColumns.length - 1;\r\n\r\n p.visibleColumns[lastColIndex].actualWidthConsideringScrollbarWidth = p.visibleColumns[lastColIndex].actualWidth - p.scrollbarWidth;\r\n let lastColWidth = p.visibleColumns[lastColIndex].actualWidthConsideringScrollbarWidth + 'px';\r\n let tbodyChildren = p.tbody.childNodes;\r\n for (let i = 0, count = tbodyChildren.length; i < count; i++) {\r\n let row = tbodyChildren[i];\r\n if (row.nodeType !== 1) continue;\r\n row.childNodes[lastColIndex].style.width = lastColWidth;\r\n }\r\n\r\n p.headerRow.childNodes[lastColIndex].style.width = lastColWidth;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Explicitly set the width of the table based on the sum of the column widths\r\n * @private\r\n * @param {boolean} parentSizeMayHaveChanged Parent size may have changed, treat rendering accordingly\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype._updateTableWidth = function (parentSizeMayHaveChanged) {\r\n const o = this.o, p = this.p;\r\n let width = this._calculateTbodyWidth();\r\n\r\n p.tbody.style.minWidth = width + 'px';\r\n p.headerRow.style.minWidth = (width + (p.scrollbarWidth || 0)) + 'px';\r\n\r\n p.$table.off('scroll', p.onTableScrolledHorizontallyBound);\r\n\r\n if (o.width === DGTable.Width.AUTO) {\r\n // Update wrapper element's size to fully contain the table body\r\n\r\n setElementWidth(p.$table[0], getElementWidth(p.$tbody[0], true, true, true));\r\n setElementWidth(this.$el[0], getElementWidth(p.$table[0], true, true, true));\r\n\r\n } else if (o.width === DGTable.Width.SCROLL) {\r\n\r\n if (parentSizeMayHaveChanged) {\r\n let lastScrollTop = p.table ? p.table.scrollTop : 0,\r\n lastScrollLeft = p.table ? p.table.scrollLeft : 0;\r\n\r\n // BUGFIX: Relayout before recording the widths\r\n webkitRenderBugfix(this.el);\r\n\r\n p.table.scrollTop = lastScrollTop;\r\n p.table.scrollLeft = lastScrollLeft;\r\n p.header.scrollLeft = lastScrollLeft;\r\n }\r\n\r\n p.$table.on('scroll', p.onTableScrolledHorizontallyBound);\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * @private\r\n * @returns {Boolean}\r\n */\r\nDGTable.prototype._isTableRtl = function() {\r\n return this.p.$table.css('direction') === 'rtl';\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {Object} column column object\r\n * @returns {String}\r\n */\r\nDGTable.prototype._serializeColumnWidth = function(column) {\r\n return column.widthMode === ColumnWidthMode.AUTO ? 'auto' :\r\n column.widthMode === ColumnWidthMode.RELATIVE ? column.width * 100 + '%' :\r\n column.width;\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {HTMLElement} el\r\n */\r\nDGTable.prototype._cellMouseOverEvent = function(el) {\r\n const o = this.o, p = this.p;\r\n\r\n let elInner = el.firstChild;\r\n\r\n if ((elInner.scrollWidth - elInner.clientWidth > 1) ||\r\n (elInner.scrollHeight - elInner.clientHeight > 1)) {\r\n\r\n this.hideCellPreview();\r\n p.abortCellPreview = false;\r\n\r\n let $el = $(el), $elInner = $(elInner);\r\n let previewCell = createElement('div'), $previewCell = $(previewCell);\r\n previewCell.innerHTML = el.innerHTML;\r\n previewCell.className = o.cellPreviewClassName;\r\n\r\n let isHeaderCell = $el.hasClass(o.tableClassName + '-header-cell');\r\n if (isHeaderCell) {\r\n previewCell.className += ' header';\r\n if ($el.hasClass('sortable')) {\r\n previewCell.className += ' sortable';\r\n }\r\n\r\n previewCell.draggable = true;\r\n\r\n $(previewCell).on('mousedown', this._onMouseDownColumnHeader.bind(this))\r\n .on('mousemove', this._onMouseMoveColumnHeader.bind(this))\r\n .on('mouseup', this._onMouseUpColumnHeader.bind(this))\r\n .on('mouseleave', this._onMouseLeaveColumnHeader.bind(this))\r\n .on('touchstart', this._onTouchStartColumnHeader.bind(this))\r\n .on('dragstart', this._onStartDragColumnHeader.bind(this))\r\n .on('click', this._onClickColumnHeader.bind(this))\r\n .on('contextmenu.dgtable', function (event) { event.preventDefault(); });\r\n $(previewCell.firstChild)\r\n .on('dragenter', this._onDragEnterColumnHeader.bind(this))\r\n .on('dragover', this._onDragOverColumnHeader.bind(this))\r\n .on('dragleave', this._onDragLeaveColumnHeader.bind(this))\r\n .on('drop', this._onDropColumnHeader.bind(this));\r\n\r\n if (hasIeDragAndDropBug) {\r\n $(previewCell).on('selectstart', (function(evt) {\r\n evt.preventDefault();\r\n this.dragDrop();\r\n return false;\r\n }).bind(previewCell));\r\n }\r\n }\r\n\r\n let paddingL = parseFloat($el.css('padding-left')) || 0,\r\n paddingR = parseFloat($el.css('padding-right')) || 0,\r\n paddingT = parseFloat($el.css('padding-top')) || 0,\r\n paddingB = parseFloat($el.css('padding-bottom')) || 0;\r\n\r\n let requiredWidth = elInner.scrollWidth + (el.clientWidth - elInner.offsetWidth);\r\n\r\n let borderBox = $el.css('box-sizing') === 'border-box';\r\n if (borderBox) {\r\n $previewCell.css('box-sizing', 'border-box');\r\n } else {\r\n requiredWidth -= paddingL + paddingR;\r\n $previewCell.css('margin-top', parseFloat($(el).css('border-top-width')) || 0);\r\n }\r\n\r\n if (!p.transparentBgColor1) {\r\n // Detect browser's transparent spec\r\n let tempDiv = document.createElement('div');\r\n tempDiv.style.backgroundColor = 'transparent';\r\n p.transparentBgColor1 = $(tempDiv).css('background-color');\r\n tempDiv.style.backgroundColor = 'rgba(0,0,0,0)';\r\n p.transparentBgColor2 = $(tempDiv).css('background-color');\r\n }\r\n\r\n let css = {\r\n 'box-sizing': borderBox ? 'border-box' : 'content-box',\r\n 'width': requiredWidth,\r\n 'min-height': getElementHeight($el[0]),\r\n 'padding-left': paddingL,\r\n 'padding-right': paddingR,\r\n 'padding-top': paddingT,\r\n 'padding-bottom': paddingB,\r\n 'overflow': 'hidden',\r\n 'position': 'absolute',\r\n 'z-index': '-1',\r\n 'left': '0',\r\n 'top': '0',\r\n 'cursor': 'default',\r\n };\r\n\r\n if (css) {\r\n let bgColor = $(el).css('background-color');\r\n if (bgColor === p.transparentBgColor1 || bgColor === p.transparentBgColor2) {\r\n bgColor = $(el.parentNode).css('background-color');\r\n }\r\n if (bgColor === p.transparentBgColor1 || bgColor === p.transparentBgColor2) {\r\n bgColor = '#fff';\r\n }\r\n css['background-color'] = bgColor;\r\n }\r\n\r\n $previewCell.css(css);\r\n\r\n this.el.appendChild(previewCell);\r\n\r\n $(previewCell.firstChild).css({\r\n 'direction': $elInner.css('direction'),\r\n 'white-space': $elInner.css('white-space'),\r\n });\r\n\r\n if (isHeaderCell) {\r\n // Disable these to allow our own context menu events without interruption\r\n $previewCell.css({\r\n '-webkit-touch-callout': 'none',\r\n '-webkit-user-select': 'none',\r\n '-moz-user-select': 'none',\r\n '-ms-user-select': 'none',\r\n '-o-user-select': 'none',\r\n 'user-select': 'none',\r\n });\r\n }\r\n\r\n previewCell['rowIndex'] = el.parentNode['rowIndex'];\r\n let physicalRowIndex = previewCell['physicalRowIndex'] = el.parentNode['physicalRowIndex'];\r\n previewCell['columnName'] = p.visibleColumns[nativeIndexOf.call(el.parentNode.childNodes, el)].name;\r\n\r\n try {\r\n let selection = SelectionHelper.saveSelection(el);\r\n if (selection)\r\n SelectionHelper.restoreSelection(previewCell, selection);\r\n } catch (ignored) { /* we're ok with this */ }\r\n\r\n this.trigger(\r\n 'cellpreview',\r\n previewCell.firstChild,\r\n physicalRowIndex == null ? null : physicalRowIndex,\r\n previewCell['columnName'],\r\n physicalRowIndex == null ? null : p.rows[physicalRowIndex],\r\n el,\r\n );\r\n\r\n if (p.abortCellPreview) {\r\n $previewCell.remove();\r\n return;\r\n }\r\n\r\n let $parent = this.$el;\r\n let $scrollParent = $parent[0] === window ? $(document) : $parent;\r\n\r\n let offset = $el.offset();\r\n let parentOffset = $parent.offset();\r\n let rtl = $el.css('float') === 'right';\r\n let prop = rtl ? 'right' : 'left';\r\n\r\n // Handle RTL, go from the other side\r\n if (rtl) {\r\n let windowWidth = $(window).width();\r\n offset.right = windowWidth - (offset.left + getElementWidth($el[0], true, true, true));\r\n parentOffset.right = windowWidth - (parentOffset.left + getElementWidth($parent[0], true, true, true));\r\n }\r\n\r\n // If the parent has borders, then it would offset the offset...\r\n offset.left -= parseFloat($parent.css('border-left-width')) || 0;\r\n offset.right -= parseFloat($parent.css('border-right-width')) || 0;\r\n offset.top -= parseFloat($parent.css('border-top-width')) || 0;\r\n\r\n // Handle border widths of the element being offset\r\n offset[prop] += parseFloat($(el).css('border-' + prop + '-width')) || 0;\r\n offset.top += parseFloat($(el).css('border-top-width')) || parseFloat($(el).css('border-bottom-width')) || 0;\r\n\r\n // Subtract offsets to get offset relative to parent\r\n offset.left -= parentOffset.left;\r\n offset.right -= parentOffset.right;\r\n offset.top -= parentOffset.top;\r\n\r\n // Constrain horizontally\r\n let minHorz = 0,\r\n maxHorz = $parent - getElementWidth($previewCell[0], true, true, true);\r\n offset[prop] = offset[prop] < minHorz ?\r\n minHorz :\r\n (offset[prop] > maxHorz ? maxHorz : offset[prop]);\r\n\r\n // Constrain vertically\r\n let totalHeight = getElementHeight($el[0], true, true, true);\r\n let maxTop = $scrollParent.scrollTop() + getElementHeight($parent[0], true) - totalHeight;\r\n if (offset.top > maxTop) {\r\n offset.top = Math.max(0, maxTop);\r\n }\r\n\r\n // Apply css to preview cell\r\n let previewCss = {\r\n top: offset.top,\r\n 'z-index': 9999,\r\n };\r\n previewCss[prop] = offset[prop];\r\n\r\n $previewCell.css(previewCss);\r\n\r\n previewCell['__cell'] = el;\r\n p.$cellPreviewCell = $previewCell;\r\n el['__previewCell'] = previewCell;\r\n\r\n p._bindCellHoverOut(el);\r\n p._bindCellHoverOut(previewCell);\r\n\r\n // Avoid interfering with wheel scrolling the table\r\n $previewCell.on('wheel', () => {\r\n // Let the table naturally scroll with the wheel\r\n this.hideCellPreview();\r\n });\r\n }\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {HTMLElement} _el\r\n */\r\nDGTable.prototype._cellMouseOutEvent = function(_el) {\r\n this.hideCellPreview();\r\n};\r\n\r\n/**\r\n * Hides the current cell preview,\r\n * or prevents the one that is currently trying to show (in the 'cellpreview' event)\r\n * @public\r\n * @expose\r\n * @returns {DGTable} self\r\n */\r\nDGTable.prototype.hideCellPreview = function() {\r\n const p = this.p;\r\n\r\n if (p.$cellPreviewCell) {\r\n let previewCell = p.$cellPreviewCell[0];\r\n let origCell = previewCell['__cell'];\r\n let selection;\r\n\r\n try {\r\n selection = SelectionHelper.saveSelection(previewCell);\r\n } catch (ignored) { /* we're ok with this */ }\r\n\r\n p.$cellPreviewCell.remove();\r\n p._unbindCellHoverOut(origCell);\r\n p._unbindCellHoverOut(previewCell);\r\n\r\n try {\r\n if (selection)\r\n SelectionHelper.restoreSelection(origCell, selection);\r\n } catch (ignored) { /* we're ok with this */ }\r\n\r\n this.trigger('cellpreviewdestroy', previewCell.firstChild, previewCell['physicalRowIndex'], previewCell['columnName'], origCell);\r\n\r\n origCell['__previewCell'] = null;\r\n previewCell['__cell'] = null;\r\n\r\n p.$cellPreviewCell = null;\r\n p.abortCellPreview = false;\r\n } else {\r\n p.abortCellPreview = true;\r\n }\r\n\r\n return this;\r\n};\r\n\r\n// It's a shame the Google Closure Compiler does not support exposing a nested @param\r\n\r\n/**\r\n * @typedef {Object} SERIALIZED_COLUMN\r\n * @property {Number|null|undefined} [order=0]\r\n * @property {String|null|undefined} [width='auto']\r\n * @property {Boolean|null|undefined} [visible=true]\r\n * */\r\n\r\n/**\r\n * @typedef {Object} SERIALIZED_COLUMN_SORT\r\n * @property {String|null|undefined} [column='']\r\n * @property {Boolean|null|undefined} [descending=false]\r\n * */\r\n\r\n/**\r\n * @enum {ColumnWidthMode|number|undefined}\r\n * @const\r\n * @typedef {ColumnWidthMode}\r\n */\r\nconst ColumnWidthMode = {\r\n /** @const*/ AUTO: 0,\r\n /** @const*/ ABSOLUTE: 1,\r\n /** @const*/ RELATIVE: 2,\r\n};\r\n\r\n/**\r\n * @enum {DGTable.Width|String|undefined}\r\n * @const\r\n * @typedef {DGTable.Width}\r\n */\r\nDGTable.Width = {\r\n /** @const*/ NONE: 'none',\r\n /** @const*/ AUTO: 'auto',\r\n /** @const*/ SCROLL: 'scroll',\r\n};\r\n\r\n/**\r\n * @expose\r\n * @typedef {Object} COLUMN_SORT_OPTIONS\r\n * @property {String|null|undefined} column\r\n * @property {Boolean|null|undefined} [descending=false]\r\n * */\r\n\r\n/**\r\n * @expose\r\n * @typedef {Object} COLUMN_OPTIONS\r\n * @property {String|null|undefined} width\r\n * @property {String|null|undefined} name\r\n * @property {String|null|undefined} label\r\n * @property {String|null|undefined} dataPath - defaults to `name`\r\n * @property {String|null|undefined} comparePath - defaults to `dataPath`\r\n * @property {Number|String|null|undefined} comparePath\r\n * @property {Boolean|null|undefined} [resizable=true]\r\n * @property {Boolean|null|undefined} [movable=true]\r\n * @property {Boolean|null|undefined} [sortable=true]\r\n * @property {Boolean|null|undefined} [visible=true]\r\n * @property {String|null|undefined} [cellClasses]\r\n * @property {Boolean|null|undefined} [ignoreMin=false]\r\n * */\r\n\r\n/**\r\n * @typedef {Object} DGTable.Options\r\n * @property {COLUMN_OPTIONS[]} [columns]\r\n * @property {Number} [height]\r\n * @property {DGTable.Width} [width]\r\n * @property {Boolean|null|undefined} [virtualTable=true]\r\n * @property {Boolean|null|undefined} [resizableColumns=true]\r\n * @property {Boolean|null|undefined} [movableColumns=true]\r\n * @property {Number|null|undefined} [sortableColumns=1]\r\n * @property {Boolean|null|undefined} [adjustColumnWidthForSortArrow=true]\r\n * @property {Boolean|null|undefined} [relativeWidthGrowsToFillWidth=true]\r\n * @property {Boolean|null|undefined} [relativeWidthShrinksToFillWidth=false]\r\n * @property {Boolean|null|undefined} [convertColumnWidthsToRelative=false]\r\n * @property {Boolean|null|undefined} [autoFillTableWidth=false]\r\n * @property {String|null|undefined} [cellClasses]\r\n * @property {String|String[]|COLUMN_SORT_OPTIONS|COLUMN_SORT_OPTIONS[]} [sortColumn]\r\n * @property {Function|null|undefined} [cellFormatter=null]\r\n * @property {Function|null|undefined} [headerCellFormatter=null]\r\n * @property {Number|null|undefined} [rowsBufferSize=10]\r\n * @property {Number|null|undefined} [minColumnWidth=35]\r\n * @property {Number|null|undefined} [resizeAreaWidth=8]\r\n * @property {{function(string,boolean):{function(a:*,b:*):boolean}}} [onComparatorRequired]\r\n * @property {String|null|undefined} [resizerClassName=undefined]\r\n * @property {String|null|undefined} [tableClassName=undefined]\r\n * @property {Boolean|null|undefined} [allowCellPreview=true]\r\n * @property {Boolean|null|undefined} [allowHeaderCellPreview=true]\r\n * @property {String|null|undefined} [cellPreviewClassName=undefined]\r\n * @property {Boolean|null|undefined} [cellPreviewAutoBackground=true]\r\n * @property {Element|null|undefined} [el=undefined]\r\n * @property {String|null|undefined} [className=undefined]\r\n * @property {Function|null|undefined} [filter=undefined]\r\n * */\r\n\r\n/**\r\n * @typedef {{\r\n * currentTarget: Element,\r\n * data: Object.<string, *>,\r\n * delegateTarget: Element,\r\n * isDefaultPrevented: Boolean,\r\n * isImmediatePropagationStopped: Boolean,\r\n * isPropagationStopped: Boolean,\r\n * namespace: string,\r\n * originalEvent: MouseEvent|TouchEvent|Event,\r\n * pageX: Number,\r\n * pageY: Number,\r\n * preventDefault: Function,\r\n * props: Object.<string, *>,\r\n * relatedTarget: Element,\r\n * result: *,\r\n * stopImmediatePropagation: Function,\r\n * stopPropagation: Function,\r\n * target: Element,\r\n * timeStamp: Number,\r\n * type: string,\r\n * which: Number\r\n * }} jQuery_Event\r\n * */\r\n\r\nif (!$.controls) {\r\n $.controls = {};\r\n}\r\n\r\n$.controls.dgtable = DGTable;\r\n\r\nexport default DGTable;\r\n"],"names":["global","fails","require$$0","call","getOwnPropertyDescriptor","createPropertyDescriptor","FunctionPrototype","uncurryThis","toString","classofRaw","require$$1","require$$2","classof","require$$3","Object","TypeError","requireObjectCoercible","toIndexedObject","isCallable","isObject","getBuiltIn","userAgent","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","require$$4","isSymbol","String","tryToString","aCallable","getMethod","ordinaryToPrimitive","setGlobal","store","sharedModule","toObject","hasOwnProperty","uid","shared","hasOwn","require$$5","Symbol","wellKnownSymbol","require$$6","toPrimitive","toPropertyKey","document","EXISTS","DESCRIPTORS","createElement","IE8_DOM_DEFINE","require$$7","$getOwnPropertyDescriptor","anObject","CONFIGURABLE","definePropertyModule","createNonEnumerableProperty","inspectSource","WeakMap","sharedKey","hiddenKeys","require$$8","redefineModule","floor","toIntegerOrInfinity","max","min","toAbsoluteIndex","toLength","lengthOfArrayLike","indexOf","push","enumBugKeys","ownKeys","copyConstructorProperties","isForced","TO_STRING_TAG","test","createProperty","Array","arrayMethodIsStrict","$","require$$9","require$$10","require$$11","require$$12","prototype","includes","array","item","find","predicate","i","len","length","htmlEncode","text","replace","RowCollection","collection","assign","initialize","apply","arguments","options","sortColumn","add","rows","at","isArray","splice","reset","filteredCollection","filterFunc","args","row","onComparatorRequired","onSort","nativeSort","sort","getDefaultComparator","column","descending","columnName","comparePath","split","pathLength","hasPath","lessVal","moreVal","leftRow","rightRow","leftVal","rightVal","silent","comparators","comparator","defaultComparator","bind","value","ColumnCollection","get","name","getByOrder","order","normalizeOrder","ordered","col1","col2","getColumns","cols","getVisibleColumns","visible","getMaxOrder","moveColumn","src","dest","srcOrder","destOrder","col","CssUtil","_isTransformSupported","getSupportedTransform","prefixes","div","style","undefined","isChildOf","child","parent","parentNode","SelectionHelper","saveSelection","el","range","window","getSelection","getRangeAt","commonAncestorContainer","preSelectionRange","cloneRange","selectNodeContents","setEnd","startContainer","startOffset","start","end","restoreSelection","savedSel","charIndex","nodeStack","node","foundStart","stop","createRange","setStart","collapse","pop","nodeType","nextCharIndex","childNodes","sel","removeAllRanges","addRange","ByColumnFilter","keyword","actualVal","caseSensitive","toLowerCase","nativeIndexOf","jQuery","navigator","ieVersion","parseFloat","substr","hasIeDragAndDropBug","IsSafeSymbol","webkitRenderBugfix","oldDisplay","display","offsetHeight","relativizeElement","$el","css","isInputElementEvent","event","target","tagName","DGTable","Function","concat","slice","VERSION","that","o","p","events","Element","addClass","className","data","on","destroy","onMouseMoveResizeAreaBound","_onMouseMoveResizeArea","onEndDragColumnHeaderBound","_onEndDragColumnHeader","onTableScrolledHorizontallyBound","_onTableScrolledHorizontally","tableSkeletonNeedsRendering","virtualTable","rowsBufferSize","minColumnWidth","Math","resizeAreaWidth","resizableColumns","movableColumns","sortableColumns","parseInt","adjustColumnWidthForSortArrow","convertColumnWidthsToRelative","autoFillTableWidth","cellClasses","resizerClassName","tableClassName","allowCellPreview","allowHeaderCellPreview","cellPreviewClassName","cellPreviewAutoBackground","width","Width","NONE","relativeWidthGrowsToFillWidth","relativeWidthShrinksToFillWidth","setCellFormatter","cellFormatter","setHeaderCellFormatter","headerCellFormatter","setFilter","filter","height","setColumns","columns","sortColumns","tmpSortColumns","dataPath","filteredRows","hoverMouseOverHandler","evt","relatedTarget","fromElement","contains","_cellMouseOverEvent","hoverMouseOutHandler","toElement","_cellMouseOutEvent","_bindCellHoverIn","addEventListener","_unbindCellHoverIn","removeEventListener","_bindCellHoverOut","_unbindCellHoverOut","attachEvent","detachEvent","eventName","callback","cb","once","off","callbacks","trigger","_parseColumnWidth","minWidth","widthSize","widthMode","ColumnWidthMode","AUTO","RELATIVE","ABSOLUTE","mode","_initColumnFromData","columnData","parsedWidth","ignoreMin","label","resizable","sortable","movable","close","remove","__removed","$resizer","$tbody","trs","_destroyHeaderCells","_unbindCellEventsForTable","$table","empty","workerListeners","j","worker","listener","_deferredRender","clearTimeout","prop","headerRow","rowCount","rowToClean","cells","cellCount","tbody","_unbindCellEventsForRow","render","offsetParent","setTimeout","renderedRows","_clearSortArrows","lastScrollTop","table","scrollTop","NaN","lastScrollHorz","getScrollHorz","_renderSkeletonBase","_renderSkeletonBody","tableWidthChanged","_renderSkeletonHeaderCells","renderRows","html","append","_updateLastCellWidthFromScrollbar","_updateTableWidth","_showSortArrow","isNaN","setScrollHorz","header","_onVirtualTableScrolled","firstVisible","virtualRowHeightFirst","virtualRowHeight","lastVisible","ceil","visibleHeight","oldFirstVisible","oldLastVisible","tbodyChildNodes","countToRemove","removeChild","prepend","clearAndRender","first","last","rowClassName","altRowClassName","cellClassName","isDataFiltered","visibleColumns","isVirtual","top","physicalRowIndex","colCount","colIndex","_finalWidth","actualWidthConsideringScrollbarWidth","actualWidth","bodyFragment","createDocumentFragment","isRtl","_isTableRtl","virtualRowXAttr","supportedTransform","rowData","cell","setAttribute","cellInner","appendChild","innerHTML","_getHtmlForCell","position","_calculateVirtualHeight","virtualRowHeightLast","_calculateTbodyWidth","$row","sumActualWidth","$thisWrapper","left","overflow","appendTo","body","fractionTest","fractionValue","hasFractions","round","getElementWidth","scrollbarWidth","normalizedCols","normalizedColumn","_ensureVisibleColumns","addColumn","before","beforeColumn","to","removeColumn","colIdx","formatter","val","hadFilter","filterArgs","extend","clearFilter","_refilter","setColumnLabel","element","firstChild","textContent","visibleOnly","destCol","columnsArray","some","x","headerCell","$headerRow","beforePos","fromPos","insertBefore","srcWidth","destWidth","tbodyChildren","count","currentSort","_tableSkeletonNeedsRendering","sorts","resort","setColumnVisible","isColumnVisible","setMinColumnWidth","getMinColumnWidth","setSortableColumns","getSortableColumns","setMovableColumns","getMovableColumns","setResizableColumns","getResizableColumns","setComparatorCallback","comparatorCallback","setColumnWidth","oldWidth","_serializeColumnWidth","newWidth","getColumnWidth","getColumnConfig","getColumnsConfig","config","getSortedColumns","sorted","getHtmlForRowCell","rowIndex","getHtmlForRowDataCell","colValue","dataPathIndex","content","err","console","error","getRowYPos","offsetTop","getDataForRow","getRowCount","getIndexForRow","getFilteredRowCount","getIndexForFilteredRow","getDataForFilteredRow","getHeaderRowElement","_horizontalPadding","_horizontalBorderWidth","_calculateWidthAvailableForColumns","lastScrollLeft","scrollLeft","detectedWidth","$header","$cells","$cell","isBoxing","getTextWidth","$tableWrapper","lastDetectedWidth","forceUpdate","renderColumns","sizeLeft","relatives","tableWidthBeforeCalculations","absWidthTotal","changedColumnIndexes","totalRelativePercentage","arrowProposedWidth","sizeLeftForRelative","clientWidth","minColumnWidthRelative","extraRelative","delta","nonResizableTotal","sizeLeftToFill","conv","tableWidth","_resizeColumnElements","tableHeightChanged","getElementHeight","addRows","firstRow","lastRow","removeRows","lastRowIndex","index","removeRow","refreshRow","isRowVisible","renderedRow","getRowElement","refreshAllVirtualRows","rowsToRender","setRows","getUrlForElementContent","id","blob","getElementById","Blob","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","builder","getBlob","URL","webkitURL","createObjectURL","isWorkerSupported","createWebWorker","url","Worker","postMessage","unbindWebWorker","abortCellPreview","hideCellPreview","cancelColumnResize","_getColumnByResizePosition","e","rtl","$headerCell","closest","previousElementSibling","previousSibling","firstCol","mouseX","pageX","originalEvent","clientX","offset","_onTouchStartColumnHeader","currentTouchId","startTouch","changedTouches","identifier","$eventTarget","currentTarget","startPos","y","pageY","currentPos","distanceTreshold","tapAndHoldTimeout","unbind","fakeEvent","Event","extendObjects","key","one","preventDefault","_event","distanceTravelled","sqrt","pow","abs","touch","_onMouseDownColumnHeader","which","selectedHeaderCell","commonAncestor","posCol","posRelative","resizerWidth","zIndex","ignored","_onMouseMoveColumnHeader","cursor","_onMouseUpColumnHeader","bounds","_onMouseLeaveColumnHeader","_onClickColumnHeader","_onStartDragColumnHeader","opacity","dragId","random","dataTransfer","setData","JSON","stringify","actualX","minX","baseX","sizeToSet","unNormalizedSizeToSet","_onDragEnterColumnHeader","dataTransferred","getData","parse","_onDragOverColumnHeader","_onDragLeaveColumnHeader","has","removeClass","_onDropColumnHeader","srcColName","destColName","srcCol","sortedColumns","arrows","arrow","scrollWidth","cellIndex","headerCells","headerCellClassName","prependTo","SCROLL","ieDragDropHandler","dragDrop","draggable","cellInside","createDummyRow","visibility","$dummyTbody","$dummyWrapper","row1","row2","row3","virtualRowHeightMin","virtualRowHeightMax","fragment","tableHeight","overflowY","overflowX","virtualVisibleRows","_renderSkeleton","force","offsetWidth","lastColIndex","lastColWidth","parentSizeMayHaveChanged","setElementWidth","elInner","scrollHeight","clientHeight","$elInner","previewCell","$previewCell","isHeaderCell","hasClass","paddingL","paddingR","paddingT","paddingB","requiredWidth","borderBox","transparentBgColor1","tempDiv","backgroundColor","transparentBgColor2","bgColor","selection","$parent","$scrollParent","parentOffset","windowWidth","right","minHorz","maxHorz","totalHeight","maxTop","previewCss","$cellPreviewCell","_el","origCell","controls","dgtable"],"mappings":"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AI,EAAE,CADC;AAEpB,cAAaE,QAAQ,EAAE,CAFH;AAGpB,cAAaD,QAAQ,EAAE,CAHH,EAAxB;;;AAMA;AACA;AACA;AACA;AACA;AACAzF,OAAO,CAAC0C,KAAR,GAAgB;AACZ,cAAaC,IAAI,EAAE,MADP;AAEZ,cAAa6C,IAAI,EAAE,MAFP;AAGZ,cAAamW,MAAM,EAAE,QAHT,EAAhB;;;AAMA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,CAAC9kB,CAAC,CAACyoB,QAAP,EAAiB;AACbzoB,EAAAA,CAAC,CAACyoB,QAAF,GAAa,EAAb;AACH;;AAEDzoB,CAAC,CAACyoB,QAAF,CAAWC,OAAX,GAAqBvf,OAArB;;"}
|