draw:function(){ var r = this.get('r') , paper = this.get('paper') , pathcfg = this.get('pathcfg') , framedata = this.get('framedata') , sectorcfg = (framedata && framedata.sectorcfg) || {} , $path = paper.path(); pathcfg = Util.merge({ stroke:"#fff" },pathcfg) if(sectorcfg){ pathcfg = Util.merge(pathcfg,{ stroke:sectorcfg.stroke, "stroke-width":sectorcfg.strokeWidth }) } $path.attr(pathcfg); this.set('$path',$path) if(Util.isArray(r) && r.length == 2){ this._drawDonut(); }else{ this._drawSector(); } },
function handleKey(keydown) { window.removeEventListener('keydown', handleKey); model = Util.merge(model, { state: Util.merge(model.state, { keydown }) }); model = update(model); renderViews(model); window.requestAnimationFrame(() => { window.addEventListener('keydown', handleKey); }); }
function removeInternal(currentTarget, type, cfg) { // copy cfg = util.merge(cfg); var customEvent; type = fixType(cfg, type); var domEventObservablesHolder = DomEventObservable.getDomEventObservablesHolder(currentTarget), domEventObservables = (domEventObservablesHolder || {}).observables; if (!domEventObservablesHolder || !domEventObservables) { return; } // remove all types of event if (!type) { for (type in domEventObservables) { domEventObservables[type].detach(cfg); } return; } customEvent = domEventObservables[type]; if (customEvent) { customEvent.detach(cfg); } }
renderLegend: function() { if (!this._cfg.legend.isShow) return; var self = this, legendCfg = self._cfg.legend, container = (legendCfg.container && $(legendCfg.container)[0]) ? $(legendCfg.container) : self._$ctnNode; var innerContainer = self._innerContainer; var colors = self.color._colors, //legend icon 的颜色表,循环 len = colors.length, cfg = self._cfg, series = self._cfg.series var barconfig = Util.map(series, function(serie, i) { i = i % len; var item = {}, color = colors[i] item.text = serie.text; item.DEFAULT = color.DEFAULT; item.HOVER = color.HOVER; return item; }); var globalConfig = Util.merge({ // icontype:"circle", // iconsize:10, interval: 20, //legend之间的间隔 iconright: 5, //icon后面的空白 showicon: true //默认为true. 是否显示legend前面的小icon——可能用户有自定义的需求 }, cfg.legend.globalConfig); self.legend = new Legend({ container: container, paper: self.paper, bbox: { width: innerContainer.width, height: innerContainer.height, left: innerContainer.x, top: innerContainer.y }, align: cfg.legend.align || "bc", offset: cfg.legend.offset || [0, 30], globalConfig: globalConfig, config: barconfig }); self.legend.on("click", function(evt) { var i = evt.index, $text = evt.text, $icon = evt.icon, el = evt.el if (el.hide != 1) { this.hidePoints(i); el.hide = 1; el.disable(); } else { this.showPoints(i); el.hide = 0; el.enable(); } }, this); return self.legend; },
function removeInternal(currentTarget, type, cfg) { _$jscoverage['/base/dom-event.js'].functionData[4]++; _$jscoverage['/base/dom-event.js'].lineData[90]++; cfg = util.merge(cfg); _$jscoverage['/base/dom-event.js'].lineData[92]++; var customEvent; _$jscoverage['/base/dom-event.js'].lineData[94]++; type = fixType(cfg, type); _$jscoverage['/base/dom-event.js'].lineData[96]++; var domEventObservablesHolder = DomEventObservable.getDomEventObservablesHolder(currentTarget), domEventObservables = (visit10_97_1(domEventObservablesHolder || {})).observables; _$jscoverage['/base/dom-event.js'].lineData[99]++; if (visit11_99_1(!domEventObservablesHolder || !domEventObservables)) { _$jscoverage['/base/dom-event.js'].lineData[100]++; return; } _$jscoverage['/base/dom-event.js'].lineData[104]++; if (visit12_104_1(!type)) { _$jscoverage['/base/dom-event.js'].lineData[105]++; for (type in domEventObservables) { _$jscoverage['/base/dom-event.js'].lineData[106]++; domEventObservables[type].detach(cfg); } _$jscoverage['/base/dom-event.js'].lineData[108]++; return; } _$jscoverage['/base/dom-event.js'].lineData[111]++; customEvent = domEventObservables[type]; _$jscoverage['/base/dom-event.js'].lineData[113]++; if (visit13_113_1(customEvent)) { _$jscoverage['/base/dom-event.js'].lineData[114]++; customEvent.detach(cfg); } }
function addInternal(currentTarget, type, cfg) { _$jscoverage['/base/dom-event.js'].functionData[2]++; _$jscoverage['/base/dom-event.js'].lineData[33]++; var domEventObservablesHolder, domEventObservable, domEventObservables, handle; _$jscoverage['/base/dom-event.js'].lineData[38]++; cfg = util.merge(cfg); _$jscoverage['/base/dom-event.js'].lineData[39]++; type = fixType(cfg, type); _$jscoverage['/base/dom-event.js'].lineData[42]++; domEventObservablesHolder = DomEventObservable.getDomEventObservablesHolder(currentTarget, 1); _$jscoverage['/base/dom-event.js'].lineData[44]++; if (visit3_44_1(!(handle = domEventObservablesHolder.handle))) { _$jscoverage['/base/dom-event.js'].lineData[45]++; handle = domEventObservablesHolder.handle = function(event) { _$jscoverage['/base/dom-event.js'].functionData[3]++; _$jscoverage['/base/dom-event.js'].lineData[49]++; var type = event.type, domEventObservable, currentTarget = handle.currentTarget; _$jscoverage['/base/dom-event.js'].lineData[52]++; if (visit4_52_1(visit5_52_2(DomEventObservable.triggeredEvent === type) || visit6_53_1(typeof KISSY === 'undefined'))) { _$jscoverage['/base/dom-event.js'].lineData[54]++; return undefined; } _$jscoverage['/base/dom-event.js'].lineData[56]++; domEventObservable = DomEventObservable.getDomEventObservable(currentTarget, type); _$jscoverage['/base/dom-event.js'].lineData[57]++; if (visit7_57_1(domEventObservable)) { _$jscoverage['/base/dom-event.js'].lineData[58]++; event.currentTarget = currentTarget; _$jscoverage['/base/dom-event.js'].lineData[59]++; event = new DomEventObject(event); _$jscoverage['/base/dom-event.js'].lineData[60]++; return domEventObservable.notify(event); } _$jscoverage['/base/dom-event.js'].lineData[62]++; return undefined; }; _$jscoverage['/base/dom-event.js'].lineData[64]++; handle.currentTarget = currentTarget; } _$jscoverage['/base/dom-event.js'].lineData[67]++; if (visit8_67_1(!(domEventObservables = domEventObservablesHolder.observables))) { _$jscoverage['/base/dom-event.js'].lineData[68]++; domEventObservables = domEventObservablesHolder.observables = {}; } _$jscoverage['/base/dom-event.js'].lineData[72]++; domEventObservable = domEventObservables[type]; _$jscoverage['/base/dom-event.js'].lineData[74]++; if (visit9_74_1(!domEventObservable)) { _$jscoverage['/base/dom-event.js'].lineData[75]++; domEventObservable = domEventObservables[type] = new DomEventObservable({ type: type, currentTarget: currentTarget}); _$jscoverage['/base/dom-event.js'].lineData[80]++; domEventObservable.setup(); } _$jscoverage['/base/dom-event.js'].lineData[83]++; domEventObservable.on(cfg); _$jscoverage['/base/dom-event.js'].lineData[85]++; currentTarget = null; }
beforeResume: function() { _$jscoverage['/transition.js'].functionData[11]++; _$jscoverage['/transition.js'].lineData[115]++; var self = this, propsData = self._propsData, tmpPropsData = util.merge(propsData), runTime = self._runTime / 1000; _$jscoverage['/transition.js'].lineData[119]++; util.each(tmpPropsData, function(propData, prop) { _$jscoverage['/transition.js'].functionData[12]++; _$jscoverage['/transition.js'].lineData[120]++; var tRunTime = runTime; _$jscoverage['/transition.js'].lineData[121]++; if (visit8_121_1(propData.delay >= tRunTime)) { _$jscoverage['/transition.js'].lineData[122]++; propData.delay -= tRunTime; } else { _$jscoverage['/transition.js'].lineData[124]++; tRunTime -= propData.delay; _$jscoverage['/transition.js'].lineData[125]++; propData.delay = 0; _$jscoverage['/transition.js'].lineData[126]++; if (visit9_126_1(propData.duration >= tRunTime)) { _$jscoverage['/transition.js'].lineData[127]++; propData.duration -= tRunTime; } else { _$jscoverage['/transition.js'].lineData[129]++; delete propsData[prop]; } } }); },
define('kg/kcharts/5.0.0/tools/graphtool/index',["util","kg/kcharts/5.0.0/raphael/index"],function(require, exports, module) { var Util = require("util"), Raphael = require("kg/kcharts/5.0.0/raphael/index"); var sqrt = Math.sqrt; var graphTool = {}; var triangle = function(paper,x,y,r,deg){ var path = [ "M" + [x,y-r].join(","), "L" + [x - r * sqrt(3)/2,y - 0 + r * 1/2].join(","), [x - 0 + r * sqrt(3)/2,y - 0 + r * 1/2].join(","), "Z" ].join(" "), el; if(paper && paper.path){ el = paper.path(path); el.rotate(deg,x,y); return el; } }; var rhomb = function(paper,x,y,w,h,deg){ var path = [ "M" + [x,y-h/2].join(","), "L" + [x - 0 + w/2,y].join(","), [x,y - 0 + h/2].join(","), [x - w/2,y].join(","), "Z" ].join(","), el; if(paper && paper.path){ el = paper.path(path); el.rotate(deg,x,y); return el; } }; var square = function(paper,x,y,w,h){ var path = [ ["M",x-w/2,",",y-h/2].join(""), [" L",x/1+w/2,",",y-h/2," v",h," h",-w,'z'].join("") ],el; if(paper && paper.path){ el = paper.path(path); return el; } } graphTool = Util.merge(graphTool,{ triangle:triangle, rhomb:rhomb, square:square }); return graphTool; });
tipHandler: function(barGroup, barIndex) { var self = this, _cfg = self._cfg, tip = self.tip, isY = _cfg.zoomType == "y" ? true : false, $bar = self._bars[barGroup]['bars'][barIndex], defaultColor = $bar.attr("defaultColor"), tpl = self._cfg.tip.template, posx = isY ? $bar.attr("x") / 1 + $bar.attr("width") / 1 : $bar.attr("x"), posy = $bar.attr("y"), tipData = Util.merge(self._points[barGroup][barIndex].dataInfo, _cfg.series[barGroup]); //删除data 避免不必要的数据 delete tipData.data; self._points[barGroup][barIndex]["dataInfo"], self.barChange(barGroup, barIndex); if (!tpl) return; Util.mix(tipData, { groupindex: barGroup, barindex: barIndex }); tip && tip.fire("setcontent", { data: tipData }) tip && tip.fire("move", { x: posx, y: posy, style: self.processAttr(_cfg.tip.css, defaultColor) }); },
tipHandler: function(lineIndex, stockIndex) { var self = this; if (lineIndex === undefined || stockIndex === undefined) return; var tip = self.tip, _cfg = self._cfg, series = _cfg.series, tpl = _cfg.tip.template, currentPoints = self._points[lineIndex], currentStocks = self._stocks[lineIndex], curPoint = currentPoints[stockIndex], color = self._lines[lineIndex]['color']['DEFAULT'], //获取当前直线的填充色 tipData; if (!tpl || !_cfg.tip.isShow || self.curStockIndex === undefined) return; // 如果tip需要展示多组数据 则存放数组 if (self._cfg.comparable) { var tipAllDatas = {datas: {}}; var tmpArray = []; for (var i in self._points) if (self._stocks[i]['stocks']) { if (self._points[i][stockIndex].dataInfo) { self._points[i][stockIndex].dataInfo.color = self._stocks[i]['color']['DEFAULT'] var tmp = Util.merge(self._points[i][stockIndex].dataInfo, series[i]); delete tmp.data; tipAllDatas.datas[i] = tmp; } } for (var i in tipAllDatas.datas) { tmpArray.push(tipAllDatas.datas[i]); } tipAllDatas.datas = BaseChart.prototype.arraySort(tmpArray, true, "y"); tipData = tipAllDatas; } else { tipData = Util.merge(self._points[lineIndex][stockIndex].dataInfo, series[lineIndex]); delete tipData['data']; } self.stockChange(lineIndex,stockIndex); if (!self.isEmptyPoint(currentPoints[stockIndex])) { tipData['lineindex'] = lineIndex; tipData['pointindex'] = stockIndex; tip.fire("setcontent", {data: tipData}); tip.fire("move", { x: curPoint.x, y: curPoint.y, style: self.processAttr(_cfg.tip.css, color) }); } },
util.each(origin, function (val, sh) { // 如果分属性没有显式设置过,得到期待的分属性最后值 if (!(sh in _propsData)) { _propsData[sh] = util.merge(_propData, { value: Dom.css(node, sh) }); } // 还原 // 还原 Dom.css(node, sh, val); }); // 删除复合属性
Attribute.extend = function extend(px, sx) { var SubClass, self = this; sx = util.merge(sx); // px is shared among classes px = util.merge(px); var hooks, sxHooks = sx.__hooks__; if ((hooks = self.__hooks__)) { sxHooks = sx.__hooks__ = sx.__hooks__ || {}; util.mix(sxHooks, hooks, false); } var name = sx.name || 'AttributeDerived'; if (px.hasOwnProperty('constructor')) { SubClass = px.constructor; } else { // debug mode, give the right name for constructor if ('@DEBUG@') { /*jshint evil: true*/ SubClass = new Function('return function ' + util.camelCase(name) + '(){ ' + 'this.callSuper.apply(this, arguments);' + '}')(); } else { SubClass = function () { this.callSuper.apply(this, arguments); }; } } px.constructor = SubClass; SubClass.__hooks__ = sxHooks; wrapProtoForSuper(px, SubClass); var inheritedStatics, sxInheritedStatics = sx.inheritedStatics; if ((inheritedStatics = self.inheritedStatics)) { sxInheritedStatics = sx.inheritedStatics = sx.inheritedStatics || {}; util.mix(sxInheritedStatics, inheritedStatics, false); } util.extend(SubClass, self, px, sx); if (sxInheritedStatics) { util.mix(SubClass, sxInheritedStatics); } SubClass.extend = sx.extend || extend; SubClass.addMembers = addMembers; return SubClass; };
load: function(param){ // this.$body.addClass('laoding'); var c = this.config; if (param){ c.param = util.merge(c.param, param); } this.$tagBox.addClass('M-tagLabelsloading'); app.data.get(c.url, c.param, this); },
function update(model) { model = Util.merge(model, { state: Util.merge(model.state, { messages: [] }) }); let state = UserActionSystem.run(model); if (model.state.focus === Focus.GAME) { // state = LogicSystem.run(Util.merge(model, { state })); state = MovementSystem.run(Util.merge(model, { state })); // state = CombatSystem.run(Util.merge(model, { state })); } state = LogSystem.run(Util.merge(model, { state })); return { state: Util.merge(model.state, state), world: model.world }; }
children.each(function (c) { var ChildUI = self.getComponentConstructorByNode(prefixCls, c) || defaultChildXClass && Manager.getConstructorByXClass(defaultChildXClass); if (ChildUI) { childrenComponents.push(new ChildUI(util.merge(defaultChildCfg, { srcNode: c }))); } });
function pauseOrResumeQueue(node, queue, action) { var allAnims = Dom.data(node, action === 'resume' ? pausedKey : runningKey), // can not stop in for/in , stop will modified allRunning too anims = util.merge(allAnims); util.each(anims, function (anim) { if (queue === undefined || anim.config.queue === queue) { anim[action](); } }); }
function addInternal(currentTarget, type, cfg) { var domEventObservablesHolder, domEventObservable, domEventObservables, handle; cfg = util.merge(cfg); type = fixType(cfg, type); // 获取事件描述 domEventObservablesHolder = DomEventObservable.getDomEventObservablesHolder(currentTarget, 1); if (!(handle = domEventObservablesHolder.handle)) { handle = domEventObservablesHolder.handle = function (event) { // 是经过 fire 手动调用而浏览器同步触发导致的,就不要再次触发了, // 已经在 fire 中 bubble 过一次了 // in case after page has unloaded var type = event.type, domEventObservable, currentTarget = handle.currentTarget; if (DomEventObservable.triggeredEvent === type || typeof KISSY === 'undefined') { return undefined; } domEventObservable = DomEventObservable.getDomEventObservable(currentTarget, type); if (domEventObservable) { event.currentTarget = currentTarget; event = new DomEventObject(event); return domEventObservable.notify(event); } return undefined; }; handle.currentTarget = currentTarget; } if (!(domEventObservables = domEventObservablesHolder.observables)) { domEventObservables = domEventObservablesHolder.observables = {}; } //事件 listeners , similar to eventListeners in Dom3 Events domEventObservable = domEventObservables[type]; if (!domEventObservable) { domEventObservable = domEventObservables[type] = new DomEventObservable({ type: type, currentTarget: currentTarget }); domEventObservable.setup(); } domEventObservable.on(cfg); currentTarget = null; }
addAttr: function (name, attrConfig, override) { var self = this, attrs = self.getAttrs(), attr, // shadow clone cfg = util.merge(attrConfig); if (cfg.value && typeof cfg.value === 'object') { cfg.value = util.clone(cfg.value); LoggerManger.log('please use valueFn instead of value for ' + name + ' attribute', 'warn'); } if (attr = attrs[name]) { util.mix(attr, cfg, override); } else { attrs[name] = cfg; } return self; },
exports.createServer = function(options, listener) { var opt, fn; var args = match( [[Function], function(f) { [opt, fn] = [{}, f]; }], [[Object, Function], function(o, f) { [opt, fn] = [o, f]; }] ); args.call(this, Array.prototype.slice.call(arguments)); util.merge(opt, {'handler': WebSocketHandler}); return new Server(opt, fn); };
stopEl: function (node, end, clearQueue, queue) { if (clearQueue) { if (queue === undefined) { Q.clearQueues(node); } else if (queue !== false) { Q.clearQueue(node, queue); } } var allRunning = Dom.data(node, runningKey), // can not stop in for/in , stop will modified allRunning too anims = util.merge(allRunning); util.each(anims, function (anim) { if (queue === undefined || anim.config.queue === queue) { anim.stop(end); } }); }
normalizeParam: function (type, fn, context) { var cfg = fn || {}; if (typeof fn === 'function') { cfg = { fn: fn, context: context }; } else { // copy cfg = util.merge(cfg); } var typedGroups = getTypedGroups(type); type = typedGroups[0]; cfg.groups = typedGroups[1]; cfg.type = type; return cfg; },
beforeResume: function () { // note: pause/resume in css transition is not smooth as js timer // already run time before pause var self = this, propsData = self._propsData, tmpPropsData = util.merge(propsData), runTime = self._runTime / 1000; util.each(tmpPropsData, function (propData, prop) { var tRunTime = runTime; if (propData.delay >= tRunTime) { propData.delay -= tRunTime; } else { tRunTime -= propData.delay; propData.delay = 0; if (propData.duration >= tRunTime) { propData.duration -= tRunTime; } else { delete propsData[prop]; } } }); },
Icons[x] = function(cx,cy,opt){ var ret = shape.call(_Icons,cx,cy,opt); if(opt.size){ if(!isArray(opt.size)){ opt.size = [opt.size,opt.size]; } ret.scale(opt.size[0],opt.size[1]); } var _item, _$line, attrs = opt.attrs || {} if(ret.clear){ _item = ret[0] _$line = ret[1]; _$line.attr({"stroke":attrs.fill || "#000","stroke-width":2*opt.size[1]}); }else{ _item = ret; } _item.attr(Util.merge({"stroke-width":0},opt.attrs)); return ret; }
it('ok with flashvars', function () { var config = util.merge(util.clone(defaultConfig), { src: '../assets/flashvars.swf', params: { bgcolor: '#038C3C', flashvars: { name1: 'http://taobao.com/?x=1&z=2', name2: { s: 'string', b: false, n: 1, url: 'http://taobao.com/?x=1&z=2', cpx: { s: 'string', b: false, n: 1, url: 'http://taobao.com/?x=1&z=2' } }, name3: 'string' } }, attrs: { id: 'test-flash-vars' } }); var swf = new SWF(config); var flashvars = getFlashVars(swf.get('el')); expect(flashvars.name1).toBe('http://taobao.com/?x=1&z=2'); expect(util.parseJson(flashvars.name2).cpx.s).toBe('string'); expect(swf.get('el').id).toEqual('test-flash-vars'); swf.destroy(); waits(1000); });
it('util.merge', function () { var a = { 'bool': false, 'num': 0, 'nul': null, 'undef': undefined, 'str': 'blabber' }, b = { 'bool': 'oops', 'num': 'oops', 'nul': 'oops', 'undef': 'oops', 'str': 'oops' }; var c = util.merge(a, b); expect(c.bool).toBe('oops'); expect(c.num).toBe('oops'); expect(c.nul).toBe('oops'); expect(c.undef).toBe('oops'); expect(c.str).toBe('oops'); });
_4eIsBlockBoundary: function (el, customNodeNames) { var nodeNameMatches = util.merge(blockBoundaryNodeNameMatch, customNodeNames); return !!(blockBoundaryDisplayMatch[Dom.css(el, 'display')] || nodeNameMatches[Dom.nodeName(el)]); },
align: function (refNode, points, offset, overflow) { refNode = $(refNode || win); offset = offset && [].concat(offset) || [ 0, 0 ]; overflow = overflow || {}; var self = this, el = self.$el, fail = 0; // 当前节点可以被放置的显示区域 // 当前节点可以被放置的显示区域 var visibleRect = getVisibleRectForElement(el[0]); // 当前节点所占的区域, left/top/width/height // 当前节点所占的区域, left/top/width/height var elRegion = getRegion(el); // 参照节点所占的区域, left/top/width/height // 参照节点所占的区域, left/top/width/height var refNodeRegion = getRegion(refNode); // 当前节点将要被放置的位置 // 当前节点将要被放置的位置 var elFuturePos = getElFuturePos(elRegion, refNodeRegion, points, offset); // 当前节点将要所处的区域 // 当前节点将要所处的区域 var newElRegion = util.merge(elRegion, elFuturePos); // 如果可视区域不能完全放置当前节点时允许调整 // 如果可视区域不能完全放置当前节点时允许调整 if (visibleRect && (overflow.adjustX || overflow.adjustY)) { // 如果横向不能放下 if (isFailX(elFuturePos, elRegion, visibleRect)) { fail = 1; // 对齐位置反下 // 对齐位置反下 points = flip(points, /[lr]/gi, { l: 'r', r: 'l' }); // 偏移量也反下 // 偏移量也反下 offset = flipOffset(offset, 0); } // 如果纵向不能放下 // 如果纵向不能放下 if (isFailY(elFuturePos, elRegion, visibleRect)) { fail = 1; // 对齐位置反下 // 对齐位置反下 points = flip(points, /[tb]/gi, { t: 'b', b: 't' }); // 偏移量也反下 // 偏移量也反下 offset = flipOffset(offset, 1); } // 如果失败,重新计算当前节点将要被放置的位置 // 如果失败,重新计算当前节点将要被放置的位置 if (fail) { elFuturePos = getElFuturePos(elRegion, refNodeRegion, points, offset); util.mix(newElRegion, elFuturePos); } var newOverflowCfg = {}; // 检查反下后的位置是否可以放下了 // 如果仍然放不下只有指定了可以调整当前方向才调整 // 检查反下后的位置是否可以放下了 // 如果仍然放不下只有指定了可以调整当前方向才调整 newOverflowCfg.adjustX = overflow.adjustX && isFailX(elFuturePos, elRegion, visibleRect); newOverflowCfg.adjustY = overflow.adjustY && isFailY(elFuturePos, elRegion, visibleRect); // 确实要调整,甚至可能会调整高度宽度 // 确实要调整,甚至可能会调整高度宽度 if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) { newElRegion = adjustForViewport(elFuturePos, elRegion, visibleRect, newOverflowCfg); } } // https://github.com/kissyteam/kissy/issues/190 // http://localhost:8888/kissy/src/overlay/demo/other/relative_align/align.html // 相对于屏幕位置没变,而 left/top 变了 // 例如 <div 'relative'><el absolute></div> // https://github.com/kissyteam/kissy/issues/190 // http://localhost:8888/kissy/src/overlay/demo/other/relative_align/align.html // 相对于屏幕位置没变,而 left/top 变了 // 例如 <div 'relative'><el absolute></div> self.set({ x: newElRegion.left, y: newElRegion.top }, { force: 1 }); // need judge to in case set fixed with in css on height auto element // need judge to in case set fixed with in css on height auto element if (newElRegion.width !== elRegion.width) { self.set('width', el.width() + newElRegion.width - elRegion.width); } if (newElRegion.height !== elRegion.height) { self.set('height', el.height() + newElRegion.height - elRegion.height); } return self; },
(function () { var blockLike = util.merge(dtd.$block, dtd.$listItem, dtd.$tableContent), falsyFilter = filters.falsyFilter, stylesFilter = filters.stylesFilter, createListBulletMarker = utils.createListBulletMarker, flattenList = filters.flattenList, assembleList = filters.assembleList, isListBulletIndicator = utils.isListBulletIndicator, containsNothingButSpaces = utils.isContainingOnlySpaces, resolveListItem = utils.resolveList, convertToPxStr = function (value) { value = convertToPx(value); return isNaN(value) ? value : value + 'px'; }, getStyleComponents = utils.getStyleComponents, listDtdParents = utils.listDtdParents; wordFilter.addRules({ tagNames: [ // Remove script, meta and link elements. [ ( /meta|link|script/ ), '' ] ], root: function (element) { element.filterChildren(); assembleList(element); }, tags: { '^': function (element) { // Transform CSS style declaration to inline style. var applyStyleFilter; if (UA.gecko && ( applyStyleFilter = filters.applyStyleFilter )) { applyStyleFilter(element); } }, $: function (element) { var tagName = element.nodeName || ''; // Convert length unit of width/height on blocks to // a more editor-friendly way (px). if (tagName in blockLike && element.getAttribute('style')) { setStyle(element, stylesFilter( [ [ ( /^(:?width|height)$/ ), null, convertToPxStr ] ])(element.getAttribute('style'))); } // Processing headings. if (tagName.match(/h\d/)) { element.filterChildren(); // Is the heading actually a list item? if (resolveListItem(element)) { return; } } // Remove inline elements which contain only empty spaces. else if (tagName in dtd.$inline) { element.filterChildren(); if (containsNothingButSpaces(element)) { element.setTagName(null); } } // Remove element with ms-office namespace, // with it's content preserved, e.g. 'o:p'. else if (tagName.indexOf(':') !== -1 && tagName.indexOf('ke') === -1) { element.filterChildren(); // Restore image real link from vml. if (tagName === 'v:imagedata') { var href = element.getAttribute('o:href'); if (href) { element.setAttribute('src', href); } element.setTagName('img'); return; } element.setTagName(null); } // Assembling list items into a whole list. if (tagName in listDtdParents) { element.filterChildren(); assembleList(element); } }, // We'll drop any style sheet, but Firefox conclude // certain styles in a single style element, which are // required to be changed into inline ones. 'style': function (element) { if (UA.gecko) { // Grab only the style definition section. var styleDefSection = onlyChild(element).nodeValue .match(/\/\* Style Definitions \*\/([\s\S]*?)\/\*/), styleDefText = styleDefSection && styleDefSection[ 1 ], rules = {}; // Storing the parsed result. if (styleDefText) { styleDefText // Remove line-breaks. .replace(/[\n\r]/g, '') // Extract selectors and style properties. .replace(/(.+?)\{(.+?)\}/g, function (rule, selectors, styleBlock) { selectors = selectors.split(','); var length = selectors.length; for (var i = 0; i < length; i++) { // Assume MS-Word mostly generate only simple // selector( [Type selector][Class selector]). util.trim(selectors[ i ]) .replace(/^(\w+)(\.[\w-]+)?$/g, function (match, tagName, className) { tagName = tagName || '*'; className = className.substring(1, className.length); // Reject MS-Word Normal styles. if (className.match(/MsoNormal/)) { return; } if (!rules[ tagName ]) { rules[ tagName ] = {}; } if (className) { rules[ tagName ][ className ] = styleBlock; } else { rules[ tagName ] = styleBlock; } }); } }); filters.applyStyleFilter = function (element) { var name = rules[ '*' ] ? '*' : element.nodeName, className = element.getAttribute('class'), style; if (name in rules) { style = rules[ name ]; if (typeof style === 'object') { style = style[ className ]; } // Maintain style rules priorities. if (style) { addStyle(element, style, true); } } }; } } return false; }, 'p': function (element) { // This's a fall-back approach to recognize list item in FF3.6, // as it's not perfect as not all list style (e.g. 'heading list') is shipped // with this pattern. (#6662) if (/MsoListParagraph/.exec(element.getAttribute('class'))) { var bulletText = firstChild(element, function (node) { return node.nodeType === 3 && !containsNothingButSpaces(node.parentNode); }); var bullet = bulletText && bulletText.parentNode; if (bullet && !bullet.getAttribute('style')) { bullet.setAttribute('style', 'mso-list: Ignore;'); } } element.filterChildren(); // Is the paragraph actually a list item? resolveListItem(element); }, 'div': function (element) { // Aligned table with no text surrounded is represented by a wrapper div, from which // table cells inherit as text-align styles, which is wrong. // Instead we use a clear-float div after the table to properly achieve the same layout. var singleChild = onlyChild(element); if (singleChild && singleChild.nodeName === 'table') { var attrs = element.attributes; util.each(attrs, function (attr) { singleChild.setAttribute(attr.name, attr.value); }); if (element.getAttribute('style')) { addStyle(singleChild, element.getAttribute('style')); } var clearFloatDiv = new HtmlParser.Tag('div'); addStyle(clearFloatDiv, 'clear', 'both'); element.appendChild(clearFloatDiv); element.setTagName(null); } }, 'td': function (element) { // 'td' in 'thead' is actually <th>. if (getAncestor(element, 'thead')) { element.setTagName('th'); } }, // MS-Word sometimes present list as a mixing of normal list // and pseudo-list, normalize the previous ones into pseudo form. 'ol': flattenList, 'ul': flattenList, 'dl': flattenList, 'font': function (element) { // Drop the font tag if it comes from list bullet text. if (isListBulletIndicator(element.parentNode)) { element.setTagName(null); return; } element.filterChildren(); var styleText = element.getAttribute('style'), parent = element.parentNode; if ('font' === parent.name) // Merge nested <font> tags. { util.each(element.attributes, function (attr) { parent.setAttribute(attr.name, attr.value); }); if (styleText) { addStyle(parent, styleText); } element.setTagName(null); } // Convert the merged into a span with all attributes preserved. else { styleText = styleText || ''; // IE's having those deprecated attributes, normalize them. if (element.getAttribute('color')) { if (element.getAttribute('color') !== '#000000') { styleText += 'color:' + element.getAttribute('color') + ';'; } element.removeAttribute('color'); } if (element.getAttribute('face')) { styleText += 'font-family:' + element.getAttribute('face') + ';'; element.removeAttribute('face'); } var size = element.getAttribute('size'); // TODO: Mapping size in ranges of xx-small, // x-small, small, medium, large, x-large, xx-large. if (size) { styleText += 'font-size:' + (size > 3 ? 'large' : ( size < 3 ? 'small' : 'medium' ) ) + ';'; element.removeAttribute('size'); } element.setTagName('span'); addStyle(element, styleText); } }, 'span': function (element) { // Remove the span if it comes from list bullet text. if (isListBulletIndicator(element.parentNode)) { return false; } element.filterChildren(); if (containsNothingButSpaces(element)) { element.setTagName(null); return null; } // List item bullet type is supposed to be indicated by // the text of a span with style 'mso-list : Ignore' or an image. if (isListBulletIndicator(element)) { var listSymbolNode = firstChild(element, function (node) { return node.nodeValue || node.nodeName === 'img'; }); var listSymbol = listSymbolNode && ( listSymbolNode.nodeValue || 'l.' ), listType = listSymbol && listSymbol.match(/^(?:[(]?)([^\s]+?)([.)]?)$/); if (listType) { var marker = createListBulletMarker(listType, listSymbol); // Some non-existed list items might be carried by an inconsequential list, // indicate by 'mso-hide:all/display:none', // those are to be removed later, now mark it with 'ke:ignored'. var ancestor = getAncestor(element, 'span'); if (ancestor && (/ mso-hide:\s*all|display:\s*none /). test(ancestor.getAttribute('style'))) { marker.setAttribute('ke:ignored', 1); } return marker; } } // Update the src attribute of image element with href. var styleText = element.getAttribute('style'); // Assume MS-Word mostly carry font related styles on <span>, // adapting them to editor's convention. if (styleText) { setStyle(element, stylesFilter( [ // Drop 'inline-height' style which make lines overlapping. [ /^line-height$/ ], [ /^font-family$/ ] , [ /^font-size$/ ] , [ /^color$/ ] , [ /^background-color$/ ] ] )(styleText, element)); } }, // Editor doesn't support anchor with content currently (#3582), // drop such anchors with content preserved. 'a': function (element) { var href; if (!(href = element.getAttribute('href')) && element.getAttribute('name')) { element.setTagName(null); } else if (UA.webkit && href && href.match(/file:\/\/\/[\S]+#/i)) { element.setAttribute('href', href.replace(/file:\/\/\/[^#]+/i, '')); } }, 'ke:listbullet': function (element) { if (getAncestor(element, /h\d/)) { element.setTagName(null); } } }, attributeNames: [ // Remove onmouseover and onmouseout events (from MS Word comments effect) [ ( /^onmouse(:?out|over)/ ), '' ], // Onload on image element. [ ( /^onload$/ ), '' ], // Remove office and vml attribute from elements. [ ( /(?:v|o):\w+/ ), '' ], // Remove lang/language attributes. [ ( /^lang/ ), '' ] ], attributes: { // Provide a white-list of styles that we preserve, those should // be the ones that could later be altered with editor tools. 'style': stylesFilter([ [ ( /^list-style-type$/ ) ], // Preserve margin-left/right which used as default indent style in the editor. [ ( /^margin$|^margin-(?!bottom|top)/ ), null, function (value, element, name) { if (element.nodeName in { p: 1, div: 1 }) { var indentStyleName = 'margin-left'; // Extract component value from 'margin' shorthand. if (name === 'margin') { value = getStyleComponents(name, value, [ indentStyleName ])[ indentStyleName ]; } else if (name !== indentStyleName) { return null; } if (value && !emptyMarginRegex.test(value)) { return [ indentStyleName, value ]; } } return null; } ], // Preserve clear float style. [ ( /^clear$/ ) ], [ ( /^border.*|margin.*|vertical-align|float$/ ), null, function (value, element) { if (element.nodeName === 'img') { return value; } } ], [ (/^width|height$/ ), null, function (value, element) { if (element.nodeName in { table: 1, td: 1, th: 1, img: 1 }) { return value; } } ] ], 1), // Prefer width styles over 'width' attributes. 'width': function (value, element) { if (element.nodeName in dtd.$tableContent) { return false; } }, // Prefer border styles over table 'border' attributes. 'border': function (value, element) { if (element.nodeName in dtd.$tableContent) { return false; } }, // Only Firefox carry style sheet from MS-Word, which // will be applied by us manually. For other browsers // the css className is useless. 'class': falsyFilter, // MS-Word always generate 'background-color' along with 'bgcolor', // simply drop the deprecated attributes. 'bgcolor': falsyFilter, // Deprecate 'valign' attribute in favor of 'vertical-align'. 'valign': function (value, element) { addStyle(element, 'vertical-align', value); return false; } }, // Fore none-IE, some useful data might be buried under these IE-conditional // comments where RegExp were the right approach to dig them out where usual approach // is transform it into a fake element node which hold the desired data. comment: UA.ie ? function (value, node) { var imageInfo = value.match(/<img.*?>/), listInfo = value.match(/^\[if !supportLists\]([\s\S]*?)\[endif\]$/); // Seek for list bullet indicator. if (listInfo) { // Bullet symbol could be either text or an image. var listSymbol = listInfo[ 1 ] || ( imageInfo && 'l.' ), listType = listSymbol && listSymbol.match(/>(?:[(]?)([^\s]+?)([.)]?)</); return createListBulletMarker(listType, listSymbol); } // Reveal the <img> element in conditional comments for Firefox. if (UA.gecko && imageInfo) { var img = new HtmlParser.Parser(imageInfo[0]).parse().childNodes[ 0 ], previousComment = node.previousSibling, // Try to dig the real image link from vml markup from previous comment text. imgSrcInfo = previousComment && previousComment.toHtml().match(/<v:imagedata[^>]*o:href=[''](.*?)['']/), imgSrc = imgSrcInfo && imgSrcInfo[ 1 ]; // Is there a real 'src' url to be used? if (imgSrc) { ( img.setAttribute('src', imgSrc) ); } return img; } return false; } : falsyFilter }); })();
KISSY.add('editor-plugins/lib/word-filter',["html-parser","util","node","ua"],function(S ,require, exports, module) {function e(e){e=e.toUpperCase();for(var t=w.length,i=0,r=0;t>r;++r)for(var n=w[r],l=n[1].length;e.substr(0,l)===n[1];e=e.substr(l))i+=n[0];return i}function t(e){e=e.toUpperCase();for(var t=x.length,i=1,r=1;e.length>0;r*=t)i+=x.indexOf(e.charAt(e.length-1))*r,e=e.substr(0,e.length-1);return i}function i(e,t){t?e.setAttribute("style",t):e.removeAttribute("style")}function r(e){var t=e.childNodes||[],i=t.length,r=1===i&&t[0];return r||null}function n(e,t){for(var i,r=e.childNodes||[],l=[],a=0;a<r.length;a++)i=r[a],i.nodeName&&(i.nodeName===t&&(l.push(i),r.splice(a--,1)),l=l.concat(n(i,t)));return l}function l(e,t){for(var i=e.parentNode;i&&(!i.nodeName||!i.nodeName.match(t));)i=i.parentNode;return i}function a(e,t){var i,r,n=e.childNodes||[];for(r=0;r<n.length;r++){if(i=n[r],t(i))return i;if(i.nodeName&&(i=a(i,t)))return i}return null}function s(e,t,r,n){var l,a,s="";if("string"==typeof r)s+=t+":"+r+";";else{if("object"==typeof t)for(a in t)s+=a+":"+t[a]+";";else s+=t;n=r}l=e.getAttribute("style"),l=(n?[s,l]:[l,s]).join(";"),i(e,l.replace(/^;|;(?=;)/,""))}function o(e){var t,i={};for(t in p)-1===t.indexOf("$")&&p[t][e]&&(i[t]=1);return i}function u(e){var t,r,n,l=e.childNodes||[],a=l.length,o=/list-style-type:(.*?)(?:;|$)/,u=S.stylesFilter;if(!o.exec(e.getAttribute("style"))){for(var c=0;a>c;c++)if(t=l[c],t.getAttribute("value")&&Number(t.getAttribute("value"))===c+1&&t.removeAttribute("value"),r=o.exec(t.getAttribute("style"))){if(r[1]!==n&&n){n=null;break}n=r[1]}if(n){for(c=0;a>c;c++){var f=l[c].getAttribute("style");f&&(f=u([["list-style-type"]])(f),i(l[c],f))}s(e,"list-style-type",n)}}}var c,f=require("html-parser"),d=require("util"),m=require("node"),g=require("ua"),p=f.DTD,h=new f.Filter,b=/^([.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz){1}?/i,v=/^(?:\b0[^\s]*\s*){1,4}$/,y="^m{0,4}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$",A=new RegExp(y),N=new RegExp(y.toUpperCase()),k={decimal:/\d+/,"lower-roman":A,"upper-roman":N,"lower-alpha":/^[a-z]+$/,"upper-alpha":/^[A-Z]+$/},$={disc:/[l\u00B7\u2002]/,circle:/[\u006F\u00D8]/,square:/[\u006E\u25C6]/},C={ol:k,ul:$},w=[[1e3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]],x="ABCDEFGHIJKLMNOPQRSTUVWXYZ",T=function(){var e;return function(t){return e||(e=m('<div style="position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"></div>').prependTo("body")),/%$/.test(t)?t:(e.css("width",t),e[0].clientWidth)}}(),L=0,F=null,S={flattenList:function(e,t){t="number"==typeof t?t:1;var i;switch(e.getAttribute("type")){case"a":i="lower-alpha";break;case"1":i="decimal"}for(var r,n=e.childNodes||[],l=0;l<n.length;l++)if(r=n[l],r.nodeName in p.$listItem){var a=r.childNodes||[],s=a.length,o=a[s-1];o.nodeName in p.$list&&(e.insertAfter(r),--a.length||e.removeChild(n[l--])),r.setTagName("ke:li"),e.getAttribute("start")&&!l&&e.setAttribute("value",e.getAttribute("start")),S.stylesFilter([["tab-stops",null,function(e){var t=e.split(" ")[1].match(b);t&&(F=T(t[0]))}],1===t?["mso-list",null,function(e){e=e.split(" ");var t=Number(e[0].match(/\d+/));t!==c&&r.setAttribute("ke:reset",1),c=t}]:null])(r.getAttribute("style")),r.setAttribute("ke:indent",t),r.setAttribute("ke:listtype",e.nodeName),r.setAttribute("ke:list-style-type",i)}else if(r.nodeName in p.$list){arguments.callee.apply(this,[r,t+1]),n=n.slice(0,l).concat(r.childNodes).concat(n.slice(l+1)),e.empty();for(var u=0,f=n.length;f>u;u++)e.appendChild(n[u])}e.nodeName=e.tagName=null,e.setAttribute("ke:list",1)},assembleList:function(i){for(var r,n,l,a,o,c,m,g,p,h,b,v,y=i.childNodes||[],A=[],N=0;N<y.length;N++)if(r=y[N],"ke:li"===r.nodeName){if(r.setTagName("li"),n=r,p=n.getAttribute("ke:listsymbol"),p=p&&p.match(/^(?:[(]?)([^\s]+?)([.)]?)$/),h=b=v=null,n.getAttribute("ke:ignored")){y.splice(N--,1);continue}if(n.getAttribute("ke:reset")&&(c=a=o=null),l=Number(n.getAttribute("ke:indent")),l!==a&&(g=m=null),p){if(g&&C[g][m].test(p[1]))h=g,b=m;else for(var k in C)for(var $ in C[k])if(C[k][$].test(p[1])){if("ol"!==k||!/alpha|roman/.test($)){h=k,b=$;break}var w=/roman/.test($)?e(p[1]):t(p[1]);(!v||v>w)&&(v=w,h=k,b=$)}h||(h=p[2]?"ol":"ul")}else h=n.getAttribute("ke:listtype")||"ol",b=n.getAttribute("ke:list-style-type");if(g=h,m=b||("ol"===h?"decimal":"disc"),b&&b!==("ol"===h?"decimal":"disc")&&s(n,"list-style-type",b),"ol"===h&&p){switch(b){case"decimal":v=Number(p[1]);break;case"lower-roman":case"upper-roman":v=e(p[1]);break;case"lower-alpha":case"upper-alpha":v=t(p[1])}n.setAttribute("value",v)}if(c){if(l>a)A.push(c=new f.Tag(h)),c.appendChild(n),o.appendChild(c);else if(a>l){for(var x,T=a-l;T--&&(x=c.parentNode);)c=x.parentNode;c.appendChild(n)}else c.appendChild(n);y.splice(N--,1)}else A.push(c=new f.Tag(h)),c.appendChild(n),i.replaceChild(c,y[N]);o=n,a=l}else c&&(3!==r.nodeType||d.trim(r.nodeValue))&&(c=a=o=null);for(N=0;N<A.length;N++)u(A[N])},falsyFilter:function(){return!1},stylesFilter:function(e,t){return function(i,r){var n=[];(i||"").replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(i,l,a){l=l.toLowerCase(),"font-family"===l&&(a=a.replace(/['']/g,""));for(var s,o,u,c,f=0;f<e.length;f++)if(e[f]&&(s=e[f][0],o=e[f][1],u=e[f][2],c=e[f][3],l.match(s)&&(!o||a.match(o))))return l=c||l,t&&(u=u||a),"function"==typeof u&&(u=u(a,r,l)),u&&u.push&&(l=u[0],u=u[1]),void("string"==typeof u&&n.push([l,u]));t||n.push([l,a])});for(var l=0;l<n.length;l++)n[l]=n[l].join(":");return n.length?n.join(";")+";":!1}},applyStyleFilter:null},D={createListBulletMarker:function(e,t){var i=new f.Tag("ke:listbullet");return i.setAttribute("ke:listsymbol",e[0]),i.appendChild(new f.Text(t)),i},isListBulletIndicator:function(e){var t=e.getAttribute("style");return/mso-list\s*:\s*Ignore/i.test(t)?!0:void 0},isContainingOnlySpaces:function(e){var t;return(t=r(e))&&/^(:?\s| )+$/.test(t.nodeValue)},resolveList:function(e){var t;if((t=n(e,"ke:listbullet"))&&t.length&&(t=t[0])){if(e.setTagName("ke:li"),e.getAttribute("style")){var r=S.stylesFilter([["text-indent"],["line-height"],[/^margin(:?-left)?$/,null,function(t){var i=t.split(" ");t=T(i[3]||i[1]||i[0]),!L&&null!==F&&t>F&&(L=t-F),F=t,L&&e.setAttribute("ke:indent",L&&Math.ceil(t/L)+1||1)}],[/^mso-list$/,null,function(t){t=t.split(" ");var i=Number(t[0].match(/\d+/)),r=Number(t[1].match(/\d+/));1===r&&(i!==c&&e.setAttribute("ke:reset",1),c=i),e.setAttribute("ke:indent",r)}]])(e.getAttribute("style"),e);i(e,r)}return e.getAttribute("ke:indent")||(F=0,e.setAttribute("ke:indent",1)),d.each(t.attributes,function(t){e.setAttribute(t.name,t.value)}),!0}return c=F=L=null,!1},getStyleComponents:function(){var e=m('<div style="position:absolute;left:-9999px;top:-9999px;"></div>').prependTo("body");return function(t,i,r){e.css(t,i);for(var n={},l=r.length,a=0;l>a;a++)n[r[a]]=e.css(r[a]);return n}}(),listDtdParents:o("ol")};!function(){var e=d.merge(p.$block,p.$listItem,p.$tableContent),t=S.falsyFilter,n=S.stylesFilter,o=D.createListBulletMarker,u=S.flattenList,c=S.assembleList,m=D.isListBulletIndicator,b=D.isContainingOnlySpaces,y=D.resolveList,A=function(e){return e=T(e),isNaN(e)?e:e+"px"},N=D.getStyleComponents,k=D.listDtdParents;h.addRules({tagNames:[[/meta|link|script/,""]],root:function(e){e.filterChildren(),c(e)},tags:{"^":function(e){var t;g.gecko&&(t=S.applyStyleFilter)&&t(e)},$:function(t){var r=t.nodeName||"";if(r in e&&t.getAttribute("style")&&i(t,n([[/^(:?width|height)$/,null,A]])(t.getAttribute("style"))),r.match(/h\d/)){if(t.filterChildren(),y(t))return}else if(r in p.$inline)t.filterChildren(),b(t)&&t.setTagName(null);else if(-1!==r.indexOf(":")&&-1===r.indexOf("ke")){if(t.filterChildren(),"v:imagedata"===r){var l=t.getAttribute("o:href");return l&&t.setAttribute("src",l),void t.setTagName("img")}t.setTagName(null)}r in k&&(t.filterChildren(),c(t))},style:function(e){if(g.gecko){var t=r(e).nodeValue.match(/\/\* Style Definitions \*\/([\s\S]*?)\/\*/),i=t&&t[1],n={};i&&(i.replace(/[\n\r]/g,"").replace(/(.+?)\{(.+?)\}/g,function(e,t,i){t=t.split(",");for(var r=t.length,l=0;r>l;l++)d.trim(t[l]).replace(/^(\w+)(\.[\w-]+)?$/g,function(e,t,r){t=t||"*",r=r.substring(1,r.length),r.match(/MsoNormal/)||(n[t]||(n[t]={}),r?n[t][r]=i:n[t]=i)})}),S.applyStyleFilter=function(e){var t,i=n["*"]?"*":e.nodeName,r=e.getAttribute("class");i in n&&(t=n[i],"object"==typeof t&&(t=t[r]),t&&s(e,t,!0))})}return!1},p:function(e){if(/MsoListParagraph/.exec(e.getAttribute("class"))){var t=a(e,function(e){return 3===e.nodeType&&!b(e.parentNode)}),i=t&&t.parentNode;i&&!i.getAttribute("style")&&i.setAttribute("style","mso-list: Ignore;")}e.filterChildren(),y(e)},div:function(e){var t=r(e);if(t&&"table"===t.nodeName){var i=e.attributes;d.each(i,function(e){t.setAttribute(e.name,e.value)}),e.getAttribute("style")&&s(t,e.getAttribute("style"));var n=new f.Tag("div");s(n,"clear","both"),e.appendChild(n),e.setTagName(null)}},td:function(e){l(e,"thead")&&e.setTagName("th")},ol:u,ul:u,dl:u,font:function(e){if(m(e.parentNode))return void e.setTagName(null);e.filterChildren();var t=e.getAttribute("style"),i=e.parentNode;if("font"===i.name)d.each(e.attributes,function(e){i.setAttribute(e.name,e.value)}),t&&s(i,t),e.setTagName(null);else{t=t||"",e.getAttribute("color")&&("#000000"!==e.getAttribute("color")&&(t+="color:"+e.getAttribute("color")+";"),e.removeAttribute("color")),e.getAttribute("face")&&(t+="font-family:"+e.getAttribute("face")+";",e.removeAttribute("face"));var r=e.getAttribute("size");r&&(t+="font-size:"+(r>3?"large":3>r?"small":"medium")+";",e.removeAttribute("size")),e.setTagName("span"),s(e,t)}},span:function(e){if(m(e.parentNode))return!1;if(e.filterChildren(),b(e))return e.setTagName(null),null;if(m(e)){var t=a(e,function(e){return e.nodeValue||"img"===e.nodeName}),r=t&&(t.nodeValue||"l."),s=r&&r.match(/^(?:[(]?)([^\s]+?)([.)]?)$/);if(s){var u=o(s,r),c=l(e,"span");return c&&/ mso-hide:\s*all|display:\s*none /.test(c.getAttribute("style"))&&u.setAttribute("ke:ignored",1),u}}var f=e.getAttribute("style");f&&i(e,n([[/^line-height$/],[/^font-family$/],[/^font-size$/],[/^color$/],[/^background-color$/]])(f,e))},a:function(e){var t;!(t=e.getAttribute("href"))&&e.getAttribute("name")?e.setTagName(null):g.webkit&&t&&t.match(/file:\/\/\/[\S]+#/i)&&e.setAttribute("href",t.replace(/file:\/\/\/[^#]+/i,""))},"ke:listbullet":function(e){l(e,/h\d/)&&e.setTagName(null)}},attributeNames:[[/^onmouse(:?out|over)/,""],[/^onload$/,""],[/(?:v|o):\w+/,""],[/^lang/,""]],attributes:{style:n([[/^list-style-type$/],[/^margin$|^margin-(?!bottom|top)/,null,function(e,t,i){if(t.nodeName in{p:1,div:1}){var r="margin-left";if("margin"===i)e=N(i,e,[r])[r];else if(i!==r)return null;if(e&&!v.test(e))return[r,e]}return null}],[/^clear$/],[/^border.*|margin.*|vertical-align|float$/,null,function(e,t){return"img"===t.nodeName?e:void 0}],[/^width|height$/,null,function(e,t){return t.nodeName in{table:1,td:1,th:1,img:1}?e:void 0}]],1),width:function(e,t){return t.nodeName in p.$tableContent?!1:void 0},border:function(e,t){return t.nodeName in p.$tableContent?!1:void 0},"class":t,bgcolor:t,valign:function(e,t){return s(t,"vertical-align",e),!1}},comment:g.ie?function(e,t){var i=e.match(/<img.*?>/),r=e.match(/^\[if !supportLists\]([\s\S]*?)\[endif\]$/);if(r){var n=r[1]||i&&"l.",l=n&&n.match(/>(?:[(]?)([^\s]+?)([.)]?)</);return o(l,n)}if(g.gecko&&i){var a=new f.Parser(i[0]).parse().childNodes[0],s=t.previousSibling,u=s&&s.toHtml().match(/<v:imagedata[^>]*o:href=[''](.*?)['']/),c=u&&u[1];return c&&a.setAttribute("src",c),a}return!1}:t})}(),module.exports={toDataFormat:function(e,t){return g.gecko&&(e=e.replace(/(<!--\[if[^<]*?\])-->([\S\s]*?)<!--(\[endif\]-->)/gi,"$1$2$3")),e=t.htmlDataProcessor.toDataFormat(e,h)}};});
} /** * @class KISSY.Anim * A class for constructing animation instances. * * @example * KISSY.use('dom,anim',function(S,Dom,Anim){ * var d=Dom.create('<div style="width:50px;height:50px;border:1px solid red;">running</div>'); * document.body.appendChild(d); * new Anim({ * node: d, * to: {width:100,height:100} * }).run().then(function(){ * d.innerHTML='completed'; * }); * }); * * @extend KISSY.Promise * @cfg {HTMLElement|Window} node html dom node or window * (window can only animate scrollTop/scrollLeft) * @cfg {Object} to end css style value. * @cfg {Number} [duration=1] duration(second) or anim config * @cfg {String|Function} [easing='easeNone'] easing fn or string * @cfg {Function} [complete] callback function when this animation is complete * @cfg {String|Boolean} [queue] current animation's queue, if false then no queue */ /** * @class KISSY.Anim * A class for constructing animation instances. * * @example * KISSY.use('dom,anim',function(S,Dom,Anim){ * var d=Dom.create('<div style="width:50px;height:50px;border:1px solid red;">running</div>'); * document.body.appendChild(d); * new Anim({ * node: d, * to: {width:100,height:100} * }).run().then(function(){ * d.innerHTML='completed'; * }); * }); * * @extend KISSY.Promise * @cfg {HTMLElement|Window} node html dom node or window * (window can only animate scrollTop/scrollLeft) * @cfg {Object} to end css style value. * @cfg {Number} [duration=1] duration(second) or anim config * @cfg {String|Function} [easing='easeNone'] easing fn or string * @cfg {Function} [complete] callback function when this animation is complete * @cfg {String|Boolean} [queue] current animation's queue, if false then no queue */ function AnimBase(node, to, duration, easing, complete) { var self = this; var config; if (node.node) { config = node; } else { // the transition properties if (typeof to === 'string') { to = querystring.parse(String(to), ';', ':'); util.each(to, function (value, prop) { var trimProp = util.trim(prop); if (trimProp) { to[trimProp] = util.trim(value); } if (!trimProp || trimProp !== prop) { delete to[prop]; } }); } // animation config // animation config if (util.isPlainObject(duration)) { config = util.clone(duration); } else { config = { complete: complete }; if (duration) { config.duration = duration; } if (easing) { config.easing = easing; } } config.node = node; config.to = to; } config = util.merge(defaultConfig, config); // Promise.call(self); // Promise.call(self); AnimBase.superclass.constructor.call(self); Promise.Defer(self); /** * config object of current anim instance * @type {Object} */ /** * config object of current anim instance * @type {Object} */ self.config = config; node = config.node; if (!util.isPlainObject(node)) { node = Dom.get(config.node); } self.node = self.el = node; self._backupProps = {}; self._propsData = {}; // camel case uniformity // camel case uniformity var newTo = {}; to = config.to; for (var prop in to) { newTo[camelCase(prop)] = to[prop]; } config.to = newTo; }