UNPKG

kero

Version:
1,660 lines (1,463 loc) 217 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else { var a = factory(); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.DataTable = exports.u = undefined; var _indexApp = __webpack_require__(1); var _indexServerEvent = __webpack_require__(23); var _indexDataTable = __webpack_require__(28); var _indexPage = __webpack_require__(54); var _indexRow = __webpack_require__(60); window.App = _indexApp.App; /** * Module : Kero webpack entry index * Author : liuyk(liuyuekai@yonyou.com) * Date : 2016-08-08 15:24:46 */ window.processXHRError = _indexApp.processXHRError; window.ServerEvent = _indexServerEvent.ServerEvent; window.DataTable = _indexDataTable.DataTable; window.Page = _indexPage.Page; window.Row = _indexRow.Row; window.u = window.u || {}; exports.u = u = window.u; u.createApp = _indexApp.createApp; u.DataTable = _indexDataTable.DataTable; u.Row = _indexRow.Row; exports.u = u; exports.DataTable = _indexDataTable.DataTable; /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.createApp = exports.processXHRError = exports.App = undefined; var _init = __webpack_require__(2); var _adjustMetaFunc = __webpack_require__(12); var _dataTable = __webpack_require__(13); var _comp = __webpack_require__(14); var _validate = __webpack_require__(15); var _cache = __webpack_require__(16); var _iwebCore = __webpack_require__(17); var _ajax = __webpack_require__(18); var _processXHRError = __webpack_require__(20); var _serverEvent = __webpack_require__(21); var _util = __webpack_require__(22); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** * Module : Kero webpack entry app index * Author : liuyk(liuyuekai@yonyou.com) * Date : 2016-08-09 15:24:46 */ //相关依赖导入 var App = function App() { _classCallCheck(this, App); // init this.init = _init.init; this.dataTables = {}; // adjustMetaFunc this.adjustMetaFunc = _adjustMetaFunc.adjustMetaFunc; // dataTable this.addDataTable = _dataTable.addDataTable; this.getDataTable = _dataTable.getDataTable; this.getDataTables = _dataTable.getDataTables; // comp this.createComp = _comp.createComp; this.getComp = _comp.getComp; this.getCompsByDataTable = _comp.getCompsByDataTable; this.getCompsByType = _comp.getCompsByType; this.getComps = _comp.getComps; this.showComp = _comp.showComp; // validate this.compsValidate = _validate.compsValidate; this.compsValidateMultiParam = _validate.compsValidateMultiParam; // cache this.setUserCache = _cache.setUserCache; this.getUserCache = _cache.getUserCache; this.removeUserCache = _cache.removeUserCache; this.setCache = _cache.setCache; this.getCache = _cache.getCache; this.removeCache = _cache.removeCache; this.setSessionCache = _cache.setSessionCache; this.getSessionCache = _cache.getSessionCache; this.removeSessionCache = _cache.removeSessionCache; // iwebCode this.getEnvironment = _iwebCore.getEnvironment; this.setClientAttribute = _iwebCore.setClientAttribute; this.getClientAttribute = _iwebCore.getClientAttribute; // ajax this.ajax = _ajax.ajax; // serverEvent this.serverEvent = _serverEvent.serverEvent; // util this.setEnable = _util.setEnable; }; var createApp = function createApp() { var app = new App(); if (arguments.length > 0) { var arg = arguments[0]; app.init(arg.model, arg.el); } return app; }; exports.App = App; exports.processXHRError = _processXHRError.processXHRError; exports.createApp = createApp; /***/ }, /* 2 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.init = undefined; var _compMgr = __webpack_require__(3); var _util = __webpack_require__(9); var _hotKeys = __webpack_require__(10); var init = function init(viewModel, element, doApplyBindings) { var self = this; element = element || document.body; if (!(0, _util.isArray)(element)) { element = [element]; } this.elements = element; (0, _util.each)(this.elements, function (i, element) { if (typeof element === 'string') { element = document.querySelector(element); } if (element) { element.querySelectorAll('[u-meta]').forEach(function (ele) { var options = JSON.parse(ele.getAttribute('u-meta')); options['type'] = options['type'] || 'string'; if (options && options['type']) { if (self.adjustFunc) self.adjustFunc.call(self, options); var comp = _compMgr.compMgr.createDataAdapter({ el: ele, options: options, model: viewModel, app: self }); ele['u-meta'] = comp; } }); } if (_hotKeys.hotkeys) _hotKeys.hotkeys.scan(element); if (typeof doApplyBindings == 'undefined' || doApplyBindings == true) ko.applyBindings(viewModel, element); _compMgr.compMgr.updateComp(element); }); _getDataTables(this, viewModel); }; /** * Module : kero app init * Author : liuyk(liuyk@yonyou.com) * Date : 2016-07-29 09:34:01 */ var _getDataTables = function _getDataTables(app, viewModel) { for (var key in viewModel) { if (viewModel[key] && viewModel[key] instanceof u.DataTable) { viewModel[key].id = key; viewModel[key].parent = viewModel; app.addDataTable(viewModel[key]); } } }; exports.init = init; /***/ }, /* 3 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.compMgr = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; /** * Module : Sparrow compMgr * Author : Kvkens(yueming@yonyou.com) * Date : 2016-07-28 18:41:06 */ var _dom = __webpack_require__(4); function _findRegisteredClass(name, optReplace) { for (var i = 0; i < CompMgr.registeredControls.length; i++) { if (CompMgr.registeredControls[i].className === name) { if (typeof optReplace !== 'undefined') { CompMgr.registeredControls[i] = optReplace; } return CompMgr.registeredControls[i]; } } return false; } function _getUpgradedListOfElement(element) { var dataUpgraded = element.getAttribute('data-upgraded'); // Use `['']` as default value to conform the `,name,name...` style. return dataUpgraded === null ? [''] : dataUpgraded.split(','); } function _isElementUpgraded(element, jsClass) { var upgradedList = _getUpgradedListOfElement(element); return upgradedList.indexOf(jsClass) != -1; } function _upgradeElement(element, optJsClass) { if (!((typeof element === 'undefined' ? 'undefined' : _typeof(element)) === 'object' && element instanceof Element)) { throw new Error('Invalid argument provided to upgrade MDL element.'); } var upgradedList = _getUpgradedListOfElement(element); var classesToUpgrade = []; if (!optJsClass) { var className = element.className; for (var i = 0; i < CompMgr.registeredControls.length; i++) { var component = CompMgr.registeredControls[i]; if (className.indexOf(component.cssClass) > -1 && classesToUpgrade.indexOf(component) === -1 && !_isElementUpgraded(element, component.className)) { classesToUpgrade.push(component); } } } else if (!_isElementUpgraded(element, optJsClass)) { classesToUpgrade.push(_findRegisteredClass(optJsClass)); } // Upgrade the element for each classes. for (var i = 0, n = classesToUpgrade.length, registeredClass; i < n; i++) { registeredClass = classesToUpgrade[i]; if (registeredClass) { if (element[registeredClass.className]) { continue; } // Mark element as upgraded. upgradedList.push(registeredClass.className); element.setAttribute('data-upgraded', upgradedList.join(',')); var instance = new registeredClass.classConstructor(element); CompMgr.createdControls.push(instance); // Call any callbacks the user has registered with this component type. for (var j = 0, m = registeredClass.callbacks.length; j < m; j++) { registeredClass.callbacks[j](element); } element[registeredClass.className] = instance; } else { throw new Error('Unable to find a registered component for the given class.'); } } } function _upgradeDomInternal(optJsClass, optCssClass, ele) { if (typeof optJsClass === 'undefined' && typeof optCssClass === 'undefined') { for (var i = 0; i < CompMgr.registeredControls.length; i++) { _upgradeDomInternal(CompMgr.registeredControls[i].className, registeredControls[i].cssClass, ele); } } else { var jsClass = optJsClass; if (!optCssClass) { var registeredClass = _findRegisteredClass(jsClass); if (registeredClass) { optCssClass = registeredClass.cssClass; } } var elements; if (ele) { elements = (0, _dom.hasClass)(ele, optCssClass) ? [ele] : ele.querySelectorAll('.' + optCssClass); } else { elements = document.querySelectorAll('.' + optCssClass); } for (var n = 0; n < elements.length; n++) { _upgradeElement(elements[n], jsClass); } } } var CompMgr = { plugs: {}, dataAdapters: {}, /** 注册的控件*/ registeredControls: [], createdControls: [], /** * * @param options {el:'#content', model:{}} */ apply: function apply(options) { if (options) { var _el = options.el || document.body; var model = options.model; } if (typeof _el == 'string') { _el = document.body.querySelector(_el); } if (_el == null || (typeof _el === 'undefined' ? 'undefined' : _typeof(_el)) != 'object') _el = document.body; var comps = _el.querySelectorAll('[u-meta]'); comps.forEach(function (element) { if (element['comp']) return; var options = JSON.parse(element.getAttribute('u-meta')); if (options && options['type']) { //var comp = CompMgr._createComp({el:element,options:options,model:model}); var comp = CompMgr.createDataAdapter({ el: element, options: options, model: model }); if (comp) { element['adpt'] = comp; element['u-meta'] = comp; } } }); }, addPlug: function addPlug(config) { var plug = config['plug'], name = config['name']; this.plugs || (this.plugs = {}); if (this.plugs[name]) { throw new Error('plug has exist:' + name); } plug.compType = name; this.plugs[name] = plug; }, addDataAdapter: function addDataAdapter(config) { var adapter = config['adapter'], name = config['name']; //dataType = config['dataType'] || '' //var key = dataType ? name + '.' + dataType : name; this.dataAdapters || (dataAdapters = {}); if (this.dataAdapters[name]) { throw new Error('dataAdapter has exist:' + name); } this.dataAdapters[name] = adapter; }, getDataAdapter: function getDataAdapter(name) { if (!name) return; this.dataAdapters || (dataAdapters = {}); //var key = dataType ? name + '.' + dataType : name; return this.dataAdapters[name]; }, createDataAdapter: function createDataAdapter(options) { var opt = options['options']; var type = opt['type'], id = opt['id']; var adpt = this.dataAdapters[type]; if (!adpt) return null; var comp = new adpt(options); comp.type = type; comp.id = id; return comp; }, _createComp: function _createComp(options) { var opt = options['options']; var type = opt['type']; var plug = this.plugs[type]; if (!plug) return null; var comp = new plug(options); comp.type = type; return comp; }, /** * 注册UI控件 */ regComp: function regComp(config) { var newConfig = { classConstructor: config.comp, className: config.compAsString || config['compAsString'], cssClass: config.css || config['css'], callbacks: [] }; config.comp.prototype.compType = config.compAsString; for (var i = 0; i < this.registeredControls.length; i++) { var item = this.registeredControls[i]; //registeredControls.forEach(function(item) { if (item.cssClass === newConfig.cssClass) { throw new Error('The provided cssClass has already been registered: ' + item.cssClass); } if (item.className === newConfig.className) { throw new Error('The provided className has already been registered'); } }; this.registeredControls.push(newConfig); }, updateComp: function updateComp(ele) { for (var n = 0; n < this.registeredControls.length; n++) { _upgradeDomInternal(this.registeredControls[n].className, null, ele); } } }; var compMgr = CompMgr; exports.compMgr = compMgr; ///** // * 加载控件 // */ // //if (document.readyState && document.readyState === 'complete'){ // compMgr.updateComp(); //}else{ // on(window, 'load', function() { // // //扫描并生成控件 // compMgr.updateComp(); // }); //} /***/ }, /* 4 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.showPanelByEle = exports.getScroll = exports.getOffset = exports.makeModal = exports.makeDOM = exports.getZIndex = exports.getStyle = exports.wrap = exports.css = exports.closest = exports.toggleClass = exports.hasClass = exports.removeClass = exports.addClass = undefined; var _event = __webpack_require__(5); /** * 元素增加指定样式 * @param value * @returns {*} */ var addClass = function addClass(element, value) { if (typeof element.classList === 'undefined') { if (u._addClass) u._addClass(element, value); } else { element.classList.add(value); } return this; }; /** * 删除元素上指定样式 * @param {Object} element * @param {Object} value */ /** * Module : Sparrow dom * Author : Kvkens(yueming@yonyou.com) * Date : 2016-08-16 13:59:17 */ var removeClass = function removeClass(element, value) { if (typeof element.classList === 'undefined') { if (u._removeClass) u._removeClass(element, value); } else { element.classList.remove(value); } return this; }; /** * 元素上是否存在该类 * @param {Object} element * @param {Object} value */ var hasClass = function hasClass(element, value) { if (!element) return false; if (element.nodeName && (element.nodeName === '#text' || element.nodeName === '#comment')) return false; if (typeof element.classList === 'undefined') { if (u._hasClass) return u._hasClass(element, value); return false; } else { return element.classList.contains(value); } }; /** * 选择元素类切换 * @param {Object} element * @param {Object} value */ var toggleClass = function toggleClass(element, value) { if (typeof element.classList === 'undefined') { return u._toggleClass(element, value); } else { return element.classList.toggle(value); } }; /** * 向上查找指定类元素 * @param {Object} element * @param {Object} selector */ var closest = function closest(element, selector) { var tmp = element; while (tmp != null && !hasClass(tmp, selector) && tmp != document.body) { tmp = tmp.parentNode; } if (tmp == document.body) return null; return tmp; }; /** * 元素CSS操作 * @param {Object} element * @param {Object} csstext * @param {Object} val */ var css = function css(element, csstext, val) { //TO DO : 实现u.相关方法 if (csstext instanceof Object) { for (var k in csstext) { var tmpcss = csstext[k]; if (["width", "height", "top", "bottom", "left", "right"].indexOf(k) > -1 && isNumber(tmpcss)) { tmpcss = tmpcss + "px"; } element.style[k] = tmpcss; } } else { if (arguments.length > 2) { element.style[csstext] = val; } else { return getStyle(element, csstext); } } }; var wrap = function wrap(element, parent) { var p = makeDOM(parent); element.parentNode.insertBefore(p, element); p.appendChild(element); }; var getStyle = function getStyle(element, key) { //不要在循环里用 var allCSS; if (window.getComputedStyle) { allCSS = window.getComputedStyle(element); } else { allCSS = element.currentStyle; } if (allCSS[key] !== undefined) { return allCSS[key]; } else { return ""; } }; var globalZIndex; /** * 统一zindex值, 不同控件每次显示时都取最大的zindex,防止显示错乱 */ var getZIndex = function getZIndex() { if (!globalZIndex) { globalZIndex = 2000; } return globalZIndex++; }; var makeDOM = function makeDOM(htmlString) { var tempDiv = document.createElement("div"); tempDiv.innerHTML = htmlString; var _dom = tempDiv.children[0]; return _dom; }; /** * element */ var makeModal = function makeModal(element, parEle) { var overlayDiv = document.createElement('div'); addClass(overlayDiv, 'u-overlay'); overlayDiv.style.zIndex = getZIndex(); // 如果有父元素则插入到父元素上,没有则添加到body上 if (parEle && parEle != document.body) { addClass(overlayDiv, 'hasPar'); parEle.appendChild(overlayDiv); } else { document.body.appendChild(overlayDiv); } element.style.zIndex = getZIndex(); (0, _event.on)(overlayDiv, 'click', function (e) { (0, _event.stopEvent)(e); }); return overlayDiv; }; var getOffset = function getOffset(Node, offset) { if (!offset) { offset = {}; offset.top = 0; offset.left = 0; } if (Node == document.body) { return offset; } offset.top += Node.offsetTop; offset.left += Node.offsetLeft; if (Node.offsetParent) return getOffset(Node.offsetParent, offset);else return offset; }; var getScroll = function getScroll(Node, offset) { if (!offset) { offset = {}; offset.top = 0; offset.left = 0; } if (Node == document.body) { offset.top += Node.scrollTop || document.documentElement.scrollTop; offset.left += Node.scrollLeft || document.documentElement.scrollLeft; return offset; } offset.top += Node.scrollTop; offset.left += Node.scrollLeft; if (Node.parentNode) return getScroll(Node.parentNode, offset);else return offset; }; var showPanelByEle = function showPanelByEle(obj) { var ele = obj.ele, panel = obj.panel, position = obj.position, // off = u.getOffset(ele),scroll = u.getScroll(ele), // offLeft = off.left,offTop = off.top, // scrollLeft = scroll.left,scrollTop = scroll.top, // eleWidth = ele.offsetWidth,eleHeight = ele.offsetHeight, // panelWidth = panel.offsetWidth,panelHeight = panel.offsetHeight, bodyWidth = document.body.clientWidth, bodyHeight = document.body.clientHeight, position = position || 'top', // left = offLeft - scrollLeft,top = offTop - scrollTop, eleRect = obj.ele.getBoundingClientRect(), panelRect = obj.panel.getBoundingClientRect(), eleWidth = eleRect.width, eleHeight = eleRect.height, left = eleRect.left, top = eleRect.top, panelWidth = panelRect.width, panelHeight = panelRect.height, docWidth = document.documentElement.clientWidth, docHeight = document.documentElement.clientHeight; // 基准点为Ele的左上角 // 后续根据需要完善 if (position == 'left') { left = left - panelWidth; top = top + (eleHeight - panelHeight) / 2; } else if (position == 'right') { left = left + eleWidth; top = top + (eleHeight - panelHeight) / 2; } else if (position == 'top' || position == 'topCenter') { left = left + (eleWidth - panelWidth) / 2; top = top - panelHeight; } else if (position == 'bottom' || position == 'bottomCenter') { left = left + (eleWidth - panelWidth) / 2; top = top + eleHeight; } else if (position == 'bottomLeft') { left = left; top = top + eleHeight; } if (left + panelWidth > docWidth) left = docWidth - panelWidth - 10; if (left < 0) left = 0; if (top + panelHeight > docHeight) { top = docHeight - panelHeight - 10; } if (top < 0) top = 0; panel.style.left = left + 'px'; panel.style.top = top + 'px'; }; exports.addClass = addClass; exports.removeClass = removeClass; exports.hasClass = hasClass; exports.toggleClass = toggleClass; exports.closest = closest; exports.css = css; exports.wrap = wrap; exports.getStyle = getStyle; exports.getZIndex = getZIndex; exports.makeDOM = makeDOM; exports.makeModal = makeModal; exports.getOffset = getOffset; exports.getScroll = getScroll; exports.showPanelByEle = showPanelByEle; /***/ }, /* 5 */ /***/ function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.event = exports.stopEvent = exports.trigger = exports.off = exports.on = undefined; var _env = __webpack_require__(6); var u = {}; /** * Module : Sparrow touch event * Author : Kvkens(yueming@yonyou.com) * Date : 2016-07-28 14:41:17 */ u.event = {}; var touchStartEvent = _env.env.hasTouch ? "touchstart" : "mousedown", touchStopEvent = _env.env.hasTouch ? "touchend" : "mouseup", touchMoveEvent = _env.env.hasTouch ? "touchmove" : "mousemove"; // tap和taphold u.event.tap = { tapholdThreshold: 750, emitTapOnTaphold: true, touchstartFun: function touchstartFun() { trigger(this, 'vmousedown'); }, touchendFun: function touchendFun() { trigger(this, 'vmouseup'); trigger(this, 'vclick'); }, setup: function setup() { var thisObject = this, isTaphold = false; on(thisObject, "vmousedown", function (event) { isTaphold = false; if (event.which && event.which !== 1) { return false; } var origTarget = event.target, timer; function clearTapTimer() { clearTimeout(timer); } function clearTapHandlers() { clearTapTimer(); off(thisObject, 'vclick'); off(thisObject, 'vmouseup'); off(document, 'vmousecancel'); } function clickHandler(event) { clearTapHandlers(); // ONLY trigger a 'tap' event if the start target is // the same as the stop target. if (!isTaphold && origTarget === event.target) { trigger(thisObject, 'tap'); } else if (isTaphold) { event.preventDefault(); } } on(thisObject, 'vmouseup', clearTapTimer); on(thisObject, 'vclick', clickHandler); on(document, 'vmousecancel', clearTapHandlers); timer = setTimeout(function () { if (!u.event.tap.emitTapOnTaphold) { isTaphold = true; } trigger(thisObject, "taphold"); clearTapHandlers(); }, u.event.tap.tapholdThreshold); }); on(thisObject, 'touchstart', u.event.tap.touchstartFun); on(thisObject, 'touchend', u.event.tap.touchendFun); }, teardown: function teardown() { off(thisObject, 'vmousedown'); off(thisObject, 'vclick'); off(thisObject, 'vmouseup'); off(document, 'vmousecancel'); } }; u.event.taphold = u.event.tap; u.event.swipe = { // More than this horizontal displacement, and we will suppress scrolling. scrollSupressionThreshold: 30, // More time than this, and it isn't a swipe. durationThreshold: 1000, // Swipe horizontal displacement must be more than this. horizontalDistanceThreshold: 30, // Swipe vertical displacement must be less than this. verticalDistanceThreshold: 30, getLocation: function getLocation(event) { var winPageX = window.pageXOffset, winPageY = window.pageYOffset, x = event.clientX, y = event.clientY; if (event.pageY === 0 && Math.floor(y) > Math.floor(event.pageY) || event.pageX === 0 && Math.floor(x) > Math.floor(event.pageX)) { // iOS4 clientX/clientY have the value that should have been // in pageX/pageY. While pageX/page/ have the value 0 x = x - winPageX; y = y - winPageY; } else if (y < event.pageY - winPageY || x < event.pageX - winPageX) { // Some Android browsers have totally bogus values for clientX/Y // when scrolling/zooming a page. Detectable since clientX/clientY // should never be smaller than pageX/pageY minus page scroll x = event.pageX - winPageX; y = event.pageY - winPageY; } return { x: x, y: y }; }, start: function start(event) { var data = event.touches ? event.touches[0] : event, location = u.event.swipe.getLocation(data); return { time: new Date().getTime(), coords: [location.x, location.y], origin: event.target }; }, stop: function stop(event) { var data = event.touches ? event.touches[0] : event, location = u.event.swipe.getLocation(data); return { time: new Date().getTime(), coords: [location.x, location.y] }; }, handleSwipe: function handleSwipe(start, stop, thisObject, origTarget) { if (stop.time - start.time < u.event.swipe.durationThreshold && Math.abs(start.coords[0] - stop.coords[0]) > u.event.swipe.horizontalDistanceThreshold && Math.abs(start.coords[1] - stop.coords[1]) < u.event.swipe.verticalDistanceThreshold) { var direction = start.coords[0] > stop.coords[0] ? "swipeleft" : "swiperight"; trigger(thisObject, "swipe"); trigger(thisObject, direction); return true; } return false; }, // This serves as a flag to ensure that at most one swipe event event is // in work at any given time eventInProgress: false, setup: function setup() { var events, thisObject = this, context = {}; // Retrieve the events data for this element and add the swipe context events = thisObject["mobile-events"]; if (!events) { events = { length: 0 }; thisObject["mobile-events"] = events; } events.length++; events.swipe = context; context.start = function (event) { // Bail if we're already working on a swipe event if (u.event.swipe.eventInProgress) { return; } u.event.swipe.eventInProgress = true; var stop, start = u.event.swipe.start(event), origTarget = event.target, emitted = false; context.move = function (event) { // if ( !start || event.isDefaultPrevented() ) { if (!start) { return; } stop = u.event.swipe.stop(event); if (!emitted) { emitted = u.event.swipe.handleSwipe(start, stop, thisObject, origTarget); if (emitted) { // Reset the context to make way for the next swipe event u.event.swipe.eventInProgress = false; } } // prevent scrolling if (Math.abs(start.coords[0] - stop.coords[0]) > u.event.swipe.scrollSupressionThreshold) { event.preventDefault(); } }; context.stop = function () { emitted = true; // Reset the context to make way for the next swipe event u.event.swipe.eventInProgress = false; off(document, touchMoveEvent, context.move); context.move = null; }; on(document, touchMoveEvent, context.move); on(document, touchStopEvent, context.stop); }; on(thisObject, touchStartEvent, context.start); }, teardown: function teardown() { var events, context; events = thisObject["mobile-events"]; if (events) { context = events.swipe; delete events.swipe; events.length--; if (events.length === 0) { thisObject["mobile-events"] = null; } } if (context) { if (context.start) { off(thisObject, touchStartEvent, context.start); } if (context.move) { off(document, touchMoveEvent, context.move); } if (context.stop) { off(document, touchStopEvent, context.stop); } } } }; u.event.swipeleft = u.event.swipe; u.event.swiperight = u.event.swipe; var event = u.event; var on = function on(element, eventName, child, listener) { if (!element) return; if (arguments.length < 4) { listener = child; child = undefined; } else { var childlistener = function childlistener(e) { if (!e) { return; } var tmpchildren = element.querySelectorAll(child); tmpchildren.forEach(function (node) { if (node == e.target) { listener.call(e.target, e); } }); }; } //capture = capture || false; if (!element["uEvent"]) { //在dom上添加记录区 element["uEvent"] = {}; } //判断是否元素上是否用通过on方法填加进去的事件 if (!element["uEvent"][eventName]) { element["uEvent"][eventName] = [child ? childlistener : listener]; if (u.event && u.event[eventName] && u.event[eventName].setup) { u.event[eventName].setup.call(element); } element["uEvent"][eventName + 'fn'] = function (e) { //火狐下有问题修改判断 if (!e) e = typeof event != 'undefined' && event ? event : window.event; element["uEvent"][eventName].forEach(function (fn) { try { e.target = e.target || e.srcElement; //兼容IE8 } catch (e) {} if (fn) fn.call(element, e); }); }; if (element.addEventListener) { // 用于支持DOM的浏览器 element.addEventListener(eventName, element["uEvent"][eventName + 'fn']); } else if (element.attachEvent) { // 用于IE浏览器 element.attachEvent("on" + eventName, element["uEvent"][eventName + 'fn']); } else { // 用于其它浏览器 element["on" + eventName] = element["uEvent"][eventName + 'fn']; } } else { //如果有就直接往元素的记录区添加事件 var lis = child ? childlistener : listener; var hasLis = false; element["uEvent"][eventName].forEach(function (fn) { if (fn == lis) { hasLis = true; } }); if (!hasLis) { element["uEvent"][eventName].push(child ? childlistener : listener); } } }; var off = function off(element, eventName, listener) { //删除事件数组 if (listener) { if (element && element["uEvent"] && element["uEvent"][eventName]) { element["uEvent"][eventName].forEach(function (fn, i) { if (fn == listener) { element["uEvent"][eventName].splice(i, 1); } }); } return; } var eventfn = element["uEvent"][eventName + 'fn']; if (element.removeEventListener) { // 用于支持DOM的浏览器 element.removeEventListener(eventName, eventfn); } else if (element.removeEvent) { // 用于IE浏览器 element.removeEvent("on" + eventName, eventfn); } else { // 用于其它浏览器 delete element["on" + eventName]; } if (u.event && u.event[eventName] && u.event[eventName].teardown) { u.event[eventName].teardown.call(element); } element["uEvent"][eventName] = undefined; element["uEvent"][eventName + 'fn'] = undefined; }; var trigger = function trigger(element, eventName) { if (element["uEvent"] && element["uEvent"][eventName]) { element["uEvent"][eventName + 'fn'](); } }; /** * 阻止冒泡 */ var stopEvent = function stopEvent(e) { if (typeof e != "undefined") { if (e.stopPropagation) e.stopPropagation();else { e.cancelBubble = true; } //阻止默认浏览器动作(W3C) if (e && e.preventDefault) e.preventDefault(); //IE中阻止函数器默认动作的方式 else window.event.returnValue = false; } }; exports.on = on; exports.off = off; exports.trigger = trigger; exports.stopEvent = stopEvent; exports.event = event; /***/ }, /* 6 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.env = undefined; var _extend = __webpack_require__(7); var u = {}; /** * Module : Sparrow browser environment * Author : Kvkens(yueming@yonyou.com) * Date : 2016-07-27 21:46:50 */ (0, _extend.extend)(u, { isIE: false, isFF: false, isOpera: false, isChrome: false, isSafari: false, isWebkit: false, isIE8_BEFORE: false, isIE8: false, isIE8_CORE: false, isIE9: false, isIE9_CORE: false, isIE10: false, isIE10_ABOVE: false, isIE11: false, isIOS: false, isIphone: false, isIPAD: false, isStandard: false, version: 0, isWin: false, isUnix: false, isLinux: false, isAndroid: false, isMac: false, hasTouch: false, isMobile: false }); (function () { var userAgent = navigator.userAgent, rMsie = /(msie\s|trident.*rv:)([\w.]+)/, rFirefox = /(firefox)\/([\w.]+)/, rOpera = /(opera).+version\/([\w.]+)/, rChrome = /(chrome)\/([\w.]+)/, rSafari = /version\/([\w.]+).*(safari)/, version, ua = userAgent.toLowerCase(), s, browserMatch = { browser: "", version: '' }, match = rMsie.exec(ua); if (match != null) { browserMatch = { browser: "IE", version: match[2] || "0" }; } match = rFirefox.exec(ua); if (match != null) { browserMatch = { browser: match[1] || "", version: match[2] || "0" }; } match = rOpera.exec(ua); if (match != null) { browserMatch = { browser: match[1] || "", version: match[2] || "0" }; } match = rChrome.exec(ua); if (match != null) { browserMatch = { browser: match[1] || "", version: match[2] || "0" }; } match = rSafari.exec(ua); if (match != null) { browserMatch = { browser: match[2] || "", version: match[1] || "0" }; } if (match != null) { browserMatch = { browser: "", version: "0" }; } if (s = ua.match(/opera.([\d.]+)/)) { u.isOpera = true; } else if (browserMatch.browser == "IE" && browserMatch.version == 11) { u.isIE11 = true; u.isIE = true; } else if (s = ua.match(/chrome\/([\d.]+)/)) { u.isChrome = true; u.isStandard = true; } else if (s = ua.match(/version\/([\d.]+).*safari/)) { u.isSafari = true; u.isStandard = true; } else if (s = ua.match(/gecko/)) { //add by licza : support XULRunner u.isFF = true; u.isStandard = true; } else if (s = ua.match(/msie ([\d.]+)/)) { u.isIE = true; } else if (s = ua.match(/firefox\/([\d.]+)/)) { u.isFF = true; u.isStandard = true; } if (ua.match(/webkit\/([\d.]+)/)) { u.isWebkit = true; } if (ua.match(/ipad/i)) { u.isIOS = true; u.isIPAD = true; u.isStandard = true; } if (ua.match(/iphone/i)) { u.isIOS = true; u.isIphone = true; } if (navigator.platform == "Mac68K" || navigator.platform == "MacPPC" || navigator.platform == "Macintosh" || navigator.platform == "MacIntel") { //u.isIOS = true; u.isMac = true; } if (navigator.platform == "Win32" || navigator.platform == "Windows" || navigator.platform == "Win64") { u.isWin = true; } if (navigator.platform == "X11" && !u.isWin && !u.isMac) { u.isUnix = true; } if (String(navigator.platform).indexOf("Linux") > -1) { u.isLinux = true; } if (ua.indexOf('Android') > -1 || ua.indexOf('android') > -1 || ua.indexOf('Adr') > -1 || ua.indexOf('adr') > -1) { u.isAndroid = true; } u.version = version ? browserMatch.version ? browserMatch.version : 0 : 0; if (u.isIE) { var intVersion = parseInt(u.version); var mode = document.documentMode; if (mode == null) { if (intVersion == 6 || intVersion == 7) { u.isIE8_BEFORE = true; } } else { if (mode == 7) { u.isIE8_BEFORE = true; } else if (mode == 8) { u.isIE8 = true; } else if (mode == 9) { u.isIE9 = true; u.isSTANDARD = true; } else if (mode == 10) { u.isIE10 = true; u.isSTANDARD = true; u.isIE10_ABOVE = true; } else { u.isSTANDARD = true; } if (intVersion == 8) { u.isIE8_CORE = true; } else if (intVersion == 9) { u.isIE9_CORE = true; } else if (browserMatch.version == 11) { u.isIE11 = true; } else {} } } if ("ontouchend" in document) { u.hasTouch = true; } if (u.isIOS || u.isAndroid) u.isMobile = true; })(); var env = u; exports.env = env; /***/ }, /* 7 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.extend = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; /** * Module : Sparrow extend * Author : Kvkens(yueming@yonyou.com) * Date : 2016-07-27 21:46:50 */ var _enumerables = __webpack_require__(8); /** * 复制对象属性 * * @param {Object} 目标对象 * @param {config} 源对象 */ var extend = function extend(object, config) { var args = arguments, options; if (args.length > 1) { for (var len = 1; len < args.length; len++) { options = args[len]; if (object && options && (typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') { var i, j, k; for (i in options) { object[i] = options[i]; } if (_enumerables.enumerables) { for (j = _enumerables.enumerables.length; j--;) { k = _enumerables.enumerables[j]; if (options.hasOwnProperty && options.hasOwnProperty(k)) { object[k] = options[k]; } } } } } } return object; }; exports.extend = extend; /***/ }, /* 8 */ /***/ function(module, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * Module : Sparrow extend enum * Author : Kvkens(yueming@yonyou.com) * Date : 2016-07-27 21:46:50 */ var U_LANGUAGES = "i_languages"; var U_THEME = "u_theme"; var U_LOCALE = "u_locale"; var U_USERCODE = "usercode"; var enumerables = true, enumerablesTest = { toString: 1 }, toString = Object.prototype.toString; for (var i in enumerablesTest) { exports.enumerables = enumerables = null; } if (enumerables) { exports.enumerables = enumerables = ['hasOwnProperty', 'valueOf', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'constructor']; } exports.enumerables = enumerables; exports.U_LANGUAGES = U_LANGUAGES; exports.U_THEME = U_THEME; exports.U_LOCALE = U_LOCALE; exports.U_USERCODE = U_USERCODE; /***/ }, /* 9 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; /** * Module : Sparrow util tools * Author : Kvkens(yueming@yonyou.com) * Date : 2016-07-27 21:46:50 */ /** * 创建一个带壳的对象,防止外部修改 * @param {Object} proto */ var createShellObject = function createShellObject(proto) { var exf = function exf() {}; exf.prototype = proto; return new exf(); }; var execIgnoreError = function execIgnoreError(a, b, c) { try { a.call(b, c); } catch (e) {} }; var getFunction = function getFunction(target, val) { if (!val || typeof val == 'function') return val; if (typeof target[val] == 'function') return target[val];else if (typeof window[val] == 'function') return window[val];else if (val.indexOf('.') != -1) { var func = getJSObject(target, val); if (typeof func == 'function') return func; func = getJSObject(window, val); if (typeof func == 'function') return func; } return val; }; var getJSObject = function getJSObject(target, names) { if (!names) { return; } if ((typeof names === 'undefined' ? 'undefined' : _typeof(names)) == 'object') return names; var nameArr = names.split('.'); var obj = target; for (var i = 0; i < nameArr.length; i++) { obj = obj[nameArr[i]]; if (!obj) return null; } return obj; }; var isDate = function isDate(input) { return Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date; }; var isNumber = function isNumber(obj) { //return obj === +obj return obj - parseFloat(obj) + 1 >= 0; }; var isArray = Array.isArray || function (val) { return Object.prototype.toString.call(val) === '[object Array]'; }; var isEmptyObject = function isEmptyObject(obj) { var name; for (name in obj) { return false; } return true; }; var inArray = function inArray(node, arr) { if (!arr instanceof Array) { throw "arguments is not Array"; } for (var i = 0, k = arr.length; i < k; i++) { if (node == arr[i]) { return true; } } return false; }; var isDomElement = function isDomElement(obj) { if (window['HTMLElement']) { return obj instanceof HTMLElement; } else { return obj && obj.tagName && obj.nodeType === 1; } }; var each = function each(obj, callback) { if (obj.forEach) { obj.forEach(function (v, k) { callback(k, v); }); } else if (obj instanceof Object) { for (var k in obj) { callback(k, obj[k]); } } else { return; } }; NodeList.prototype.forEach = Array.prototype.forEach; /** * 获得字符串的字节长度 */ String.prototype.lengthb = function () { // var str = this.replace(/[^\x800-\x10000]/g, "***"); var str = this.replace(/[^\x00-\xff]/g, "**"); return str.length; }; /** * 将AFindText全部替换为ARepText */ String.prototype.replaceAll = function (AFindText, ARepText) { //自定义String对象的方法 var raRegExp = new RegExp(AFindText, "g"); return this.replace(raRegExp, ARepText); }; exports.createShellObject = createShellObject; exports.execIgnoreError = execIgnoreError; exports.getFunction = getFunction; exports.getJSObject = getJSObject; exports.isDate = isDate; exports.isNumber = isNumber; exports.isArray = isArray; exports.isEmptyObject = isEmptyObject; exports.inArray = inArray; exports.isDomElement = isDomElement; exports.each = each; /***/ }, /* 10 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.hotkeys = undefined; var _class = __webpack_require__(11); var _extend = __webpack_require__(7); var _util = __webpack_require__(9); var hotkeys = {}; /** * Module : Sparrow hotKeys * Author : Kvkens(yueming@yonyou.com) * Date : 2016-07-28 20:25:39 */ hotkeys.special_keys = { 27: 'esc', 9: 'tab', 32: 'space', 13: 'enter', 8: 'backspace', 145: 'scroll', 20: 'capslock', 144: 'numlock', 19: 'pause', 45: 'insert', 36: 'home', 46: 'del', 35: 'end', 33: 'pageup', 34: 'pagedown', 37: 'left', 38: 'up', 39: 'right', 40: 'down', 112: 'f1', 113: 'f2', 114: 'f3', 115: 'f4', 116: 'f5', 117: 'f6', 118: 'f7', 119: 'f8', 120: 'f9', 121: 'f10', 122: 'f11', 123: 'f12' }; hotkeys.shift_nums = { "`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&", "8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ":", "'": "\"", ",": "<", ".": ">", "/": "?", "\\": "|" }; hotkeys.add = function (combi, options, callback) { if ((0, _class.isFunction)(options)) { callback = options; options = {}; } var opt = {}, defaults = { type: 'keydown', propagate: false, disableInInput: false, target: document.body, checkParent: true }, that = this; opt = (0, _extend.extend)(opt, defaults, options || {}); combi = combi.toLowerCase(); // inspect if keystroke matches var inspector = function inspector(event) { //event = $.event.fix(event); // jQuery event normalization. var element = this; //event.target; // @ TextNode -> nodeType == 3 element = element.nodeType == 3 ? element.parentNode : element; if (opt['disableInInput']) { // Disable shortcut keys in Input, Textarea fields var target = element; //$(element); if (target.tagName == "INPUT" || target.tagName == "TEXTAREA") { return; } } var code = event.which, type = event.type, character = String.fromCharCode(code).toLowerCase(), special = that.special_keys[code], shift = event.shiftKey, ctrl = event.ctrlKey, alt = event.altKey, propagate = true, // default behaivour mapPoint = null; // in opera + safari, the event.target is unpredictable. // for example: 'keydown' might be associated with HtmlBodyElement // or the element where you last clicked with your mouse. if (op