UNPKG

zoomla

Version:

16年专业研发|中文alexa排名第一的CMS品牌-基于dotNET core、功能强大,集成站群、微信开发、小程序与ERP及OA办公系统,支持国际语言和多民族语言,世界五百强与大型门户专用高端网站内核CMS系统

1,519 lines (1,491 loc) 905 kB
/*! * Handsontable 0.15.0-beta3 * Handsontable is a JavaScript library for editable tables with basic copy-paste compatibility with Excel and Google Docs * * Copyright (c) 2012-2014 Marcin Warpechowski * Copyright 2015 Handsoncode sp. z o.o. <hello@handsontable.com> * Licensed under the MIT license. * http://handsontable.com/ * * Date: Thu May 21 2015 12:12:59 GMT+0200 (CEST) */ /*jslint white: true, browser: true, plusplus: true, indent: 4, maxerr: 50 */ window.Handsontable = { version: '0.15.0-beta3' }; require=(function outer (modules, cache, entry) { // Save the require from previous bundle to this closure if any var previousRequire = typeof require == "function" && require; var globalNS = JSON.parse('{"zeroclipboard":"ZeroClipboard","moment":"moment","numeral":"numeral","pikaday":"Pikaday"}') || {}; function newRequire(name, jumped){ if(!cache[name]) { if(!modules[name]) { // if we cannot find the the module within our internal map or // cache jump to the current global require ie. the last bundle // that was added to the page. var currentRequire = typeof require == "function" && require; if (!jumped && currentRequire) return currentRequire(name, true); // If there are other bundles on this page the require from the // previous one is saved to 'previousRequire'. Repeat this as // many times as there are bundles until the module is found or // we exhaust the require chain. if (previousRequire) return previousRequire(name, true); // Try find module from global scope if (globalNS[name] && typeof window[globalNS[name]] !== 'undefined') { return window[globalNS[name]]; } var err = new Error('Cannot find module \'' + name + '\''); err.code = 'MODULE_NOT_FOUND'; throw err; } var m = cache[name] = {exports:{}}; modules[name][0].call(m.exports, function(x){ var id = modules[name][1][x]; return newRequire(id ? id : x); },m,m.exports,outer,modules,cache,entry); } return cache[name].exports; } for(var i=0;i<entry.length;i++) newRequire(entry[i]); // Override the current require with this new one return newRequire; }) ({1:[function(require,module,exports){ "use strict"; if (window.jQuery) { (function(window, $, Handsontable) { $.fn.handsontable = function(action) { var i, ilen, args, output, userSettings, $this = this.first(), instance = $this.data('handsontable'); if (typeof action !== 'string') { userSettings = action || {}; if (instance) { instance.updateSettings(userSettings); } else { instance = new Handsontable.Core($this[0], userSettings); $this.data('handsontable', instance); instance.init(); } return $this; } else { args = []; if (arguments.length > 1) { for (i = 1, ilen = arguments.length; i < ilen; i++) { args.push(arguments[i]); } } if (instance) { if (typeof instance[action] !== 'undefined') { output = instance[action].apply(instance, args); if (action === 'destroy') { $this.removeData(); } } else { throw new Error('Handsontable do not provide action: ' + action); } } return output; } }; })(window, jQuery, Handsontable); } //# },{}],2:[function(require,module,exports){ "use strict"; Object.defineProperties(exports, { autoResize: {get: function() { return autoResize; }}, __esModule: {value: true} }); ; function autoResize() { var defaults = { minHeight: 200, maxHeight: 300, minWidth: 100, maxWidth: 300 }, el, body = document.body, text = document.createTextNode(''), span = document.createElement('SPAN'), observe = function(element, event, handler) { if (window.attachEvent) { element.attachEvent('on' + event, handler); } else { element.addEventListener(event, handler, false); } }, unObserve = function(element, event, handler) { if (window.removeEventListener) { element.removeEventListener(event, handler, false); } else { element.detachEvent('on' + event, handler); } }, resize = function(newChar) { var width, scrollHeight; if (!newChar) { newChar = ""; } else if (!/^[a-zA-Z \.,\\\/\|0-9]$/.test(newChar)) { newChar = "."; } if (text.textContent !== void 0) { text.textContent = el.value + newChar; } else { text.data = el.value + newChar; } span.style.fontSize = Handsontable.Dom.getComputedStyle(el).fontSize; span.style.fontFamily = Handsontable.Dom.getComputedStyle(el).fontFamily; span.style.whiteSpace = "pre"; body.appendChild(span); width = span.clientWidth + 2; body.removeChild(span); el.style.height = defaults.minHeight + 'px'; if (defaults.minWidth > width) { el.style.width = defaults.minWidth + 'px'; } else if (width > defaults.maxWidth) { el.style.width = defaults.maxWidth + 'px'; } else { el.style.width = width + 'px'; } scrollHeight = el.scrollHeight ? el.scrollHeight - 1 : 0; if (defaults.minHeight > scrollHeight) { el.style.height = defaults.minHeight + 'px'; } else if (defaults.maxHeight < scrollHeight) { el.style.height = defaults.maxHeight + 'px'; el.style.overflowY = 'visible'; } else { el.style.height = scrollHeight + 'px'; } }, delayedResize = function() { window.setTimeout(resize, 0); }, extendDefaults = function(config) { if (config && config.minHeight) { if (config.minHeight == 'inherit') { defaults.minHeight = el.clientHeight; } else { var minHeight = parseInt(config.minHeight); if (!isNaN(minHeight)) { defaults.minHeight = minHeight; } } } if (config && config.maxHeight) { if (config.maxHeight == 'inherit') { defaults.maxHeight = el.clientHeight; } else { var maxHeight = parseInt(config.maxHeight); if (!isNaN(maxHeight)) { defaults.maxHeight = maxHeight; } } } if (config && config.minWidth) { if (config.minWidth == 'inherit') { defaults.minWidth = el.clientWidth; } else { var minWidth = parseInt(config.minWidth); if (!isNaN(minWidth)) { defaults.minWidth = minWidth; } } } if (config && config.maxWidth) { if (config.maxWidth == 'inherit') { defaults.maxWidth = el.clientWidth; } else { var maxWidth = parseInt(config.maxWidth); if (!isNaN(maxWidth)) { defaults.maxWidth = maxWidth; } } } if (!span.firstChild) { span.className = "autoResize"; span.style.display = 'inline-block'; span.appendChild(text); } }, init = function(el_, config, doObserve) { el = el_; extendDefaults(config); if (el.nodeName == 'TEXTAREA') { el.style.resize = 'none'; el.style.overflowY = ''; el.style.height = defaults.minHeight + 'px'; el.style.minWidth = defaults.minWidth + 'px'; el.style.maxWidth = defaults.maxWidth + 'px'; el.style.overflowY = 'hidden'; } if (doObserve) { observe(el, 'change', resize); observe(el, 'cut', delayedResize); observe(el, 'paste', delayedResize); observe(el, 'drop', delayedResize); observe(el, 'keydown', delayedResize); } resize(); }; return { init: function(el_, config, doObserve) { init(el_, config, doObserve); }, unObserve: function() { unObserve(el, 'change', resize); unObserve(el, 'cut', delayedResize); unObserve(el, 'paste', delayedResize); unObserve(el, 'drop', delayedResize); unObserve(el, 'keydown', delayedResize); }, resize: resize }; } //# },{}],3:[function(require,module,exports){ "use strict"; Object.defineProperties(exports, { copyPasteManager: {get: function() { return copyPasteManager; }}, __esModule: {value: true} }); var $___46__46__47_helpers_46_js__, $___46__46__47_eventManager_46_js__; var helper = ($___46__46__47_helpers_46_js__ = require("./../helpers.js"), $___46__46__47_helpers_46_js__ && $___46__46__47_helpers_46_js__.__esModule && $___46__46__47_helpers_46_js__ || {default: $___46__46__47_helpers_46_js__}); var eventManagerObject = ($___46__46__47_eventManager_46_js__ = require("./../eventManager.js"), $___46__46__47_eventManager_46_js__ && $___46__46__47_eventManager_46_js__.__esModule && $___46__46__47_eventManager_46_js__ || {default: $___46__46__47_eventManager_46_js__}).eventManager; ; var instance; function copyPasteManager() { if (!instance) { instance = new CopyPasteClass(); } else if (instance.hasBeenDestroyed()) { instance.init(); } instance.refCounter++; return instance; } function CopyPasteClass() { this.refCounter = 0; this.init(); } CopyPasteClass.prototype.init = function() { var style, parent; this.copyCallbacks = []; this.cutCallbacks = []; this.pasteCallbacks = []; this._eventManager = eventManagerObject(this); parent = document.body; if (document.getElementById('CopyPasteDiv')) { this.elDiv = document.getElementById('CopyPasteDiv'); this.elTextarea = this.elDiv.firstChild; } else { this.elDiv = document.createElement('div'); this.elDiv.id = 'CopyPasteDiv'; style = this.elDiv.style; style.position = 'fixed'; style.top = '-10000px'; style.left = '-10000px'; parent.appendChild(this.elDiv); this.elTextarea = document.createElement('textarea'); this.elTextarea.className = 'copyPaste'; this.elTextarea.onpaste = function(event) { if ('WebkitAppearance' in document.documentElement.style) { this.value = event.clipboardData.getData("Text"); return false; } }; style = this.elTextarea.style; style.width = '10000px'; style.height = '10000px'; style.overflow = 'hidden'; this.elDiv.appendChild(this.elTextarea); if (typeof style.opacity !== 'undefined') { style.opacity = 0; } } this.keyDownRemoveEvent = this._eventManager.addEventListener(document.documentElement, 'keydown', this.onKeyDown.bind(this), false); }; CopyPasteClass.prototype.onKeyDown = function(event) { var _this = this, isCtrlDown = false; function isActiveElementEditable() { var element = document.activeElement; if (element.shadowRoot && element.shadowRoot.activeElement) { element = element.shadowRoot.activeElement; } return ['INPUT', 'SELECT', 'TEXTAREA'].indexOf(element.nodeName) > -1 || element.contentEditable === 'true'; } if (event.metaKey) { isCtrlDown = true; } else if (event.ctrlKey && navigator.userAgent.indexOf('Mac') === -1) { isCtrlDown = true; } if (isCtrlDown) { if (document.activeElement !== this.elTextarea && (this.getSelectionText() !== '' || isActiveElementEditable())) { } this.selectNodeText(this.elTextarea); setTimeout(function() { _this.selectNodeText(_this.elTextarea); }, 0); } if (isCtrlDown && (event.keyCode === helper.keyCode.C || event.keyCode === helper.keyCode.V || event.keyCode === helper.keyCode.X)) { if (event.keyCode === 88) { setTimeout(function() { _this.triggerCut(event); }, 0); } else if (event.keyCode === 86) { setTimeout(function() { _this.triggerPaste(event); }, 0); } } }; CopyPasteClass.prototype.selectNodeText = function(element) { if (element) { element.select(); } }; CopyPasteClass.prototype.getSelectionText = function() { var text = ''; if (window.getSelection) { text = window.getSelection().toString(); } else if (document.selection && document.selection.type !== 'Control') { text = document.selection.createRange().text; } return text; }; CopyPasteClass.prototype.copyable = function(string) { if (typeof string !== 'string' && string.toString === void 0) { throw new Error('copyable requires string parameter'); } this.elTextarea.value = string; }; CopyPasteClass.prototype.onCut = function(callback) { this.cutCallbacks.push(callback); }; CopyPasteClass.prototype.onPaste = function(callback) { this.pasteCallbacks.push(callback); }; CopyPasteClass.prototype.removeCallback = function(callback) { var i, len; for (i = 0, len = this.copyCallbacks.length; i < len; i++) { if (this.copyCallbacks[i] === callback) { this.copyCallbacks.splice(i, 1); return true; } } for (i = 0, len = this.cutCallbacks.length; i < len; i++) { if (this.cutCallbacks[i] === callback) { this.cutCallbacks.splice(i, 1); return true; } } for (i = 0, len = this.pasteCallbacks.length; i < len; i++) { if (this.pasteCallbacks[i] === callback) { this.pasteCallbacks.splice(i, 1); return true; } } return false; }; CopyPasteClass.prototype.triggerCut = function(event) { var _this = this; if (_this.cutCallbacks) { setTimeout(function() { for (var i = 0, len = _this.cutCallbacks.length; i < len; i++) { _this.cutCallbacks[i](event); } }, 50); } }; CopyPasteClass.prototype.triggerPaste = function(event, string) { var _this = this; if (_this.pasteCallbacks) { setTimeout(function() { var val = string || _this.elTextarea.value; for (var i = 0, len = _this.pasteCallbacks.length; i < len; i++) { _this.pasteCallbacks[i](val, event); } }, 50); } }; CopyPasteClass.prototype.destroy = function() { if (!this.hasBeenDestroyed() && --this.refCounter === 0) { if (this.elDiv && this.elDiv.parentNode) { this.elDiv.parentNode.removeChild(this.elDiv); this.elDiv = null; this.elTextarea = null; } this.keyDownRemoveEvent(); } }; CopyPasteClass.prototype.hasBeenDestroyed = function() { return !this.refCounter; }; //# },{"./../eventManager.js":45,"./../helpers.js":46}],4:[function(require,module,exports){ "use strict"; var jsonpatch; (function(jsonpatch) { var objOps = { add: function(obj, key) { obj[key] = this.value; return true; }, remove: function(obj, key) { delete obj[key]; return true; }, replace: function(obj, key) { obj[key] = this.value; return true; }, move: function(obj, key, tree) { var temp = { op: "_get", path: this.from }; apply(tree, [temp]); apply(tree, [{ op: "remove", path: this.from }]); apply(tree, [{ op: "add", path: this.path, value: temp.value }]); return true; }, copy: function(obj, key, tree) { var temp = { op: "_get", path: this.from }; apply(tree, [temp]); apply(tree, [{ op: "add", path: this.path, value: temp.value }]); return true; }, test: function(obj, key) { return (JSON.stringify(obj[key]) === JSON.stringify(this.value)); }, _get: function(obj, key) { this.value = obj[key]; } }; var arrOps = { add: function(arr, i) { arr.splice(i, 0, this.value); return true; }, remove: function(arr, i) { arr.splice(i, 1); return true; }, replace: function(arr, i) { arr[i] = this.value; return true; }, move: objOps.move, copy: objOps.copy, test: objOps.test, _get: objOps._get }; var observeOps = { add: function(patches, path) { var patch = { op: "add", path: path + escapePathComponent(this.name), value: this.object[this.name] }; patches.push(patch); }, 'delete': function(patches, path) { var patch = { op: "remove", path: path + escapePathComponent(this.name) }; patches.push(patch); }, update: function(patches, path) { var patch = { op: "replace", path: path + escapePathComponent(this.name), value: this.object[this.name] }; patches.push(patch); } }; function escapePathComponent(str) { if (str.indexOf('/') === -1 && str.indexOf('~') === -1) { return str; } return str.replace(/~/g, '~0').replace(/\//g, '~1'); } function _getPathRecursive(root, obj) { var found; for (var key in root) { if (root.hasOwnProperty(key)) { if (root[key] === obj) { return escapePathComponent(key) + '/'; } else if (typeof root[key] === 'object') { found = _getPathRecursive(root[key], obj); if (found != '') { return escapePathComponent(key) + '/' + found; } } } } return ''; } function getPath(root, obj) { if (root === obj) { return '/'; } var path = _getPathRecursive(root, obj); if (path === '') { throw new Error("Object not found in root"); } return '/' + path; } var beforeDict = []; jsonpatch.intervals; var Mirror = (function() { function Mirror(obj) { this.observers = []; this.obj = obj; } return Mirror; })(); var ObserverInfo = (function() { function ObserverInfo(callback, observer) { this.callback = callback; this.observer = observer; } return ObserverInfo; })(); function getMirror(obj) { for (var i = 0, ilen = beforeDict.length; i < ilen; i++) { if (beforeDict[i].obj === obj) { return beforeDict[i]; } } } function getObserverFromMirror(mirror, callback) { for (var j = 0, jlen = mirror.observers.length; j < jlen; j++) { if (mirror.observers[j].callback === callback) { return mirror.observers[j].observer; } } } function removeObserverFromMirror(mirror, observer) { for (var j = 0, jlen = mirror.observers.length; j < jlen; j++) { if (mirror.observers[j].observer === observer) { mirror.observers.splice(j, 1); } } } function unobserve(root, observer) { generate(observer); if (Object.observe) { _unobserve(observer, root); } else { clearTimeout(observer.next); } var mirror = getMirror(root); removeObserverFromMirror(mirror, observer); } jsonpatch.unobserve = unobserve; function observe(obj, callback) { var patches = []; var root = obj; var observer; var mirror = getMirror(obj); if (!mirror) { mirror = new Mirror(obj); beforeDict.push(mirror); } else { observer = getObserverFromMirror(mirror, callback); } if (observer) { return observer; } if (Object.observe) { observer = function(arr) { _unobserve(observer, obj); _observe(observer, obj); var a = 0, alen = arr.length; while (a < alen) { if (!(arr[a].name === 'length' && _isArray(arr[a].object)) && !(arr[a].name === '__Jasmine_been_here_before__')) { var type = arr[a].type; switch (type) { case 'new': type = 'add'; break; case 'deleted': type = 'delete'; break; case 'updated': type = 'update'; break; } observeOps[type].call(arr[a], patches, getPath(root, arr[a].object)); } a++; } if (patches) { if (callback) { callback(patches); } } observer.patches = patches; patches = []; }; } else { observer = {}; mirror.value = JSON.parse(JSON.stringify(obj)); if (callback) { observer.callback = callback; observer.next = null; var intervals = this.intervals || [100, 1000, 10000, 60000]; var currentInterval = 0; var dirtyCheck = function() { generate(observer); }; var fastCheck = function() { clearTimeout(observer.next); observer.next = setTimeout(function() { dirtyCheck(); currentInterval = 0; observer.next = setTimeout(slowCheck, intervals[currentInterval++]); }, 0); }; var slowCheck = function() { dirtyCheck(); if (currentInterval == intervals.length) { currentInterval = intervals.length - 1; } observer.next = setTimeout(slowCheck, intervals[currentInterval++]); }; if (typeof window !== 'undefined') { if (window.addEventListener) { window.addEventListener('mousedown', fastCheck); window.addEventListener('mouseup', fastCheck); window.addEventListener('keydown', fastCheck); } else { window.attachEvent('onmousedown', fastCheck); window.attachEvent('onmouseup', fastCheck); window.attachEvent('onkeydown', fastCheck); } } observer.next = setTimeout(slowCheck, intervals[currentInterval++]); } } observer.patches = patches; observer.object = obj; mirror.observers.push(new ObserverInfo(callback, observer)); return _observe(observer, obj); } jsonpatch.observe = observe; function _observe(observer, obj) { if (Object.observe) { Object.observe(obj, observer); for (var key in obj) { if (obj.hasOwnProperty(key)) { var v = obj[key]; if (v && typeof(v) === "object") { _observe(observer, v); } } } } return observer; } function _unobserve(observer, obj) { if (Object.observe) { Object.unobserve(obj, observer); for (var key in obj) { if (obj.hasOwnProperty(key)) { var v = obj[key]; if (v && typeof(v) === "object") { _unobserve(observer, v); } } } } return observer; } function generate(observer) { if (Object.observe) { Object.deliverChangeRecords(observer); } else { var mirror; for (var i = 0, ilen = beforeDict.length; i < ilen; i++) { if (beforeDict[i].obj === observer.object) { mirror = beforeDict[i]; break; } } _generate(mirror.value, observer.object, observer.patches, ""); } var temp = observer.patches; if (temp.length > 0) { observer.patches = []; if (observer.callback) { observer.callback(temp); } } return temp; } jsonpatch.generate = generate; var _objectKeys; if (Object.keys) { _objectKeys = Object.keys; } else { _objectKeys = function(obj) { var keys = []; for (var o in obj) { if (obj.hasOwnProperty(o)) { keys.push(o); } } return keys; }; } function _generate(mirror, obj, patches, path) { var newKeys = _objectKeys(obj); var oldKeys = _objectKeys(mirror); var changed = false; var deleted = false; for (var t = oldKeys.length - 1; t >= 0; t--) { var key = oldKeys[t]; var oldVal = mirror[key]; if (obj.hasOwnProperty(key)) { var newVal = obj[key]; if (oldVal instanceof Object) { _generate(oldVal, newVal, patches, path + "/" + escapePathComponent(key)); } else { if (oldVal != newVal) { changed = true; patches.push({ op: "replace", path: path + "/" + escapePathComponent(key), value: newVal }); mirror[key] = newVal; } } } else { patches.push({ op: "remove", path: path + "/" + escapePathComponent(key) }); delete mirror[key]; deleted = true; } } if (!deleted && newKeys.length == oldKeys.length) { } for (var t = 0; t < newKeys.length; t++) { var key = newKeys[t]; if (!mirror.hasOwnProperty(key)) { patches.push({ op: "add", path: path + "/" + escapePathComponent(key), value: obj[key] }); mirror[key] = JSON.parse(JSON.stringify(obj[key])); } } } var _isArray; if (Array.isArray) { _isArray = Array.isArray; } else { _isArray = function(obj) { return obj.push && typeof obj.length === 'number'; }; } function apply(tree, patches) { var result = false, p = 0, plen = patches.length, patch; while (p < plen) { patch = patches[p]; var keys = patch.path.split('/'); var obj = tree; var t = 1; var len = keys.length; while (true) { if (_isArray(obj)) { var index = parseInt(keys[t], 10); t++; if (t >= len) { result = arrOps[patch.op].call(patch, obj, index, tree); break; } obj = obj[index]; } else { var key = keys[t]; if (key.indexOf('~') != -1) { key = key.replace(/~1/g, '/').replace(/~0/g, '~'); } t++; if (t >= len) { result = objOps[patch.op].call(patch, obj, key, tree); break; } obj = obj[key]; } } p++; } return result; } jsonpatch.apply = apply; })(jsonpatch || (jsonpatch = {})); if (typeof exports !== "undefined") { exports.apply = jsonpatch.apply; exports.observe = jsonpatch.observe; exports.unobserve = jsonpatch.unobserve; exports.generate = jsonpatch.generate; } //# },{}],5:[function(require,module,exports){ "use strict"; (function(global) { "use strict"; function countQuotes(str) { return str.split('"').length - 1; } var SheetClip = { parse: function(str) { var r, rLen, rows, arr = [], a = 0, c, cLen, multiline, last; rows = str.split('\n'); if (rows.length > 1 && rows[rows.length - 1] === '') { rows.pop(); } for (r = 0, rLen = rows.length; r < rLen; r += 1) { rows[r] = rows[r].split('\t'); for (c = 0, cLen = rows[r].length; c < cLen; c += 1) { if (!arr[a]) { arr[a] = []; } if (multiline && c === 0) { last = arr[a].length - 1; arr[a][last] = arr[a][last] + '\n' + rows[r][0]; if (multiline && (countQuotes(rows[r][0]) & 1)) { multiline = false; arr[a][last] = arr[a][last].substring(0, arr[a][last].length - 1).replace(/""/g, '"'); } } else { if (c === cLen - 1 && rows[r][c].indexOf('"') === 0 && (countQuotes(rows[r][c]) & 1)) { arr[a].push(rows[r][c].substring(1).replace(/""/g, '"')); multiline = true; } else { arr[a].push(rows[r][c].replace(/""/g, '"')); multiline = false; } } } if (!multiline) { a += 1; } } return arr; }, stringify: function(arr) { var r, rLen, c, cLen, str = '', val; for (r = 0, rLen = arr.length; r < rLen; r += 1) { cLen = arr[r].length; for (c = 0; c < cLen; c += 1) { if (c > 0) { str += '\t'; } val = arr[r][c]; if (typeof val === 'string') { if (val.indexOf('\n') > -1) { str += '"' + val.replace(/"/g, '""') + '"'; } else { str += val; } } else if (val === null || val === void 0) { str += ''; } else { str += val; } } str += '\n'; } return str; } }; if (typeof exports !== 'undefined') { exports.parse = SheetClip.parse; exports.stringify = SheetClip.stringify; } else { global.SheetClip = SheetClip; } }(window)); //# },{}],6:[function(require,module,exports){ "use strict"; Object.defineProperties(exports, { WalkontableBorder: {get: function() { return WalkontableBorder; }}, __esModule: {value: true} }); var $___46__46__47__46__46__47__46__46__47_dom_46_js__, $___46__46__47__46__46__47__46__46__47_eventManager_46_js__, $__cell_47_coords_46_js__; var dom = ($___46__46__47__46__46__47__46__46__47_dom_46_js__ = require("./../../../dom.js"), $___46__46__47__46__46__47__46__46__47_dom_46_js__ && $___46__46__47__46__46__47__46__46__47_dom_46_js__.__esModule && $___46__46__47__46__46__47__46__46__47_dom_46_js__ || {default: $___46__46__47__46__46__47__46__46__47_dom_46_js__}); var eventManagerObject = ($___46__46__47__46__46__47__46__46__47_eventManager_46_js__ = require("./../../../eventManager.js"), $___46__46__47__46__46__47__46__46__47_eventManager_46_js__ && $___46__46__47__46__46__47__46__46__47_eventManager_46_js__.__esModule && $___46__46__47__46__46__47__46__46__47_eventManager_46_js__ || {default: $___46__46__47__46__46__47__46__46__47_eventManager_46_js__}).eventManager; var WalkontableCellCoords = ($__cell_47_coords_46_js__ = require("./cell/coords.js"), $__cell_47_coords_46_js__ && $__cell_47_coords_46_js__.__esModule && $__cell_47_coords_46_js__ || {default: $__cell_47_coords_46_js__}).WalkontableCellCoords; function WalkontableBorder(instance, settings) { var style; var createMultipleSelectorHandles = function() { this.selectionHandles = { topLeft: document.createElement('DIV'), topLeftHitArea: document.createElement('DIV'), bottomRight: document.createElement('DIV'), bottomRightHitArea: document.createElement('DIV') }; var width = 10, hitAreaWidth = 40; this.selectionHandles.topLeft.className = 'topLeftSelectionHandle'; this.selectionHandles.topLeftHitArea.className = 'topLeftSelectionHandle-HitArea'; this.selectionHandles.bottomRight.className = 'bottomRightSelectionHandle'; this.selectionHandles.bottomRightHitArea.className = 'bottomRightSelectionHandle-HitArea'; this.selectionHandles.styles = { topLeft: this.selectionHandles.topLeft.style, topLeftHitArea: this.selectionHandles.topLeftHitArea.style, bottomRight: this.selectionHandles.bottomRight.style, bottomRightHitArea: this.selectionHandles.bottomRightHitArea.style }; var hitAreaStyle = { 'position': 'absolute', 'height': hitAreaWidth + 'px', 'width': hitAreaWidth + 'px', 'border-radius': parseInt(hitAreaWidth / 1.5, 10) + 'px' }; for (var prop in hitAreaStyle) { if (hitAreaStyle.hasOwnProperty(prop)) { this.selectionHandles.styles.bottomRightHitArea[prop] = hitAreaStyle[prop]; this.selectionHandles.styles.topLeftHitArea[prop] = hitAreaStyle[prop]; } } var handleStyle = { 'position': 'absolute', 'height': width + 'px', 'width': width + 'px', 'border-radius': parseInt(width / 1.5, 10) + 'px', 'background': '#F5F5FF', 'border': '1px solid #4285c8' }; for (var prop in handleStyle) { if (handleStyle.hasOwnProperty(prop)) { this.selectionHandles.styles.bottomRight[prop] = handleStyle[prop]; this.selectionHandles.styles.topLeft[prop] = handleStyle[prop]; } } this.main.appendChild(this.selectionHandles.topLeft); this.main.appendChild(this.selectionHandles.bottomRight); this.main.appendChild(this.selectionHandles.topLeftHitArea); this.main.appendChild(this.selectionHandles.bottomRightHitArea); }; if (!settings) { } var eventManager = eventManagerObject(instance); this.instance = instance; this.settings = settings; this.main = document.createElement("div"); style = this.main.style; style.position = 'absolute'; style.top = 0; style.left = 0; var borderDivs = ['top', 'left', 'bottom', 'right', 'corner']; for (var i = 0; i < 5; i++) { var position = borderDivs[i]; var DIV = document.createElement('DIV'); DIV.className = 'wtBorder ' + (this.settings.className || ''); if (this.settings[position] && this.settings[position].hide) { DIV.className += " hidden"; } style = DIV.style; style.backgroundColor = (this.settings[position] && this.settings[position].color) ? this.settings[position].color : settings.border.color; style.height = (this.settings[position] && this.settings[position].width) ? this.settings[position].width + 'px' : settings.border.width + 'px'; style.width = (this.settings[position] && this.settings[position].width) ? this.settings[position].width + 'px' : settings.border.width + 'px'; this.main.appendChild(DIV); } this.top = this.main.childNodes[0]; this.left = this.main.childNodes[1]; this.bottom = this.main.childNodes[2]; this.right = this.main.childNodes[3]; this.topStyle = this.top.style; this.leftStyle = this.left.style; this.bottomStyle = this.bottom.style; this.rightStyle = this.right.style; this.cornerDefaultStyle = { width: '5px', height: '5px', borderWidth: '2px', borderStyle: 'solid', borderColor: '#FFF' }; this.corner = this.main.childNodes[4]; this.corner.className += ' corner'; this.cornerStyle = this.corner.style; this.cornerStyle.width = this.cornerDefaultStyle.width; this.cornerStyle.height = this.cornerDefaultStyle.height; this.cornerStyle.border = [this.cornerDefaultStyle.borderWidth, this.cornerDefaultStyle.borderStyle, this.cornerDefaultStyle.borderColor].join(' '); if (Handsontable.mobileBrowser) { createMultipleSelectorHandles.call(this); } this.disappear(); if (!instance.wtTable.bordersHolder) { instance.wtTable.bordersHolder = document.createElement('div'); instance.wtTable.bordersHolder.className = 'htBorders'; instance.wtTable.spreader.appendChild(instance.wtTable.bordersHolder); } instance.wtTable.bordersHolder.insertBefore(this.main, instance.wtTable.bordersHolder.firstChild); var down = false; eventManager.addEventListener(document.body, 'mousedown', function() { down = true; }); eventManager.addEventListener(document.body, 'mouseup', function() { down = false; }); for (var c = 0, len = this.main.childNodes.length; c < len; c++) { eventManager.addEventListener(this.main.childNodes[c], 'mouseenter', function(event) { if (!down || !instance.getSetting('hideBorderOnMouseDownOver')) { } event.preventDefault(); event.stopImmediatePropagation(); var bounds = this.getBoundingClientRect(); this.style.display = 'none'; var isOutside = function(event) { if (event.clientY < Math.floor(bounds.top)) { return true; } if (event.clientY > Math.ceil(bounds.top + bounds.height)) { return true; } if (event.clientX < Math.floor(bounds.left)) { return true; } if (event.clientX > Math.ceil(bounds.left + bounds.width)) { return true; } }; var handler = function(event) { if (isOutside(event)) { eventManager.removeEventListener(document.body, 'mousemove', handler); this.style.display = 'block'; } }; eventManager.addEventListener(document.body, 'mousemove', handler); }); } } WalkontableBorder.prototype.appear = function(corners) { if (this.disabled) { } var instance = this.instance; var isMultiple, fromTD, toTD, fromOffset, toOffset, containerOffset, top, minTop, left, minLeft, height, width, fromRow, fromColumn, toRow, toColumn, i, ilen, s; var isPartRange = function() { if (this.instance.selections.area.cellRange) { if (toRow != this.instance.selections.area.cellRange.to.row || toColumn != this.instance.selections.area.cellRange.to.col) { return true; } } return false; }; var updateMultipleSelectionHandlesPosition = function(top, left, width, height) { var handleWidth = parseInt(this.selectionHandles.styles.topLeft.width, 10), hitAreaWidth = parseInt(this.selectionHandles.styles.topLeftHitArea.width, 10); this.selectionHandles.styles.topLeft.top = parseInt(top - handleWidth, 10) + "px"; this.selectionHandles.styles.topLeft.left = parseInt(left - handleWidth, 10) + "px"; this.selectionHandles.styles.topLeftHitArea.top = parseInt(top - (hitAreaWidth / 4) * 3, 10) + "px"; this.selectionHandles.styles.topLeftHitArea.left = parseInt(left - (hitAreaWidth / 4) * 3, 10) + "px"; this.selectionHandles.styles.bottomRight.top = parseInt(top + height, 10) + "px"; this.selectionHandles.styles.bottomRight.left = parseInt(left + width, 10) + "px"; this.selectionHandles.styles.bottomRightHitArea.top = parseInt(top + height - hitAreaWidth / 4, 10) + "px"; this.selectionHandles.styles.bottomRightHitArea.left = parseInt(left + width - hitAreaWidth / 4, 10) + "px"; if (this.settings.border.multipleSelectionHandlesVisible && this.settings.border.multipleSelectionHandlesVisible()) { this.selectionHandles.styles.topLeft.display = "block"; this.selectionHandles.styles.topLeftHitArea.display = "block"; if (!isPartRange.call(this)) { this.selectionHandles.styles.bottomRight.display = "block"; this.selectionHandles.styles.bottomRightHitArea.display = "block"; } else { this.selectionHandles.styles.bottomRight.display = "none"; this.selectionHandles.styles.bottomRightHitArea.display = "none"; } } else { this.selectionHandles.styles.topLeft.display = "none"; this.selectionHandles.styles.bottomRight.display = "none"; this.selectionHandles.styles.topLeftHitArea.display = "none"; this.selectionHandles.styles.bottomRightHitArea.display = "none"; } if (fromRow == this.instance.wtSettings.getSetting('fixedRowsTop') || fromColumn == this.instance.wtSettings.getSetting('fixedColumnsLeft')) { this.selectionHandles.styles.topLeft.zIndex = "9999"; this.selectionHandles.styles.topLeftHitArea.zIndex = "9999"; } else { this.selectionHandles.styles.topLeft.zIndex = ""; this.selectionHandles.styles.topLeftHitArea.zIndex = ""; } }; if (instance.cloneOverlay instanceof WalkontableTopOverlay || instance.cloneOverlay instanceof WalkontableCornerOverlay) { ilen = instance.getSetting('fixedRowsTop'); } else { ilen = instance.wtTable.getRenderedRowsCount(); } for (i = 0; i < ilen; i++) { s = instance.wtTable.rowFilter.renderedToSource(i); if (s >= corners[0] && s <= corners[2]) { fromRow = s; break; } } for (i = ilen - 1; i >= 0; i--) { s = instance.wtTable.rowFilter.renderedToSource(i); if (s >= corners[0] && s <= corners[2]) { toRow = s; break; } } ilen = instance.wtTable.getRenderedColumnsCount(); for (i = 0; i < ilen; i++) { s = instance.wtTable.columnFilter.renderedToSource(i); if (s >= corners[1] && s <= corners[3]) { fromColumn = s; break; } } for (i = ilen - 1; i >= 0; i--) { s = instance.wtTable.columnFilter.renderedToSource(i); if (s >= corners[1] && s <= corners[3]) { toColumn = s; break; } } if (fromRow !== void 0 && fromColumn !== void 0) { isMultiple = (fromRow !== toRow || fromColumn !== toColumn); fromTD = instance.wtTable.getCell(new WalkontableCellCoords(fromRow, fromColumn)); toTD = isMultiple ? instance.wtTable.getCell(new WalkontableCellCoords(toRow, toColumn)) : fromTD; fromOffset = dom.offset(fromTD); toOffset = isMultiple ? dom.offset(toTD) : fromOffset; containerOffset = dom.offset(instance.wtTable.TABLE); minTop = fromOffset.top; height = toOffset.top + dom.outerHeight(toTD) - minTop; minLeft = fromOffset.left; width = toOffset.left + dom.outerWidth(toTD) - minLeft; top = minTop - containerOffset.top - 1; left = minLeft - containerOffset.left - 1; var style = dom.getComputedStyle(fromTD); if (parseInt(style['borderTopWidth'], 10) > 0) { top += 1; height = height > 0 ? height - 1 : 0; } if (parseInt(style['borderLeftWidth'], 10) > 0) { left += 1; width = width > 0 ? width - 1 : 0; } } else { this.disappear(); } this.topStyle.top = top + 'px'; this.topStyle.left = left + 'px'; this.topStyle.width = width + 'px'; this.topStyle.display = 'block'; this.leftStyle.top = top + 'px'; this.leftStyle.left = left + 'px'; this.leftStyle.height = height + 'px'; this.leftStyle.display = 'block'; var delta = Math.floor(this.settings.border.width / 2); this.bottomStyle.top = top + height - delta + 'px'; this.bottomStyle.left = left + 'px'; this.bottomStyle.width = width + 'px'; this.bottomStyle.display = 'block'; this.rightStyle.top = top + 'px'; this.rightStyle.left = left + width - delta + 'px'; this.rightStyle.height = height + 1 + 'px'; this.rightStyle.display = 'block'; if (Handsontable.mobileBrowser || (!this.hasSetting(this.settings.border.cornerVisible) || isPartRange.call(this))) { this.cornerStyle.display = 'none'; } else { this.cornerStyle.top = top + height - 4 + 'px'; this.cornerStyle.left = left + width - 4 + 'px'; this.cornerStyle.borderRightWidth = this.cornerDefaultStyle.borderWidth; this.cornerStyle.width = this.cornerDefaultStyle.width; this.cornerStyle.display = 'block'; if (toColumn === this.instance.getSetting('totalColumns') - 1) { var trimmingContainer = dom.getTrimmingContainer(instance.wtTable.TABLE), cornerOverlappingContainer = toTD.offsetLeft + dom.outerWidth(toTD) >= dom.innerWidth(trimmingContainer); if (cornerOverlappingContainer) { this.cornerStyle.left = Math.floor(left + width - 3 - parseInt(this.cornerDefaultStyle.width) / 2) + "px"; this.cornerStyle.borderRightWidth = 0; } } } if (Handsontable.mobileBrowser) { updateMultipleSelectionHandlesPosition.call(this, top, left, width, height); } }; WalkontableBorder.prototype.disappear = function() { this.topStyle.display = 'none'; this.leftStyle.display = 'none'; this.bottomStyle.display = 'none'; this.rightStyle.display = 'none'; this.cornerStyle.display = 'none'; if (Handsontable.mobileBrowser) { this.selectionHandles.styles.topLeft.display = 'none'; this.selectionHandles.styles.bottomRight.display = 'none'; } }; WalkontableBorder.prototype.hasSetting = function(setting) { if (typeof setting === 'function') { return setting(); } return !!setting; }; ; window.WalkontableBorder = WalkontableBorder; //# },{"./../../../dom.js":31,"./../../../eventManager.js":45,"./cell/coords.js":9}],7:[function(require,module,exports){ "use strict"; Object.defineProperties(exports, { WalkontableViewportColumnsCalculator: {get: function() { return WalkontableViewportColumnsCalculator; }}, __esModule: {value: true} }); var privatePool = new WeakMap(); var WalkontableViewportColumnsCalculator = function WalkontableViewportColumnsCalculator(viewportWidth, scrollOffset, totalColumns, columnWidthFn, overrideFn, onlyFullyVisible, stretchH) { privatePool.set(this, { viewportWidth: viewportWidth, scrollOffset: scrollOffset, totalColumns: totalColumns, columnWidthFn: columnWidthFn, overrideFn: overrideFn, onlyFullyVisible: onlyFullyVisible }); this.count = 0; this.startColumn = null; this.endColumn = null; this.startPosition = null; this.stretchAllRatio = 0; this.stretchLastWidth = 0; this.stretch = stretchH; this.totalTargetWidth = 0; this.needVerifyLastColumnWidth = true; this.stretchAllColumnsWidth = []; this.calculate(); }; var $WalkontableViewportColumnsCalculator = WalkontableViewportColumnsCalculator; ($traceurRuntime.createClass)(WalkontableViewportColumnsCalculator, { calculate: function() { var sum = 0; var needReverse = true; var startPositions = []; var columnWidth; var priv = privatePool.get(this); var onlyFullyVisible = priv.onlyFullyVisible; var overrideFn = priv.overrideFn; var scrollOffset = priv.scrollOffset; var totalColumns = priv.totalColumns; var viewportWidth = priv.viewportWidth; for (var i = 0; i < totalColumns; i++) { columnWidth = this._getColumnWidth(i); if (sum <= scrollOffset && !onlyFullyVisible) { this.startColumn = i; } if (sum >= scrollOffset && sum + columnWidth <= scrollOffset + viewportWidth) { if (this.startColumn == null) { this.startColumn = i; } this.endColumn = i; } startPositions.push(sum); sum += columnWidth; if (!onlyFullyVisible) { this.endColumn = i; } if (sum >= scrollOffset + viewportWidth) { needReverse = false; break; } } if (this.endColumn === totalColumns - 1 && needReverse) { this.startColumn = this.endColumn; while (this.startColumn > 0) { var viewportSum = startPositions[this.endColumn] + columnWidth - startPositions[this.startColumn - 1]; if (viewportSum <= viewportWidth || !onlyFullyVisible) { this.startColumn--; } if (viewportSum > viewportWidth) { break; } } } if (this.startColumn !== null && overrideFn) { overrideFn(this); } this.startPosition = startPositions[this.startColumn]; if (this.startPosition == void 0) { this.startPosition = null; } if (this.startColumn !== null) { this.count = this.endColumn - this.startColumn + 1; } }, refreshStretching: function(totalWidth) { var sumAll = 0; var columnWidth; var remainingSize; var priv = privatePool.get(this); var totalColumns = priv.totalColumns; for (var i = 0; i < totalColumns; i++) { columnWidth = this._getColumnWidth(i); sumAll += columnWidth; } this.totalTargetWidth = totalWidth; remainingSize = sumAll - totalWidth; if (this.stretch === 'all' && remainingSize < 0) { this.stretchAllRatio = totalWidth / sumAll; this.stretchAllColumnsWidth = []; this.needVerifyLastColumnWidth = true; } else if (this.stretch === 'last' && totalWidth !== Infinity) { this.stretchLastWidth = -remainingSize + this._getColumnWidth(totalColumns - 1); } }, getStretchedColumnWidth: function(column, baseWidth) { var result = null; if (this.stretch === 'all' && this.stretchAllRatio !== 0) { result = this._getStretchedAllColumnWidth(column, baseWidth); } else if (this.stretch === 'last' && this.stretchLastWidth !== 0) { result = this._getStretchedLastColumnWidth(column); } return result; }, _getStretchedAllColumnWidth: function(column, baseWidth) { var sumRatioWidth = 0; var priv = privatePool.get(this); var totalColumns = priv.totalColumns; if (!this.stretchAllColumnsWidth[column]) { this.stretchAllColumnsWidth[column] = Math.round(baseWidth * this.stretchAllRatio); } if (this.stretchAllColumnsWidth.length === totalColumns && this.needVerifyLastColumnWidth) { this.needVerifyLastColumnWidth = false; for (var i = 0; i < this.stretchAllColumnsWidth.length; i++) { sumRatioWidth += this.stretchAllColumnsWidth[i]; } if (sumRatioWidth !== this.totalTargetWidth) { this.stretchAllColumnsWidth[this.stretchAllColumnsWidth.length - 1] += this.totalTargetWidth - sumRatioWidth; } } return this.stretchAllColumnsWidth[column]; }, _getStretchedLastColumnWidth: function(column) { var priv = privatePool.get(this); var totalColumns = priv.totalColumns; if (column === totalColumns - 1) { return this.stretchLastWidth; } return null; }, _getColumnWidth: function(column) { var width = privatePool.get(this).columnWidthFn(column); if (width === undefined) { width = $WalkontableViewportColumnsCalculator.DEFAULT_WIDTH; } return width; } }, {get DEFAULT_WIDTH() { return 50; }}); ; window.WalkontableViewportColumnsCalculator = WalkontableViewportColumnsCalculator; //# },{}],8:[function(require,module,exports){ "use strict"; Object.defineProperties(exports, { WalkontableViewportRowsCalculator: {get: function() { return WalkontableViewportRowsCalculator; }}, __esModule: {value: true} }); var privatePool = new WeakMap(); var WalkontableViewportRowsCalculator = function WalkontableViewportRowsCalculator(viewportHeight, scrollOffset, totalRows, rowHeightFn, overrideFn, onlyFullyVisible) { privatePool.set(this, { viewportHeight: viewportHeight, scrollOffset: scrollOffset, totalRows: totalRows, rowHeightFn: rowHeightFn, overrideFn: overrideFn, onlyFullyVisible: onlyFullyVisible }); this.count = 0; this.startRow = null; this.endRow = null; this.startPosition = null; this.calculate(); }; var $WalkontableViewpo