jquery.dgtable 0.5.49 → 0.5.50
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 +206 -127
- 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 +206 -127
- 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 +1252 -996
- 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 +9 -9
- package/src/index.js +23 -4
|
@@ -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/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/array-slice.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 callBind = bind && bind.bind(call);\n\nmodule.exports = bind ? function (fn) {\n return fn && callBind(call, 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.19.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 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 -- requied 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 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 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\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $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) {\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)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\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","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var arraySlice = require('../internals/array-slice');\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|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 if (this.onComparatorRequired) {\r\n comparator = this.onComparatorRequired(this.sortColumn[i].column, this.sortColumn[i].descending);\r\n }\r\n if (!comparator) {\r\n comparator = getDefaultComparator(this.sortColumn[i], this.sortColumn[i].descending);\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;","'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\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(String,Boolean)Function(a,b)Boolean} 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 = function(column, descending){\r\n if (o.onComparatorRequired) {\r\n return o.onComparatorRequired(column, descending);\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 /**\r\n * @private\r\n * @field {Function} cellFormatter */\r\n this.o.cellFormatter = 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 * 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(string,boolean):{function(a:*,b:*):boolean}}} 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 let content = this.o.cellFormatter(colValue, column.name, rowData);\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","anObject","definePropertyModule","createNonEnumerableProperty","inspectSource","WeakMap","sharedKey","hiddenKeys","require$$8","redefineModule","floor","toIntegerOrInfinity","min","toAbsoluteIndex","toLength","lengthOfArrayLike","indexOf","push","enumBugKeys","ownKeys","copyConstructorProperties","isForced","TO_STRING_TAG","test","arraySlice","arrayMethodIsStrict","$","require$$9","require$$10","require$$11","require$$12","Array","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","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","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","max","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","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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EAAuH4B,QAAvH;;AAEAA,IAAAA,QAAQ,CAAC,eAAD,CAAR,GAA4B,IAA5B;AACA5B,IAAAA,WAAW,CAAC,QAAD,CAAX,GAAwB,IAAxB;;AAEA/c,IAAAA,CAAC,CAACye,gBAAF,GAAqB,IAArB;AACAze,IAAAA,CAAC,CAACuV,gBAAF,GAAqB,KAArB;AACH,GAzBD,MAyBO;AACHvV,IAAAA,CAAC,CAACuV,gBAAF,GAAqB,IAArB;AACH;;AAED,SAAO,IAAP;AACH,CAjCD;;AAmCA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAMtQ,eAAe,GAAG;AACpB,cAAaC,IAAI,EAAE,CADC;AAEpB,cAAaE,QAAQ,EAAE,CAFH;AAGpB,cAAaD,QAAQ,EAAE,CAHH,EAAxB;;;AAMA;AACA;AACA;AACA;AACA;AACA1F,OAAO,CAAC2C,KAAR,GAAgB;AACZ,cAAaC,IAAI,EAAE,MADP;AAEZ,cAAa6C,IAAI,EAAE,MAFP;AAGZ,cAAa+V,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,CAAC1kB,CAAC,CAACqoB,QAAP,EAAiB;AACbroB,EAAAA,CAAC,CAACqoB,QAAF,GAAa,EAAb;AACH;;AAEDroB,CAAC,CAACqoB,QAAF,CAAWC,OAAX,GAAqBpf,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|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 if (this.onComparatorRequired) {\r\n comparator = this.onComparatorRequired(this.sortColumn[i].column, this.sortColumn[i].descending);\r\n }\r\n if (!comparator) {\r\n comparator = getDefaultComparator(this.sortColumn[i], this.sortColumn[i].descending);\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;","'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(String,Boolean)Function(a,b)Boolean} 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 = function(column, descending){\r\n if (o.onComparatorRequired) {\r\n return o.onComparatorRequired(column, descending);\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(string,boolean):{function(a:*,b:*):boolean}}} 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","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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"}
|