diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js deleted file mode 100644 index 4851b98..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - * angular-ui-bootstrap - * http://angular-ui.github.io/bootstrap/ - - * Version: 0.12.1 - 2015-02-20 - * License: MIT - */ -angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.transition","ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.bindHtml","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.position","ui.bootstrap.datepicker","ui.bootstrap.dropdown","ui.bootstrap.modal","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]),angular.module("ui.bootstrap.tpls",["template/accordion/accordion-group.html","template/accordion/accordion.html","template/alert/alert.html","template/carousel/carousel.html","template/carousel/slide.html","template/datepicker/datepicker.html","template/datepicker/day.html","template/datepicker/month.html","template/datepicker/popup.html","template/datepicker/year.html","template/modal/backdrop.html","template/modal/window.html","template/pagination/pager.html","template/pagination/pagination.html","template/tooltip/tooltip-html-unsafe-popup.html","template/tooltip/tooltip-popup.html","template/popover/popover.html","template/progressbar/bar.html","template/progressbar/progress.html","template/progressbar/progressbar.html","template/rating/rating.html","template/tabs/tab.html","template/tabs/tabset.html","template/timepicker/timepicker.html","template/typeahead/typeahead-match.html","template/typeahead/typeahead-popup.html"]),angular.module("ui.bootstrap.transition",[]).factory("$transition",["$q","$timeout","$rootScope",function(a,b,c){function d(a){for(var b in a)if(void 0!==f.style[b])return a[b]}var e=function(d,f,g){g=g||{};var h=a.defer(),i=e[g.animation?"animationEndEventName":"transitionEndEventName"],j=function(){c.$apply(function(){d.unbind(i,j),h.resolve(d)})};return i&&d.bind(i,j),b(function(){angular.isString(f)?d.addClass(f):angular.isFunction(f)?f(d):angular.isObject(f)&&d.css(f),i||h.resolve(d)}),h.promise.cancel=function(){i&&d.unbind(i,j),h.reject("Transition cancelled")},h.promise},f=document.createElement("trans"),g={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"},h={WebkitTransition:"webkitAnimationEnd",MozTransition:"animationend",OTransition:"oAnimationEnd",transition:"animationend"};return e.transitionEndEventName=d(g),e.animationEndEventName=d(h),e}]),angular.module("ui.bootstrap.collapse",["ui.bootstrap.transition"]).directive("collapse",["$transition",function(a){return{link:function(b,c,d){function e(b){function d(){j===e&&(j=void 0)}var e=a(c,b);return j&&j.cancel(),j=e,e.then(d,d),e}function f(){k?(k=!1,g()):(c.removeClass("collapse").addClass("collapsing"),e({height:c[0].scrollHeight+"px"}).then(g))}function g(){c.removeClass("collapsing"),c.addClass("collapse in"),c.css({height:"auto"})}function h(){if(k)k=!1,i(),c.css({height:0});else{c.css({height:c[0].scrollHeight+"px"});{c[0].offsetWidth}c.removeClass("collapse in").addClass("collapsing"),e({height:0}).then(i)}}function i(){c.removeClass("collapsing"),c.addClass("collapse")}var j,k=!0;b.$watch(d.collapse,function(a){a?h():f()})}}}]),angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse"]).constant("accordionConfig",{closeOthers:!0}).controller("AccordionController",["$scope","$attrs","accordionConfig",function(a,b,c){this.groups=[],this.closeOthers=function(d){var e=angular.isDefined(b.closeOthers)?a.$eval(b.closeOthers):c.closeOthers;e&&angular.forEach(this.groups,function(a){a!==d&&(a.isOpen=!1)})},this.addGroup=function(a){var b=this;this.groups.push(a),a.$on("$destroy",function(){b.removeGroup(a)})},this.removeGroup=function(a){var b=this.groups.indexOf(a);-1!==b&&this.groups.splice(b,1)}}]).directive("accordion",function(){return{restrict:"EA",controller:"AccordionController",transclude:!0,replace:!1,templateUrl:"template/accordion/accordion.html"}}).directive("accordionGroup",function(){return{require:"^accordion",restrict:"EA",transclude:!0,replace:!0,templateUrl:"template/accordion/accordion-group.html",scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(a,b,c,d){d.addGroup(a),a.$watch("isOpen",function(b){b&&d.closeOthers(a)}),a.toggleOpen=function(){a.isDisabled||(a.isOpen=!a.isOpen)}}}}).directive("accordionHeading",function(){return{restrict:"EA",transclude:!0,template:"",replace:!0,require:"^accordionGroup",link:function(a,b,c,d,e){d.setHeading(e(a,function(){}))}}}).directive("accordionTransclude",function(){return{require:"^accordionGroup",link:function(a,b,c,d){a.$watch(function(){return d[c.accordionTransclude]},function(a){a&&(b.html(""),b.append(a))})}}}),angular.module("ui.bootstrap.alert",[]).controller("AlertController",["$scope","$attrs",function(a,b){a.closeable="close"in b,this.close=a.close}]).directive("alert",function(){return{restrict:"EA",controller:"AlertController",templateUrl:"template/alert/alert.html",transclude:!0,replace:!0,scope:{type:"@",close:"&"}}}).directive("dismissOnTimeout",["$timeout",function(a){return{require:"alert",link:function(b,c,d,e){a(function(){e.close()},parseInt(d.dismissOnTimeout,10))}}}]),angular.module("ui.bootstrap.bindHtml",[]).directive("bindHtmlUnsafe",function(){return function(a,b,c){b.addClass("ng-binding").data("$binding",c.bindHtmlUnsafe),a.$watch(c.bindHtmlUnsafe,function(a){b.html(a||"")})}}),angular.module("ui.bootstrap.buttons",[]).constant("buttonConfig",{activeClass:"active",toggleEvent:"click"}).controller("ButtonsController",["buttonConfig",function(a){this.activeClass=a.activeClass||"active",this.toggleEvent=a.toggleEvent||"click"}]).directive("btnRadio",function(){return{require:["btnRadio","ngModel"],controller:"ButtonsController",link:function(a,b,c,d){var e=d[0],f=d[1];f.$render=function(){b.toggleClass(e.activeClass,angular.equals(f.$modelValue,a.$eval(c.btnRadio)))},b.bind(e.toggleEvent,function(){var d=b.hasClass(e.activeClass);(!d||angular.isDefined(c.uncheckable))&&a.$apply(function(){f.$setViewValue(d?null:a.$eval(c.btnRadio)),f.$render()})})}}}).directive("btnCheckbox",function(){return{require:["btnCheckbox","ngModel"],controller:"ButtonsController",link:function(a,b,c,d){function e(){return g(c.btnCheckboxTrue,!0)}function f(){return g(c.btnCheckboxFalse,!1)}function g(b,c){var d=a.$eval(b);return angular.isDefined(d)?d:c}var h=d[0],i=d[1];i.$render=function(){b.toggleClass(h.activeClass,angular.equals(i.$modelValue,e()))},b.bind(h.toggleEvent,function(){a.$apply(function(){i.$setViewValue(b.hasClass(h.activeClass)?f():e()),i.$render()})})}}}),angular.module("ui.bootstrap.carousel",["ui.bootstrap.transition"]).controller("CarouselController",["$scope","$timeout","$interval","$transition",function(a,b,c,d){function e(){f();var b=+a.interval;!isNaN(b)&&b>0&&(h=c(g,b))}function f(){h&&(c.cancel(h),h=null)}function g(){var b=+a.interval;i&&!isNaN(b)&&b>0?a.next():a.pause()}var h,i,j=this,k=j.slides=a.slides=[],l=-1;j.currentSlide=null;var m=!1;j.select=a.select=function(c,f){function g(){if(!m){if(j.currentSlide&&angular.isString(f)&&!a.noTransition&&c.$element){c.$element.addClass(f);{c.$element[0].offsetWidth}angular.forEach(k,function(a){angular.extend(a,{direction:"",entering:!1,leaving:!1,active:!1})}),angular.extend(c,{direction:f,active:!0,entering:!0}),angular.extend(j.currentSlide||{},{direction:f,leaving:!0}),a.$currentTransition=d(c.$element,{}),function(b,c){a.$currentTransition.then(function(){h(b,c)},function(){h(b,c)})}(c,j.currentSlide)}else h(c,j.currentSlide);j.currentSlide=c,l=i,e()}}function h(b,c){angular.extend(b,{direction:"",active:!0,leaving:!1,entering:!1}),angular.extend(c||{},{direction:"",active:!1,leaving:!1,entering:!1}),a.$currentTransition=null}var i=k.indexOf(c);void 0===f&&(f=i>l?"next":"prev"),c&&c!==j.currentSlide&&(a.$currentTransition?(a.$currentTransition.cancel(),b(g)):g())},a.$on("$destroy",function(){m=!0}),j.indexOfSlide=function(a){return k.indexOf(a)},a.next=function(){var b=(l+1)%k.length;return a.$currentTransition?void 0:j.select(k[b],"next")},a.prev=function(){var b=0>l-1?k.length-1:l-1;return a.$currentTransition?void 0:j.select(k[b],"prev")},a.isActive=function(a){return j.currentSlide===a},a.$watch("interval",e),a.$on("$destroy",f),a.play=function(){i||(i=!0,e())},a.pause=function(){a.noPause||(i=!1,f())},j.addSlide=function(b,c){b.$element=c,k.push(b),1===k.length||b.active?(j.select(k[k.length-1]),1==k.length&&a.play()):b.active=!1},j.removeSlide=function(a){var b=k.indexOf(a);k.splice(b,1),k.length>0&&a.active?j.select(b>=k.length?k[b-1]:k[b]):l>b&&l--}}]).directive("carousel",[function(){return{restrict:"EA",transclude:!0,replace:!0,controller:"CarouselController",require:"carousel",templateUrl:"template/carousel/carousel.html",scope:{interval:"=",noTransition:"=",noPause:"="}}}]).directive("slide",function(){return{require:"^carousel",restrict:"EA",transclude:!0,replace:!0,templateUrl:"template/carousel/slide.html",scope:{active:"=?"},link:function(a,b,c,d){d.addSlide(a,b),a.$on("$destroy",function(){d.removeSlide(a)}),a.$watch("active",function(b){b&&d.select(a)})}}}),angular.module("ui.bootstrap.dateparser",[]).service("dateParser",["$locale","orderByFilter",function(a,b){function c(a){var c=[],d=a.split("");return angular.forEach(e,function(b,e){var f=a.indexOf(e);if(f>-1){a=a.split(""),d[f]="("+b.regex+")",a[f]="$";for(var g=f+1,h=f+e.length;h>g;g++)d[g]="",a[g]="$";a=a.join(""),c.push({index:f,apply:b.apply})}}),{regex:new RegExp("^"+d.join("")+"$"),map:b(c,"index")}}function d(a,b,c){return 1===b&&c>28?29===c&&(a%4===0&&a%100!==0||a%400===0):3===b||5===b||8===b||10===b?31>c:!0}this.parsers={};var e={yyyy:{regex:"\\d{4}",apply:function(a){this.year=+a}},yy:{regex:"\\d{2}",apply:function(a){this.year=+a+2e3}},y:{regex:"\\d{1,4}",apply:function(a){this.year=+a}},MMMM:{regex:a.DATETIME_FORMATS.MONTH.join("|"),apply:function(b){this.month=a.DATETIME_FORMATS.MONTH.indexOf(b)}},MMM:{regex:a.DATETIME_FORMATS.SHORTMONTH.join("|"),apply:function(b){this.month=a.DATETIME_FORMATS.SHORTMONTH.indexOf(b)}},MM:{regex:"0[1-9]|1[0-2]",apply:function(a){this.month=a-1}},M:{regex:"[1-9]|1[0-2]",apply:function(a){this.month=a-1}},dd:{regex:"[0-2][0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a}},d:{regex:"[1-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a}},EEEE:{regex:a.DATETIME_FORMATS.DAY.join("|")},EEE:{regex:a.DATETIME_FORMATS.SHORTDAY.join("|")}};this.parse=function(b,e){if(!angular.isString(b)||!e)return b;e=a.DATETIME_FORMATS[e]||e,this.parsers[e]||(this.parsers[e]=c(e));var f=this.parsers[e],g=f.regex,h=f.map,i=b.match(g);if(i&&i.length){for(var j,k={year:1900,month:0,date:1,hours:0},l=1,m=i.length;m>l;l++){var n=h[l-1];n.apply&&n.apply.call(k,i[l])}return d(k.year,k.month,k.date)&&(j=new Date(k.year,k.month,k.date,k.hours)),j}}}]),angular.module("ui.bootstrap.position",[]).factory("$position",["$document","$window",function(a,b){function c(a,c){return a.currentStyle?a.currentStyle[c]:b.getComputedStyle?b.getComputedStyle(a)[c]:a.style[c]}function d(a){return"static"===(c(a,"position")||"static")}var e=function(b){for(var c=a[0],e=b.offsetParent||c;e&&e!==c&&d(e);)e=e.offsetParent;return e||c};return{position:function(b){var c=this.offset(b),d={top:0,left:0},f=e(b[0]);f!=a[0]&&(d=this.offset(angular.element(f)),d.top+=f.clientTop-f.scrollTop,d.left+=f.clientLeft-f.scrollLeft);var g=b[0].getBoundingClientRect();return{width:g.width||b.prop("offsetWidth"),height:g.height||b.prop("offsetHeight"),top:c.top-d.top,left:c.left-d.left}},offset:function(c){var d=c[0].getBoundingClientRect();return{width:d.width||c.prop("offsetWidth"),height:d.height||c.prop("offsetHeight"),top:d.top+(b.pageYOffset||a[0].documentElement.scrollTop),left:d.left+(b.pageXOffset||a[0].documentElement.scrollLeft)}},positionElements:function(a,b,c,d){var e,f,g,h,i=c.split("-"),j=i[0],k=i[1]||"center";e=d?this.offset(a):this.position(a),f=b.prop("offsetWidth"),g=b.prop("offsetHeight");var l={center:function(){return e.left+e.width/2-f/2},left:function(){return e.left},right:function(){return e.left+e.width}},m={center:function(){return e.top+e.height/2-g/2},top:function(){return e.top},bottom:function(){return e.top+e.height}};switch(j){case"right":h={top:m[k](),left:l[j]()};break;case"left":h={top:m[k](),left:e.left-f};break;case"bottom":h={top:m[j](),left:l[k]()};break;default:h={top:e.top-g,left:l[k]()}}return h}}}]),angular.module("ui.bootstrap.datepicker",["ui.bootstrap.dateparser","ui.bootstrap.position"]).constant("datepickerConfig",{formatDay:"dd",formatMonth:"MMMM",formatYear:"yyyy",formatDayHeader:"EEE",formatDayTitle:"MMMM yyyy",formatMonthTitle:"yyyy",datepickerMode:"day",minMode:"day",maxMode:"year",showWeeks:!0,startingDay:0,yearRange:20,minDate:null,maxDate:null}).controller("DatepickerController",["$scope","$attrs","$parse","$interpolate","$timeout","$log","dateFilter","datepickerConfig",function(a,b,c,d,e,f,g,h){var i=this,j={$setViewValue:angular.noop};this.modes=["day","month","year"],angular.forEach(["formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","minMode","maxMode","showWeeks","startingDay","yearRange"],function(c,e){i[c]=angular.isDefined(b[c])?8>e?d(b[c])(a.$parent):a.$parent.$eval(b[c]):h[c]}),angular.forEach(["minDate","maxDate"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(a){i[d]=a?new Date(a):null,i.refreshView()}):i[d]=h[d]?new Date(h[d]):null}),a.datepickerMode=a.datepickerMode||h.datepickerMode,a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),this.activeDate=angular.isDefined(b.initDate)?a.$parent.$eval(b.initDate):new Date,a.isActive=function(b){return 0===i.compare(b.date,i.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(a){j=a,j.$render=function(){i.render()}},this.render=function(){if(j.$modelValue){var a=new Date(j.$modelValue),b=!isNaN(a);b?this.activeDate=a:f.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.'),j.$setValidity("date",b)}this.refreshView()},this.refreshView=function(){if(this.element){this._refreshView();var a=j.$modelValue?new Date(j.$modelValue):null;j.$setValidity("date-disabled",!a||this.element&&!this.isDisabled(a))}},this.createDateObject=function(a,b){var c=j.$modelValue?new Date(j.$modelValue):null;return{date:a,label:g(a,b),selected:c&&0===this.compare(a,c),disabled:this.isDisabled(a),current:0===this.compare(a,new Date)}},this.isDisabled=function(c){return this.minDate&&this.compare(c,this.minDate)<0||this.maxDate&&this.compare(c,this.maxDate)>0||b.dateDisabled&&a.dateDisabled({date:c,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},a.select=function(b){if(a.datepickerMode===i.minMode){var c=j.$modelValue?new Date(j.$modelValue):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),j.$setViewValue(c),j.$render()}else i.activeDate=b,a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)-1]},a.move=function(a){var b=i.activeDate.getFullYear()+a*(i.step.years||0),c=i.activeDate.getMonth()+a*(i.step.months||0);i.activeDate.setFullYear(b,c,1),i.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===i.maxMode&&1===b||a.datepickerMode===i.minMode&&-1===b||(a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)+b])},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var k=function(){e(function(){i.element[0].focus()},0,!1)};a.$on("datepicker.focus",k),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey)if(b.preventDefault(),b.stopPropagation(),"enter"===c||"space"===c){if(i.isDisabled(i.activeDate))return;a.select(i.activeDate),k()}else!b.ctrlKey||"up"!==c&&"down"!==c?(i.handleKeyDown(c,b),i.refreshView()):(a.toggleMode("up"===c?1:-1),k())}}]).directive("datepicker",function(){return{restrict:"EA",replace:!0,templateUrl:"template/datepicker/datepicker.html",scope:{datepickerMode:"=?",dateDisabled:"&"},require:["datepicker","?^ngModel"],controller:"DatepickerController",link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f)}}}).directive("daypicker",["dateFilter",function(a){return{restrict:"EA",replace:!0,templateUrl:"template/datepicker/day.html",require:"^datepicker",link:function(b,c,d,e){function f(a,b){return 1!==b||a%4!==0||a%100===0&&a%400!==0?i[b]:29}function g(a,b){var c=new Array(b),d=new Date(a),e=0;for(d.setHours(12);b>e;)c[e++]=new Date(d),d.setDate(d.getDate()+1);return c}function h(a){var b=new Date(a);b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1}b.showWeeks=e.showWeeks,e.step={months:1},e.element=c;var i=[31,28,31,30,31,30,31,31,30,31,30,31];e._refreshView=function(){var c=e.activeDate.getFullYear(),d=e.activeDate.getMonth(),f=new Date(c,d,1),i=e.startingDay-f.getDay(),j=i>0?7-i:-i,k=new Date(f);j>0&&k.setDate(-j+1);for(var l=g(k,42),m=0;42>m;m++)l[m]=angular.extend(e.createDateObject(l[m],e.formatDay),{secondary:l[m].getMonth()!==d,uid:b.uniqueId+"-"+m});b.labels=new Array(7);for(var n=0;7>n;n++)b.labels[n]={abbr:a(l[n].date,e.formatDayHeader),full:a(l[n].date,"EEEE")};if(b.title=a(e.activeDate,e.formatDayTitle),b.rows=e.split(l,7),b.showWeeks){b.weekNumbers=[];for(var o=h(b.rows[0][0].date),p=b.rows.length;b.weekNumbers.push(o++)f;f++)c[f]=angular.extend(e.createDateObject(new Date(d,f,1),e.formatMonth),{uid:b.uniqueId+"-"+f});b.title=a(e.activeDate,e.formatMonthTitle),b.rows=e.split(c,3)},e.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth())-new Date(b.getFullYear(),b.getMonth())},e.handleKeyDown=function(a){var b=e.activeDate.getMonth();if("left"===a)b-=1;else if("up"===a)b-=3;else if("right"===a)b+=1;else if("down"===a)b+=3;else if("pageup"===a||"pagedown"===a){var c=e.activeDate.getFullYear()+("pageup"===a?-1:1);e.activeDate.setFullYear(c)}else"home"===a?b=0:"end"===a&&(b=11);e.activeDate.setMonth(b)},e.refreshView()}}}]).directive("yearpicker",["dateFilter",function(){return{restrict:"EA",replace:!0,templateUrl:"template/datepicker/year.html",require:"^datepicker",link:function(a,b,c,d){function e(a){return parseInt((a-1)/f,10)*f+1}var f=d.yearRange;d.step={years:f},d.element=b,d._refreshView=function(){for(var b=new Array(f),c=0,g=e(d.activeDate.getFullYear());f>c;c++)b[c]=angular.extend(d.createDateObject(new Date(g+c,0,1),d.formatYear),{uid:a.uniqueId+"-"+c});a.title=[b[0].label,b[f-1].label].join(" - "),a.rows=d.split(b,5)},d.compare=function(a,b){return a.getFullYear()-b.getFullYear()},d.handleKeyDown=function(a){var b=d.activeDate.getFullYear();"left"===a?b-=1:"up"===a?b-=5:"right"===a?b+=1:"down"===a?b+=5:"pageup"===a||"pagedown"===a?b+=("pageup"===a?-1:1)*d.step.years:"home"===a?b=e(d.activeDate.getFullYear()):"end"===a&&(b=e(d.activeDate.getFullYear())+f-1),d.activeDate.setFullYear(b)},d.refreshView()}}}]).constant("datepickerPopupConfig",{datepickerPopup:"yyyy-MM-dd",currentText:"Today",clearText:"Clear",closeText:"Done",closeOnDateSelection:!0,appendToBody:!1,showButtonBar:!0}).directive("datepickerPopup",["$compile","$parse","$document","$position","dateFilter","dateParser","datepickerPopupConfig",function(a,b,c,d,e,f,g){return{restrict:"EA",require:"ngModel",scope:{isOpen:"=?",currentText:"@",clearText:"@",closeText:"@",dateDisabled:"&"},link:function(h,i,j,k){function l(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}function m(a){if(a){if(angular.isDate(a)&&!isNaN(a))return k.$setValidity("date",!0),a;if(angular.isString(a)){var b=f.parse(a,n)||new Date(a);return isNaN(b)?void k.$setValidity("date",!1):(k.$setValidity("date",!0),b)}return void k.$setValidity("date",!1)}return k.$setValidity("date",!0),null}var n,o=angular.isDefined(j.closeOnDateSelection)?h.$parent.$eval(j.closeOnDateSelection):g.closeOnDateSelection,p=angular.isDefined(j.datepickerAppendToBody)?h.$parent.$eval(j.datepickerAppendToBody):g.appendToBody;h.showButtonBar=angular.isDefined(j.showButtonBar)?h.$parent.$eval(j.showButtonBar):g.showButtonBar,h.getText=function(a){return h[a+"Text"]||g[a+"Text"]},j.$observe("datepickerPopup",function(a){n=a||g.datepickerPopup,k.$render()});var q=angular.element("
");q.attr({"ng-model":"date","ng-change":"dateSelection()"});var r=angular.element(q.children()[0]);j.datepickerOptions&&angular.forEach(h.$parent.$eval(j.datepickerOptions),function(a,b){r.attr(l(b),a)}),h.watchData={},angular.forEach(["minDate","maxDate","datepickerMode"],function(a){if(j[a]){var c=b(j[a]);if(h.$parent.$watch(c,function(b){h.watchData[a]=b}),r.attr(l(a),"watchData."+a),"datepickerMode"===a){var d=c.assign;h.$watch("watchData."+a,function(a,b){a!==b&&d(h.$parent,a)})}}}),j.dateDisabled&&r.attr("date-disabled","dateDisabled({ date: date, mode: mode })"),k.$parsers.unshift(m),h.dateSelection=function(a){angular.isDefined(a)&&(h.date=a),k.$setViewValue(h.date),k.$render(),o&&(h.isOpen=!1,i[0].focus())},i.bind("input change keyup",function(){h.$apply(function(){h.date=k.$modelValue})}),k.$render=function(){var a=k.$viewValue?e(k.$viewValue,n):"";i.val(a),h.date=m(k.$modelValue)};var s=function(a){h.isOpen&&a.target!==i[0]&&h.$apply(function(){h.isOpen=!1})},t=function(a){h.keydown(a)};i.bind("keydown",t),h.keydown=function(a){27===a.which?(a.preventDefault(),a.stopPropagation(),h.close()):40!==a.which||h.isOpen||(h.isOpen=!0)},h.$watch("isOpen",function(a){a?(h.$broadcast("datepicker.focus"),h.position=p?d.offset(i):d.position(i),h.position.top=h.position.top+i.prop("offsetHeight"),c.bind("click",s)):c.unbind("click",s)}),h.select=function(a){if("today"===a){var b=new Date;angular.isDate(k.$modelValue)?(a=new Date(k.$modelValue),a.setFullYear(b.getFullYear(),b.getMonth(),b.getDate())):a=new Date(b.setHours(0,0,0,0))}h.dateSelection(a)},h.close=function(){h.isOpen=!1,i[0].focus()};var u=a(q)(h);q.remove(),p?c.find("body").append(u):i.after(u),h.$on("$destroy",function(){u.remove(),i.unbind("keydown",t),c.unbind("click",s)})}}}]).directive("datepickerPopupWrap",function(){return{restrict:"EA",replace:!0,transclude:!0,templateUrl:"template/datepicker/popup.html",link:function(a,b){b.bind("click",function(a){a.preventDefault(),a.stopPropagation()})}}}),angular.module("ui.bootstrap.dropdown",[]).constant("dropdownConfig",{openClass:"open"}).service("dropdownService",["$document",function(a){var b=null;this.open=function(e){b||(a.bind("click",c),a.bind("keydown",d)),b&&b!==e&&(b.isOpen=!1),b=e},this.close=function(e){b===e&&(b=null,a.unbind("click",c),a.unbind("keydown",d))};var c=function(a){if(b){var c=b.getToggleElement();a&&c&&c[0].contains(a.target)||b.$apply(function(){b.isOpen=!1})}},d=function(a){27===a.which&&(b.focusToggleElement(),c())}}]).controller("DropdownController",["$scope","$attrs","$parse","dropdownConfig","dropdownService","$animate",function(a,b,c,d,e,f){var g,h=this,i=a.$new(),j=d.openClass,k=angular.noop,l=b.onToggle?c(b.onToggle):angular.noop;this.init=function(d){h.$element=d,b.isOpen&&(g=c(b.isOpen),k=g.assign,a.$watch(g,function(a){i.isOpen=!!a}))},this.toggle=function(a){return i.isOpen=arguments.length?!!a:!i.isOpen},this.isOpen=function(){return i.isOpen},i.getToggleElement=function(){return h.toggleElement},i.focusToggleElement=function(){h.toggleElement&&h.toggleElement[0].focus()},i.$watch("isOpen",function(b,c){f[b?"addClass":"removeClass"](h.$element,j),b?(i.focusToggleElement(),e.open(i)):e.close(i),k(a,b),angular.isDefined(b)&&b!==c&&l(a,{open:!!b})}),a.$on("$locationChangeSuccess",function(){i.isOpen=!1}),a.$on("$destroy",function(){i.$destroy()})}]).directive("dropdown",function(){return{controller:"DropdownController",link:function(a,b,c,d){d.init(b)}}}).directive("dropdownToggle",function(){return{require:"?^dropdown",link:function(a,b,c,d){if(d){d.toggleElement=b;var e=function(e){e.preventDefault(),b.hasClass("disabled")||c.disabled||a.$apply(function(){d.toggle()})};b.bind("click",e),b.attr({"aria-haspopup":!0,"aria-expanded":!1}),a.$watch(d.isOpen,function(a){b.attr("aria-expanded",!!a)}),a.$on("$destroy",function(){b.unbind("click",e)})}}}}),angular.module("ui.bootstrap.modal",["ui.bootstrap.transition"]).factory("$$stackedMap",function(){return{createNew:function(){var a=[];return{add:function(b,c){a.push({key:b,value:c})},get:function(b){for(var c=0;c0),i()})}function i(){if(k&&-1==g()){var a=l;j(k,l,150,function(){a.$destroy(),a=null}),k=void 0,l=void 0}}function j(c,d,e,f){function g(){g.done||(g.done=!0,c.remove(),f&&f())}d.animate=!1;var h=a.transitionEndEventName;if(h){var i=b(g,e);c.bind(h,function(){b.cancel(i),g(),d.$apply()})}else b(g)}var k,l,m="modal-open",n=f.createNew(),o={};return e.$watch(g,function(a){l&&(l.index=a)}),c.bind("keydown",function(a){var b;27===a.which&&(b=n.top(),b&&b.value.keyboard&&(a.preventDefault(),e.$apply(function(){o.dismiss(b.key,"escape key press")})))}),o.open=function(a,b){n.add(a,{deferred:b.deferred,modalScope:b.scope,backdrop:b.backdrop,keyboard:b.keyboard});var f=c.find("body").eq(0),h=g();if(h>=0&&!k){l=e.$new(!0),l.index=h;var i=angular.element("
");i.attr("backdrop-class",b.backdropClass),k=d(i)(l),f.append(k)}var j=angular.element("
");j.attr({"template-url":b.windowTemplateUrl,"window-class":b.windowClass,size:b.size,index:n.length()-1,animate:"animate"}).html(b.content);var o=d(j)(b.scope);n.top().value.modalDomEl=o,f.append(o),f.addClass(m)},o.close=function(a,b){var c=n.get(a);c&&(c.value.deferred.resolve(b),h(a))},o.dismiss=function(a,b){var c=n.get(a);c&&(c.value.deferred.reject(b),h(a))},o.dismissAll=function(a){for(var b=this.getTop();b;)this.dismiss(b.key,a),b=this.getTop()},o.getTop=function(){return n.top()},o}]).provider("$modal",function(){var a={options:{backdrop:!0,keyboard:!0},$get:["$injector","$rootScope","$q","$http","$templateCache","$controller","$modalStack",function(b,c,d,e,f,g,h){function i(a){return a.template?d.when(a.template):e.get(angular.isFunction(a.templateUrl)?a.templateUrl():a.templateUrl,{cache:f}).then(function(a){return a.data})}function j(a){var c=[];return angular.forEach(a,function(a){(angular.isFunction(a)||angular.isArray(a))&&c.push(d.when(b.invoke(a)))}),c}var k={};return k.open=function(b){var e=d.defer(),f=d.defer(),k={result:e.promise,opened:f.promise,close:function(a){h.close(k,a)},dismiss:function(a){h.dismiss(k,a)}};if(b=angular.extend({},a.options,b),b.resolve=b.resolve||{},!b.template&&!b.templateUrl)throw new Error("One of template or templateUrl options is required.");var l=d.all([i(b)].concat(j(b.resolve)));return l.then(function(a){var d=(b.scope||c).$new();d.$close=k.close,d.$dismiss=k.dismiss;var f,i={},j=1;b.controller&&(i.$scope=d,i.$modalInstance=k,angular.forEach(b.resolve,function(b,c){i[c]=a[j++]}),f=g(b.controller,i),b.controllerAs&&(d[b.controllerAs]=f)),h.open(k,{scope:d,deferred:e,content:a[0],backdrop:b.backdrop,keyboard:b.keyboard,backdropClass:b.backdropClass,windowClass:b.windowClass,windowTemplateUrl:b.windowTemplateUrl,size:b.size})},function(a){e.reject(a)}),l.then(function(){f.resolve(!0)},function(){f.reject(!1)}),k},k}]};return a}),angular.module("ui.bootstrap.pagination",[]).controller("PaginationController",["$scope","$attrs","$parse",function(a,b,c){var d=this,e={$setViewValue:angular.noop},f=b.numPages?c(b.numPages).assign:angular.noop;this.init=function(f,g){e=f,this.config=g,e.$render=function(){d.render()},b.itemsPerPage?a.$parent.$watch(c(b.itemsPerPage),function(b){d.itemsPerPage=parseInt(b,10),a.totalPages=d.calculateTotalPages()}):this.itemsPerPage=g.itemsPerPage},this.calculateTotalPages=function(){var b=this.itemsPerPage<1?1:Math.ceil(a.totalItems/this.itemsPerPage);return Math.max(b||0,1)},this.render=function(){a.page=parseInt(e.$viewValue,10)||1},a.selectPage=function(b){a.page!==b&&b>0&&b<=a.totalPages&&(e.$setViewValue(b),e.$render())},a.getText=function(b){return a[b+"Text"]||d.config[b+"Text"]},a.noPrevious=function(){return 1===a.page},a.noNext=function(){return a.page===a.totalPages},a.$watch("totalItems",function(){a.totalPages=d.calculateTotalPages()}),a.$watch("totalPages",function(b){f(a.$parent,b),a.page>b?a.selectPage(b):e.$render()})}]).constant("paginationConfig",{itemsPerPage:10,boundaryLinks:!1,directionLinks:!0,firstText:"First",previousText:"Previous",nextText:"Next",lastText:"Last",rotate:!0}).directive("pagination",["$parse","paginationConfig",function(a,b){return{restrict:"EA",scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@"},require:["pagination","?ngModel"],controller:"PaginationController",templateUrl:"template/pagination/pagination.html",replace:!0,link:function(c,d,e,f){function g(a,b,c){return{number:a,text:b,active:c}}function h(a,b){var c=[],d=1,e=b,f=angular.isDefined(k)&&b>k;f&&(l?(d=Math.max(a-Math.floor(k/2),1),e=d+k-1,e>b&&(e=b,d=e-k+1)):(d=(Math.ceil(a/k)-1)*k+1,e=Math.min(d+k-1,b)));for(var h=d;e>=h;h++){var i=g(h,h,h===a);c.push(i)}if(f&&!l){if(d>1){var j=g(d-1,"...",!1);c.unshift(j)}if(b>e){var m=g(e+1,"...",!1);c.push(m)}}return c}var i=f[0],j=f[1];if(j){var k=angular.isDefined(e.maxSize)?c.$parent.$eval(e.maxSize):b.maxSize,l=angular.isDefined(e.rotate)?c.$parent.$eval(e.rotate):b.rotate;c.boundaryLinks=angular.isDefined(e.boundaryLinks)?c.$parent.$eval(e.boundaryLinks):b.boundaryLinks,c.directionLinks=angular.isDefined(e.directionLinks)?c.$parent.$eval(e.directionLinks):b.directionLinks,i.init(j,b),e.maxSize&&c.$parent.$watch(a(e.maxSize),function(a){k=parseInt(a,10),i.render() -});var m=i.render;i.render=function(){m(),c.page>0&&c.page<=c.totalPages&&(c.pages=h(c.page,c.totalPages))}}}}}]).constant("pagerConfig",{itemsPerPage:10,previousText:"« Previous",nextText:"Next »",align:!0}).directive("pager",["pagerConfig",function(a){return{restrict:"EA",scope:{totalItems:"=",previousText:"@",nextText:"@"},require:["pager","?ngModel"],controller:"PaginationController",templateUrl:"template/pagination/pager.html",replace:!0,link:function(b,c,d,e){var f=e[0],g=e[1];g&&(b.align=angular.isDefined(d.align)?b.$parent.$eval(d.align):a.align,f.init(g,a))}}}]),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.bindHtml"]).provider("$tooltip",function(){function a(a){var b=/[A-Z]/g,c="-";return a.replace(b,function(a,b){return(b?c:"")+a.toLowerCase()})}var b={placement:"top",animation:!0,popupDelay:0},c={mouseenter:"mouseleave",click:"click",focus:"blur"},d={};this.options=function(a){angular.extend(d,a)},this.setTriggers=function(a){angular.extend(c,a)},this.$get=["$window","$compile","$timeout","$document","$position","$interpolate",function(e,f,g,h,i,j){return function(e,k,l){function m(a){var b=a||n.trigger||l,d=c[b]||b;return{show:b,hide:d}}var n=angular.extend({},b,d),o=a(e),p=j.startSymbol(),q=j.endSymbol(),r="
';return{restrict:"EA",compile:function(){var a=f(r);return function(b,c,d){function f(){D.isOpen?l():j()}function j(){(!C||b.$eval(d[k+"Enable"]))&&(s(),D.popupDelay?z||(z=g(o,D.popupDelay,!1),z.then(function(a){a()})):o()())}function l(){b.$apply(function(){p()})}function o(){return z=null,y&&(g.cancel(y),y=null),D.content?(q(),w.css({top:0,left:0,display:"block"}),D.$digest(),E(),D.isOpen=!0,D.$digest(),E):angular.noop}function p(){D.isOpen=!1,g.cancel(z),z=null,D.animation?y||(y=g(r,500)):r()}function q(){w&&r(),x=D.$new(),w=a(x,function(a){A?h.find("body").append(a):c.after(a)})}function r(){y=null,w&&(w.remove(),w=null),x&&(x.$destroy(),x=null)}function s(){t(),u()}function t(){var a=d[k+"Placement"];D.placement=angular.isDefined(a)?a:n.placement}function u(){var a=d[k+"PopupDelay"],b=parseInt(a,10);D.popupDelay=isNaN(b)?n.popupDelay:b}function v(){var a=d[k+"Trigger"];F(),B=m(a),B.show===B.hide?c.bind(B.show,f):(c.bind(B.show,j),c.bind(B.hide,l))}var w,x,y,z,A=angular.isDefined(n.appendToBody)?n.appendToBody:!1,B=m(void 0),C=angular.isDefined(d[k+"Enable"]),D=b.$new(!0),E=function(){var a=i.positionElements(c,w,D.placement,A);a.top+="px",a.left+="px",w.css(a)};D.isOpen=!1,d.$observe(e,function(a){D.content=a,!a&&D.isOpen&&p()}),d.$observe(k+"Title",function(a){D.title=a});var F=function(){c.unbind(B.show,j),c.unbind(B.hide,l)};v();var G=b.$eval(d[k+"Animation"]);D.animation=angular.isDefined(G)?!!G:n.animation;var H=b.$eval(d[k+"AppendToBody"]);A=angular.isDefined(H)?H:A,A&&b.$on("$locationChangeSuccess",function(){D.isOpen&&p()}),b.$on("$destroy",function(){g.cancel(y),g.cancel(z),F(),r(),D=null})}}}}}]}).directive("tooltipPopup",function(){return{restrict:"EA",replace:!0,scope:{content:"@",placement:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html"}}).directive("tooltip",["$tooltip",function(a){return a("tooltip","tooltip","mouseenter")}]).directive("tooltipHtmlUnsafePopup",function(){return{restrict:"EA",replace:!0,scope:{content:"@",placement:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-unsafe-popup.html"}}).directive("tooltipHtmlUnsafe",["$tooltip",function(a){return a("tooltipHtmlUnsafe","tooltip","mouseenter")}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("popoverPopup",function(){return{restrict:"EA",replace:!0,scope:{title:"@",content:"@",placement:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover.html"}}).directive("popover",["$tooltip",function(a){return a("popover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("progressConfig",{animate:!0,max:100}).controller("ProgressController",["$scope","$attrs","progressConfig",function(a,b,c){var d=this,e=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=angular.isDefined(b.max)?a.$parent.$eval(b.max):c.max,this.addBar=function(b,c){e||c.css({transition:"none"}),this.bars.push(b),b.$watch("value",function(c){b.percent=+(100*c/a.max).toFixed(2)}),b.$on("$destroy",function(){c=null,d.removeBar(b)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1)}}]).directive("progress",function(){return{restrict:"EA",replace:!0,transclude:!0,controller:"ProgressController",require:"progress",scope:{},templateUrl:"template/progressbar/progress.html"}}).directive("bar",function(){return{restrict:"EA",replace:!0,transclude:!0,require:"^progress",scope:{value:"=",type:"@"},templateUrl:"template/progressbar/bar.html",link:function(a,b,c,d){d.addBar(a,b)}}}).directive("progressbar",function(){return{restrict:"EA",replace:!0,transclude:!0,controller:"ProgressController",scope:{value:"=",type:"@"},templateUrl:"template/progressbar/progressbar.html",link:function(a,b,c,d){d.addBar(a,angular.element(b.children()[0]))}}}),angular.module("ui.bootstrap.rating",[]).constant("ratingConfig",{max:5,stateOn:null,stateOff:null}).controller("RatingController",["$scope","$attrs","ratingConfig",function(a,b,c){var d={$setViewValue:angular.noop};this.init=function(e){d=e,d.$render=this.render,this.stateOn=angular.isDefined(b.stateOn)?a.$parent.$eval(b.stateOn):c.stateOn,this.stateOff=angular.isDefined(b.stateOff)?a.$parent.$eval(b.stateOff):c.stateOff;var f=angular.isDefined(b.ratingStates)?a.$parent.$eval(b.ratingStates):new Array(angular.isDefined(b.max)?a.$parent.$eval(b.max):c.max);a.range=this.buildTemplateObjects(f)},this.buildTemplateObjects=function(a){for(var b=0,c=a.length;c>b;b++)a[b]=angular.extend({index:b},{stateOn:this.stateOn,stateOff:this.stateOff},a[b]);return a},a.rate=function(b){!a.readonly&&b>=0&&b<=a.range.length&&(d.$setViewValue(b),d.$render())},a.enter=function(b){a.readonly||(a.value=b),a.onHover({value:b})},a.reset=function(){a.value=d.$viewValue,a.onLeave()},a.onKeydown=function(b){/(37|38|39|40)/.test(b.which)&&(b.preventDefault(),b.stopPropagation(),a.rate(a.value+(38===b.which||39===b.which?1:-1)))},this.render=function(){a.value=d.$viewValue}}]).directive("rating",function(){return{restrict:"EA",require:["rating","ngModel"],scope:{readonly:"=?",onHover:"&",onLeave:"&"},controller:"RatingController",templateUrl:"template/rating/rating.html",replace:!0,link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f)}}}),angular.module("ui.bootstrap.tabs",[]).controller("TabsetController",["$scope",function(a){var b=this,c=b.tabs=a.tabs=[];b.select=function(a){angular.forEach(c,function(b){b.active&&b!==a&&(b.active=!1,b.onDeselect())}),a.active=!0,a.onSelect()},b.addTab=function(a){c.push(a),1===c.length?a.active=!0:a.active&&b.select(a)},b.removeTab=function(a){var e=c.indexOf(a);if(a.active&&c.length>1&&!d){var f=e==c.length-1?e-1:e+1;b.select(c[f])}c.splice(e,1)};var d;a.$on("$destroy",function(){d=!0})}]).directive("tabset",function(){return{restrict:"EA",transclude:!0,replace:!0,scope:{type:"@"},controller:"TabsetController",templateUrl:"template/tabs/tabset.html",link:function(a,b,c){a.vertical=angular.isDefined(c.vertical)?a.$parent.$eval(c.vertical):!1,a.justified=angular.isDefined(c.justified)?a.$parent.$eval(c.justified):!1}}}).directive("tab",["$parse",function(a){return{require:"^tabset",restrict:"EA",replace:!0,templateUrl:"template/tabs/tab.html",transclude:!0,scope:{active:"=?",heading:"@",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},compile:function(b,c,d){return function(b,c,e,f){b.$watch("active",function(a){a&&f.select(b)}),b.disabled=!1,e.disabled&&b.$parent.$watch(a(e.disabled),function(a){b.disabled=!!a}),b.select=function(){b.disabled||(b.active=!0)},f.addTab(b),b.$on("$destroy",function(){f.removeTab(b)}),b.$transcludeFn=d}}}}]).directive("tabHeadingTransclude",[function(){return{restrict:"A",require:"^tab",link:function(a,b){a.$watch("headingElement",function(a){a&&(b.html(""),b.append(a))})}}}]).directive("tabContentTransclude",function(){function a(a){return a.tagName&&(a.hasAttribute("tab-heading")||a.hasAttribute("data-tab-heading")||"tab-heading"===a.tagName.toLowerCase()||"data-tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:"^tabset",link:function(b,c,d){var e=b.$eval(d.tabContentTransclude);e.$transcludeFn(e.$parent,function(b){angular.forEach(b,function(b){a(b)?e.headingElement=b:c.append(b)})})}}}),angular.module("ui.bootstrap.timepicker",[]).constant("timepickerConfig",{hourStep:1,minuteStep:1,showMeridian:!0,meridians:null,readonlyInput:!1,mousewheel:!0}).controller("TimepickerController",["$scope","$attrs","$parse","$log","$locale","timepickerConfig",function(a,b,c,d,e,f){function g(){var b=parseInt(a.hours,10),c=a.showMeridian?b>0&&13>b:b>=0&&24>b;return c?(a.showMeridian&&(12===b&&(b=0),a.meridian===p[1]&&(b+=12)),b):void 0}function h(){var b=parseInt(a.minutes,10);return b>=0&&60>b?b:void 0}function i(a){return angular.isDefined(a)&&a.toString().length<2?"0"+a:a}function j(a){k(),o.$setViewValue(new Date(n)),l(a)}function k(){o.$setValidity("time",!0),a.invalidHours=!1,a.invalidMinutes=!1}function l(b){var c=n.getHours(),d=n.getMinutes();a.showMeridian&&(c=0===c||12===c?12:c%12),a.hours="h"===b?c:i(c),a.minutes="m"===b?d:i(d),a.meridian=n.getHours()<12?p[0]:p[1]}function m(a){var b=new Date(n.getTime()+6e4*a);n.setHours(b.getHours(),b.getMinutes()),j()}var n=new Date,o={$setViewValue:angular.noop},p=angular.isDefined(b.meridians)?a.$parent.$eval(b.meridians):f.meridians||e.DATETIME_FORMATS.AMPMS;this.init=function(c,d){o=c,o.$render=this.render;var e=d.eq(0),g=d.eq(1),h=angular.isDefined(b.mousewheel)?a.$parent.$eval(b.mousewheel):f.mousewheel;h&&this.setupMousewheelEvents(e,g),a.readonlyInput=angular.isDefined(b.readonlyInput)?a.$parent.$eval(b.readonlyInput):f.readonlyInput,this.setupInputEvents(e,g)};var q=f.hourStep;b.hourStep&&a.$parent.$watch(c(b.hourStep),function(a){q=parseInt(a,10)});var r=f.minuteStep;b.minuteStep&&a.$parent.$watch(c(b.minuteStep),function(a){r=parseInt(a,10)}),a.showMeridian=f.showMeridian,b.showMeridian&&a.$parent.$watch(c(b.showMeridian),function(b){if(a.showMeridian=!!b,o.$error.time){var c=g(),d=h();angular.isDefined(c)&&angular.isDefined(d)&&(n.setHours(c),j())}else l()}),this.setupMousewheelEvents=function(b,c){var d=function(a){a.originalEvent&&(a=a.originalEvent);var b=a.wheelDelta?a.wheelDelta:-a.deltaY;return a.detail||b>0};b.bind("mousewheel wheel",function(b){a.$apply(d(b)?a.incrementHours():a.decrementHours()),b.preventDefault()}),c.bind("mousewheel wheel",function(b){a.$apply(d(b)?a.incrementMinutes():a.decrementMinutes()),b.preventDefault()})},this.setupInputEvents=function(b,c){if(a.readonlyInput)return a.updateHours=angular.noop,void(a.updateMinutes=angular.noop);var d=function(b,c){o.$setViewValue(null),o.$setValidity("time",!1),angular.isDefined(b)&&(a.invalidHours=b),angular.isDefined(c)&&(a.invalidMinutes=c)};a.updateHours=function(){var a=g();angular.isDefined(a)?(n.setHours(a),j("h")):d(!0)},b.bind("blur",function(){!a.invalidHours&&a.hours<10&&a.$apply(function(){a.hours=i(a.hours)})}),a.updateMinutes=function(){var a=h();angular.isDefined(a)?(n.setMinutes(a),j("m")):d(void 0,!0)},c.bind("blur",function(){!a.invalidMinutes&&a.minutes<10&&a.$apply(function(){a.minutes=i(a.minutes)})})},this.render=function(){var a=o.$modelValue?new Date(o.$modelValue):null;isNaN(a)?(o.$setValidity("time",!1),d.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(a&&(n=a),k(),l())},a.incrementHours=function(){m(60*q)},a.decrementHours=function(){m(60*-q)},a.incrementMinutes=function(){m(r)},a.decrementMinutes=function(){m(-r)},a.toggleMeridian=function(){m(720*(n.getHours()<12?1:-1))}}]).directive("timepicker",function(){return{restrict:"EA",require:["timepicker","?^ngModel"],controller:"TimepickerController",replace:!0,scope:{},templateUrl:"template/timepicker/timepicker.html",link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f,b.find("input"))}}}),angular.module("ui.bootstrap.typeahead",["ui.bootstrap.position","ui.bootstrap.bindHtml"]).factory("typeaheadParser",["$parse",function(a){var b=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;return{parse:function(c){var d=c.match(b);if(!d)throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "'+c+'".');return{itemName:d[3],source:a(d[4]),viewMapper:a(d[2]||d[1]),modelMapper:a(d[1])}}}}]).directive("typeahead",["$compile","$parse","$q","$timeout","$document","$position","typeaheadParser",function(a,b,c,d,e,f,g){var h=[9,13,27,38,40];return{require:"ngModel",link:function(i,j,k,l){var m,n=i.$eval(k.typeaheadMinLength)||1,o=i.$eval(k.typeaheadWaitMs)||0,p=i.$eval(k.typeaheadEditable)!==!1,q=b(k.typeaheadLoading).assign||angular.noop,r=b(k.typeaheadOnSelect),s=k.typeaheadInputFormatter?b(k.typeaheadInputFormatter):void 0,t=k.typeaheadAppendToBody?i.$eval(k.typeaheadAppendToBody):!1,u=i.$eval(k.typeaheadFocusFirst)!==!1,v=b(k.ngModel).assign,w=g.parse(k.typeahead),x=i.$new();i.$on("$destroy",function(){x.$destroy()});var y="typeahead-"+x.$id+"-"+Math.floor(1e4*Math.random());j.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":y});var z=angular.element("
");z.attr({id:y,matches:"matches",active:"activeIdx",select:"select(activeIdx)",query:"query",position:"position"}),angular.isDefined(k.typeaheadTemplateUrl)&&z.attr("template-url",k.typeaheadTemplateUrl);var A=function(){x.matches=[],x.activeIdx=-1,j.attr("aria-expanded",!1)},B=function(a){return y+"-option-"+a};x.$watch("activeIdx",function(a){0>a?j.removeAttr("aria-activedescendant"):j.attr("aria-activedescendant",B(a))});var C=function(a){var b={$viewValue:a};q(i,!0),c.when(w.source(i,b)).then(function(c){var d=a===l.$viewValue;if(d&&m)if(c.length>0){x.activeIdx=u?0:-1,x.matches.length=0;for(var e=0;e=n?o>0?(F(),E(a)):C(a):(q(i,!1),F(),A()),p?a:a?void l.$setValidity("editable",!1):(l.$setValidity("editable",!0),a)}),l.$formatters.push(function(a){var b,c,d={};return s?(d.$model=a,s(i,d)):(d[w.itemName]=a,b=w.viewMapper(i,d),d[w.itemName]=void 0,c=w.viewMapper(i,d),b!==c?b:a)}),x.select=function(a){var b,c,e={};e[w.itemName]=c=x.matches[a].model,b=w.modelMapper(i,e),v(i,b),l.$setValidity("editable",!0),r(i,{$item:c,$model:b,$label:w.viewMapper(i,e)}),A(),d(function(){j[0].focus()},0,!1)},j.bind("keydown",function(a){0!==x.matches.length&&-1!==h.indexOf(a.which)&&(-1!=x.activeIdx||13!==a.which&&9!==a.which)&&(a.preventDefault(),40===a.which?(x.activeIdx=(x.activeIdx+1)%x.matches.length,x.$digest()):38===a.which?(x.activeIdx=(x.activeIdx>0?x.activeIdx:x.matches.length)-1,x.$digest()):13===a.which||9===a.which?x.$apply(function(){x.select(x.activeIdx)}):27===a.which&&(a.stopPropagation(),A(),x.$digest()))}),j.bind("blur",function(){m=!1});var G=function(a){j[0]!==a.target&&(A(),x.$digest())};e.bind("click",G),i.$on("$destroy",function(){e.unbind("click",G),t&&H.remove()});var H=a(z)(x);t?e.find("body").append(H):j.after(H)}}}]).directive("typeaheadPopup",function(){return{restrict:"EA",scope:{matches:"=",query:"=",active:"=",position:"=",select:"&"},replace:!0,templateUrl:"template/typeahead/typeahead-popup.html",link:function(a,b,c){a.templateUrl=c.templateUrl,a.isOpen=function(){return a.matches.length>0},a.isActive=function(b){return a.active==b},a.selectActive=function(b){a.active=b},a.selectMatch=function(b){a.select({activeIdx:b})}}}}).directive("typeaheadMatch",["$http","$templateCache","$compile","$parse",function(a,b,c,d){return{restrict:"EA",scope:{index:"=",match:"=",query:"="},link:function(e,f,g){var h=d(g.templateUrl)(e.$parent)||"template/typeahead/typeahead-match.html";a.get(h,{cache:b}).success(function(a){f.replaceWith(c(a.trim())(e))})}}}]).filter("typeaheadHighlight",function(){function a(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}return function(b,c){return c?(""+b).replace(new RegExp(a(c),"gi"),"$&"):b}}),angular.module("template/accordion/accordion-group.html",[]).run(["$templateCache",function(a){a.put("template/accordion/accordion-group.html",'
\n
\n

\n {{heading}}\n

\n
\n
\n
\n
\n
\n')}]),angular.module("template/accordion/accordion.html",[]).run(["$templateCache",function(a){a.put("template/accordion/accordion.html",'
')}]),angular.module("template/alert/alert.html",[]).run(["$templateCache",function(a){a.put("template/alert/alert.html",'\n')}]),angular.module("template/carousel/carousel.html",[]).run(["$templateCache",function(a){a.put("template/carousel/carousel.html",'\n')}]),angular.module("template/carousel/slide.html",[]).run(["$templateCache",function(a){a.put("template/carousel/slide.html","
\n")}]),angular.module("template/datepicker/datepicker.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/datepicker.html",'
\n \n \n \n
')}]),angular.module("template/datepicker/day.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/day.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{label.abbr}}
{{ weekNumbers[$index] }}\n \n
\n')}]),angular.module("template/datepicker/month.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/month.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n')}]),angular.module("template/datepicker/popup.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/popup.html",'\n')}]),angular.module("template/datepicker/year.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/year.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n')}]),angular.module("template/modal/backdrop.html",[]).run(["$templateCache",function(a){a.put("template/modal/backdrop.html",'\n')}]),angular.module("template/modal/window.html",[]).run(["$templateCache",function(a){a.put("template/modal/window.html",'')}]),angular.module("template/pagination/pager.html",[]).run(["$templateCache",function(a){a.put("template/pagination/pager.html",'')}]),angular.module("template/pagination/pagination.html",[]).run(["$templateCache",function(a){a.put("template/pagination/pagination.html",'')}]),angular.module("template/tooltip/tooltip-html-unsafe-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-html-unsafe-popup.html",'
\n
\n
\n
\n')}]),angular.module("template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-popup.html",'
\n
\n
\n
\n')}]),angular.module("template/popover/popover.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover.html",'
\n
\n\n
\n

\n
\n
\n
\n')}]),angular.module("template/progressbar/bar.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/bar.html",'
')}]),angular.module("template/progressbar/progress.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/progress.html",'
')}]),angular.module("template/progressbar/progressbar.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/progressbar.html",'
\n
\n
')}]),angular.module("template/rating/rating.html",[]).run(["$templateCache",function(a){a.put("template/rating/rating.html",'\n \n ({{ $index < value ? \'*\' : \' \' }})\n \n')}]),angular.module("template/tabs/tab.html",[]).run(["$templateCache",function(a){a.put("template/tabs/tab.html",'
  • \n {{heading}}\n
  • \n')}]),angular.module("template/tabs/tabset.html",[]).run(["$templateCache",function(a){a.put("template/tabs/tabset.html",'
    \n \n
    \n
    \n
    \n
    \n
    \n')}]),angular.module("template/timepicker/timepicker.html",[]).run(["$templateCache",function(a){a.put("template/timepicker/timepicker.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
     
    \n \n :\n \n
     
    \n')}]),angular.module("template/typeahead/typeahead-match.html",[]).run(["$templateCache",function(a){a.put("template/typeahead/typeahead-match.html",'') -}]),angular.module("template/typeahead/typeahead-popup.html",[]).run(["$templateCache",function(a){a.put("template/typeahead/typeahead-popup.html",'\n')}]); \ No newline at end of file diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/angular-ui-codemirror/ui-codemirror.min.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/angular-ui-codemirror/ui-codemirror.min.js deleted file mode 100644 index aaa8fe8..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/angular-ui-codemirror/ui-codemirror.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * angular-ui-codemirror - This directive allows you to add CodeMirror to your textarea elements. - * @version v0.2.3 - 2015-01-27 - * @link http://angular-ui.github.com - * @license MIT - */ -"use strict";function uiCodemirrorDirective(a,b){function c(a,c,h,i){var j=angular.extend({value:c.text()},b.codemirror||{},a.$eval(h.uiCodemirror),a.$eval(h.uiCodemirrorOpts)),k=d(c,j);e(k,h.uiCodemirror||h.uiCodemirrorOpts,a),f(k,i,a),g(k,h.uiRefresh,a),a.$on("CodeMirror",function(a,b){if(!angular.isFunction(b))throw new Error("the CodeMirror event requires a callback function");b(k)}),angular.isFunction(j.onLoad)&&j.onLoad(k)}function d(a,b){var c;return"TEXTAREA"===a[0].tagName?c=window.CodeMirror.fromTextArea(a[0],b):(a.html(""),c=new window.CodeMirror(function(b){a.append(b)},b)),c}function e(a,b,c){function d(b,c){angular.isObject(b)&&e.forEach(function(d){if(b.hasOwnProperty(d)){if(c&&b[d]===c[d])return;a.setOption(d,b[d])}})}if(b){var e=Object.keys(window.CodeMirror.defaults);c.$watch(b,d,!0)}}function f(a,b,c){b&&(b.$formatters.push(function(a){if(angular.isUndefined(a)||null===a)return"";if(angular.isObject(a)||angular.isArray(a))throw new Error("ui-codemirror cannot use an object or an array as a model");return a}),b.$render=function(){var c=b.$viewValue||"";a.setValue(c)},a.on("change",function(a){var d=a.getValue();d!==b.$viewValue&&c.$evalAsync(function(){b.$setViewValue(d)})}))}function g(b,c,d){c&&d.$watch(c,function(c,d){c!==d&&a(function(){b.refresh()})})}return{restrict:"EA",require:"?ngModel",compile:function(){if(angular.isUndefined(window.CodeMirror))throw new Error("ui-codemirror need CodeMirror to work... (o rly?)");return c}}}angular.module("ui.codemirror",[]).constant("uiCodemirrorConfig",{}).directive("uiCodemirror",uiCodemirrorDirective),uiCodemirrorDirective.$inject=["$timeout","uiCodemirrorConfig"]; \ No newline at end of file diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/angular/angular.min.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/angular/angular.min.js deleted file mode 100644 index 8dcf6e0..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/angular/angular.min.js +++ /dev/null @@ -1,253 +0,0 @@ -/* - AngularJS v1.3.20 - (c) 2010-2014 Google, Inc. http://angularjs.org - License: MIT -*/ -(function(R,W,u){'use strict';function S(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.3.20/"+(b?b+"/":"")+a;for(a=1;a").append(b).html();try{return b[0].nodeType===bb?K(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+K(b)})}catch(d){return K(c)}}function qc(b){try{return decodeURIComponent(b)}catch(a){}} -function rc(b){var a={},c,d;r((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=qc(c[0]),y(d)&&(b=y(c[1])?qc(c[1]):!0,sc.call(a,d)?H(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Pb(b){var a=[];r(b,function(b,d){H(b)?r(b,function(b){a.push(Ea(d,!0)+(!0===b?"":"="+Ea(b,!0)))}):a.push(Ea(d,!0)+(!0===b?"":"="+Ea(b,!0)))});return a.length?a.join("&"):""}function sb(b){return Ea(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Ea(b,a){return encodeURIComponent(b).replace(/%40/gi, -"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Id(b,a){var c,d,e=tb.length;b=B(b);for(d=0;d/,">"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=cb(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector", -d);c(b)(a)})}]);return d},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;R&&e.test(R.name)&&(c.debugInfoEnabled=!0,R.name=R.name.replace(e,""));if(R&&!f.test(R.name))return d();R.name=R.name.replace(f,"");ca.resumeBootstrap=function(b){r(b,function(b){a.push(b)});return d()};z(ca.resumeDeferredBootstrap)&&ca.resumeDeferredBootstrap()}function Kd(){R.name="NG_ENABLE_DEBUG_INFO!"+R.name;R.location.reload()}function Ld(b){b=ca.element(b).injector();if(!b)throw Ja("test");return b.get("$$testability")} -function uc(b,a){a=a||"_";return b.replace(Md,function(b,d){return(d?a:"")+b.toLowerCase()})}function Nd(){var b;vc||((ta=R.jQuery)&&ta.fn.on?(B=ta,w(ta.fn,{scope:Ka.scope,isolateScope:Ka.isolateScope,controller:Ka.controller,injector:Ka.injector,inheritedData:Ka.inheritedData}),b=ta.cleanData,ta.cleanData=function(a){var c;if(Qb)Qb=!1;else for(var d=0,e;null!=(e=a[d]);d++)(c=ta._data(e,"events"))&&c.$destroy&&ta(e).triggerHandler("$destroy");b(a)}):B=T,ca.element=B,vc=!0)}function Rb(b,a,c){if(!b)throw Ja("areq", -a||"?",c||"required");return b}function La(b,a,c){c&&H(b)&&(b=b[b.length-1]);Rb(z(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Ma(b,a){if("hasOwnProperty"===b)throw Ja("badname",a);}function wc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g")+d[2];for(d=d[0];d--;)c=c.lastChild;f=Za(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";r(f,function(a){e.appendChild(a)}); -return e}function T(b){if(b instanceof T)return b;var a;x(b)&&(b=N(b),a=!0);if(!(this instanceof T)){if(a&&"<"!=b.charAt(0))throw Tb("nosel");return new T(b)}if(a){a=W;var c;b=(c=gf.exec(b))?[a.createElement(c[1])]:(c=Gc(b,a))?c.childNodes:[]}Hc(this,b)}function Ub(b){return b.cloneNode(!0)}function xb(b,a){a||yb(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;d 4096 bytes)!"));else{if(p.cookie!==y)for(y=p.cookie,d=y.split("; "),fa={},f=0;fk&&this.remove(q.key),b},get:function(a){if(k").parent()[0])});var f=O(a,b,a,c,d,e);G.$$addScopeClass(a); -var g=null;return function(b,c,d){Rb(b,"scope");d=d||{};var e=d.parentBoundTranscludeFn,h=d.transcludeControllers;d=d.futureParentElement;e&&e.$$boundTransclude&&(e=e.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==wa(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?B(Xb(g,B("
    ").append(a).html())):c?Ka.clone.call(a):a;if(h)for(var l in h)d.data("$"+l+"Controller",h[l].instance);G.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,e);return d}}function O(a,b,c,d,e,f){function g(a, -c,d,e){var f,l,k,q,p,s,t;if(m)for(t=Array(c.length),q=0;qJ.priority)break;if(V=J.scope)J.templateUrl||(L(V)?(Oa("new/isolated scope",Q||C,J,w),Q=J):Oa("new/isolated scope",Q,J,w)),C=C||J;da=J.name;!J.templateUrl&&J.controller&&(V=J.controller,O=O||{},Oa("'"+da+"' controller",O[da],J,w),O[da]=J);if(V=J.transclude)la=!0,J.$$tlb||(Oa("transclusion",fa,J,w),fa=J),"element"==V?(A=!0,E=J.priority,V=w,w=e.$$element=B(W.createComment(" "+da+": "+ -e[da]+" ")),d=w[0],T(g,$a.call(V,0),d),hb=G(V,f,E,l&&l.name,{nonTlbTranscludeDirective:fa})):(V=B(Ub(d)).contents(),w.empty(),hb=G(V,f));if(J.template)if(D=!0,Oa("template",na,J,w),na=J,V=z(J.template)?J.template(w,e):J.template,V=Sc(V),J.replace){l=J;V=Sb.test(V)?Tc(Xb(J.templateNamespace,N(V))):[];d=V[0];if(1!=V.length||d.nodeType!==qa)throw ma("tplrt",da,"");T(g,w,d);R={$attr:{}};V=X(d,[],R);var aa=a.splice(K+1,a.length-(K+1));Q&&y(V);a=a.concat(V).concat(aa);S(e,R);R=a.length}else w.html(V);if(J.templateUrl)D= -!0,Oa("template",na,J,w),na=J,J.replace&&(l=J),I=of(a.splice(K,a.length-K),w,e,g,la&&hb,k,p,{controllerDirectives:O,newIsolateScopeDirective:Q,templateDirective:na,nonTlbTranscludeDirective:fa}),R=a.length;else if(J.compile)try{za=J.compile(w,e,hb),z(za)?s(null,za,Pa,U):za&&s(za.pre,za.post,Pa,U)}catch(pf){c(pf,xa(w))}J.terminal&&(I.terminal=!0,E=Math.max(E,J.priority))}I.scope=C&&!0===C.scope;I.transcludeOnThisElement=la;I.elementTranscludeOnThisElement=A;I.templateOnThisElement=D;I.transclude=hb; -m.hasElementTranscludeDirective=A;return I}function y(a){for(var b=0,c=a.length;bq.priority)&&-1!=q.restrict.indexOf(f)&&(h&&(q=Ob(q,{$$start:h,$$end:k})),b.push(q),l=q)}catch(I){c(I)}}return l}function D(b){if(d.hasOwnProperty(b))for(var c=a.get(b+"Directive"),e=0,f=c.length;e"+b+"";return c.childNodes[0].childNodes;default:return b}}function R(a,b){if("srcdoc"== -b)return $.HTML;var c=wa(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return $.RESOURCE_URL}function Pa(a,c,d,e,f){var h=R(a,e);f=g[e]||f;var k=b(d,!0,h,f);if(k){if("multiple"===e&&"select"===wa(a))throw ma("selmulti",xa(a));c.push({priority:100,compile:function(){return{pre:function(a,c,g){c=g.$$observers||(g.$$observers={});if(l.test(e))throw ma("nodomevents");var p=g[e];p!==d&&(k=p&&b(p,!0,h,f),d=p);k&&(g[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(g.$$observers&&g.$$observers[e].$$scope|| -a).$watch(k,function(a,b){"class"===e&&a!=b?g.$updateClass(a,b):g.$set(e,a)}))}}}})}}function T(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,l;if(a)for(g=0,l=a.length;g=a)return b;for(;a--;)8===b[a].nodeType&&qf.call(b,a,1);return b}function Fe(){var b={},a=!1,c=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(a,c){Ma(a,"controller");L(a)?w(b,a):b[a]=c};this.allowGlobals=function(){a= -!0};this.$get=["$injector","$window",function(d,e){function f(a,b,c,d){if(!a||!L(a.$scope))throw S("$controller")("noscp",d,b);a.$scope[b]=c}return function(g,h,l,k){var n,p,q;l=!0===l;k&&x(k)&&(q=k);if(x(g)){k=g.match(c);if(!k)throw rf("ctrlfmt",g);p=k[1];q=q||k[3];g=b.hasOwnProperty(p)?b[p]:wc(h.$scope,p,!0)||(a?wc(e,p,!0):u);La(g,p,!0)}if(l)return l=(H(g)?g[g.length-1]:g).prototype,n=Object.create(l||null),q&&f(h,q,n,p||g.name),w(function(){d.invoke(g,n,h,p);return n},{instance:n,identifier:q}); -n=d.instantiate(g,h,p);q&&f(h,q,n,p||g.name);return n}}]}function Ge(){this.$get=["$window",function(b){return B(b.document)}]}function He(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function Zb(b,a){if(x(b)){var c=b.replace(sf,"").trim();if(c){var d=a("Content-Type");(d=d&&0===d.indexOf(Vc))||(d=(d=c.match(tf))&&uf[d[0]].test(c));d&&(b=pc(c))}}return b}function Wc(b){var a=ja(),c,d,e;if(!b)return a;r(b.split("\n"),function(b){e=b.indexOf(":");c=K(N(b.substr(0, -e)));d=N(b.substr(e+1));c&&(a[c]=a[c]?a[c]+", "+d:d)});return a}function Xc(b){var a=L(b)?b:u;return function(c){a||(a=Wc(b));return c?(c=a[K(c)],void 0===c&&(c=null),c):a}}function Yc(b,a,c,d){if(z(d))return d(b,a,c);r(d,function(d){b=d(b,a,c)});return b}function Ke(){var b=this.defaults={transformResponse:[Zb],transformRequest:[function(a){return L(a)&&"[object File]"!==Ca.call(a)&&"[object Blob]"!==Ca.call(a)&&"[object FormData]"!==Ca.call(a)?ab(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"}, -post:sa($b),put:sa($b),patch:sa($b)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},a=!1;this.useApplyAsync=function(b){return y(b)?(a=!!b,this):a};var c=this.interceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(d,e,f,g,h,l){function k(a){function c(a){var b=w({},a);b.data=a.data?Yc(a.data,a.headers,a.status,e.transformResponse):a.data;a=a.status;return 200<=a&&300>a?b:h.reject(b)}function d(a){var b,c={};r(a,function(a,d){z(a)?(b= -a(),null!=b&&(c[d]=b)):c[d]=a});return c}if(!ca.isObject(a))throw S("$http")("badreq",a);var e=w({method:"get",transformRequest:b.transformRequest,transformResponse:b.transformResponse},a);e.headers=function(a){var c=b.headers,e=w({},a.headers),f,g,c=w({},c.common,c[K(a.method)]);a:for(f in c){a=K(f);for(g in e)if(K(g)===a)continue a;e[f]=c[f]}return d(e)}(a);e.method=vb(e.method);var f=[function(a){var d=a.headers,e=Yc(a.data,Xc(d),u,a.transformRequest);D(e)&&r(d,function(a,b){"content-type"===K(b)&& -delete d[b]});D(a.withCredentials)&&!D(b.withCredentials)&&(a.withCredentials=b.withCredentials);return n(a,e).then(c,c)},u],g=h.when(e);for(r(t,function(a){(a.request||a.requestError)&&f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var l=f.shift(),g=g.then(a,l)}g.success=function(a){La(a,"fn");g.then(function(b){a(b.data,b.status,b.headers,e)});return g};g.error=function(a){La(a,"fn");g.then(null,function(b){a(b.data, -b.status,b.headers,e)});return g};return g}function n(c,f){function l(b,c,d,e){function f(){m(c,b,d,e)}E&&(200<=b&&300>b?E.put(Q,[b,c,Wc(d),e]):E.remove(Q));a?g.$applyAsync(f):(f(),g.$$phase||g.$apply())}function m(a,b,d,e){b=-1<=b?b:0;(200<=b&&300>b?I.resolve:I.reject)({data:a,status:b,headers:Xc(d),config:c,statusText:e})}function n(a){m(a.data,a.status,sa(a.headers()),a.statusText)}function t(){var a=k.pendingRequests.indexOf(c);-1!==a&&k.pendingRequests.splice(a,1)}var I=h.defer(),M=I.promise, -E,G,O=c.headers,Q=p(c.url,c.params);k.pendingRequests.push(c);M.then(t,t);!c.cache&&!b.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(E=L(c.cache)?c.cache:L(b.cache)?b.cache:q);E&&(G=E.get(Q),y(G)?G&&z(G.then)?G.then(n,n):H(G)?m(G[1],G[0],sa(G[2]),G[3]):m(G,200,{},"OK"):E.put(Q,M));D(G)&&((G=Zc(c.url)?e.cookies()[c.xsrfCookieName||b.xsrfCookieName]:u)&&(O[c.xsrfHeaderName||b.xsrfHeaderName]=G),d(c.method,Q,f,l,O,c.timeout,c.withCredentials,c.responseType));return M}function p(a,b){if(!b)return a; -var c=[];Ed(b,function(a,b){null===a||D(a)||(H(a)||(a=[a]),r(a,function(a){L(a)&&(a=ha(a)?a.toISOString():ab(a));c.push(Ea(b)+"="+Ea(a))}))});0=l&&(s.resolve(q),p(F.$$intervalId),delete f[F.$$intervalId]);t||b.$apply()},h);f[F.$$intervalId]=s;return F}var f={};e.cancel=function(b){return b&&b.$$intervalId in f?(f[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete f[b.$$intervalId],!0): -!1};return e}]}function Rd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "), -DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a",ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"]},pluralCat:function(b){return 1===b?"one":"other"}}}}function bc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=sb(b[a]); -return b.join("/")}function $c(b,a){var c=Aa(b);a.$$protocol=c.protocol;a.$$host=c.hostname;a.$$port=aa(c.port)||xf[c.protocol]||null}function ad(b,a){var c="/"!==b.charAt(0);c&&(b="/"+b);var d=Aa(b);a.$$path=decodeURIComponent(c&&"/"===d.pathname.charAt(0)?d.pathname.substring(1):d.pathname);a.$$search=rc(d.search);a.$$hash=decodeURIComponent(d.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function ua(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ga(b){var a=b.indexOf("#"); -return-1==a?b:b.substr(0,a)}function Gb(b){return b.replace(/(#.+)|#$/,"$1")}function cc(b,a,c){this.$$html5=!0;c=c||"";$c(b,this);this.$$parse=function(b){var c=ua(a,b);if(!x(c))throw Hb("ipthprfx",b,a);ad(c,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var b=Pb(this.$$search),c=this.$$hash?"#"+sb(this.$$hash):"";this.$$url=bc(this.$$path)+(b?"?"+b:"")+c;this.$$absUrl=a+this.$$url.substr(1)};this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)), -!0;var f,g;(f=ua(b,d))!==u?(g=f,g=(f=ua(c,f))!==u?a+(ua("/",f)||f):b+g):(f=ua(a,d))!==u?g=a+f:a==d+"/"&&(g=a);g&&this.$$parse(g);return!!g}}function dc(b,a,c){$c(b,this);this.$$parse=function(d){var e=ua(b,d)||ua(a,d),f;D(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",D(e)&&(b=d,this.replace())):(f=ua(c,e),D(f)&&(f=e));ad(f,this);d=this.$$path;var e=b,g=/^\/[A-Z]:(\/.*)/;0===f.indexOf(e)&&(f=f.replace(e,""));g.exec(f)||(d=(f=g.exec(d))?f[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var a= -Pb(this.$$search),e=this.$$hash?"#"+sb(this.$$hash):"";this.$$url=bc(this.$$path)+(a?"?"+a:"")+e;this.$$absUrl=b+(this.$$url?c+this.$$url:"")};this.$$parseLinkUrl=function(a,c){return Ga(b)==Ga(a)?(this.$$parse(a),!0):!1}}function bd(b,a,c){this.$$html5=!0;dc.apply(this,arguments);this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;b==Ga(d)?f=d:(g=ua(a,d))?f=b+c+g:a===d+"/"&&(f=a);f&&this.$$parse(f);return!!f};this.$$compose=function(){var a=Pb(this.$$search), -e=this.$$hash?"#"+sb(this.$$hash):"";this.$$url=bc(this.$$path)+(a?"?"+a:"")+e;this.$$absUrl=b+c+this.$$url}}function Ib(b){return function(){return this[b]}}function cd(b,a){return function(c){if(D(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Me(){var b="",a={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(a){return y(a)?(b=a,this):b};this.html5Mode=function(b){return Xa(b)?(a.enabled=b,this):L(b)?(Xa(b.enabled)&&(a.enabled=b.enabled),Xa(b.requireBase)&& -(a.requireBase=b.requireBase),Xa(b.rewriteLinks)&&(a.rewriteLinks=b.rewriteLinks),this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(c,d,e,f,g){function h(a,b,c){var e=k.url(),f=k.$$state;try{d.url(a,b,c),k.$$state=d.state()}catch(g){throw k.url(e),k.$$state=f,g;}}function l(a,b){c.$broadcast("$locationChangeSuccess",k.absUrl(),a,k.$$state,b)}var k,n;n=d.baseHref();var p=d.url(),q;if(a.enabled){if(!n&&a.requireBase)throw Hb("nobase");q=p.substring(0,p.indexOf("/", -p.indexOf("//")+2))+(n||"/");n=e.history?cc:bd}else q=Ga(p),n=dc;var t=q.substr(0,Ga(q).lastIndexOf("/")+1);k=new n(q,t,"#"+b);k.$$parseLinkUrl(p,p);k.$$state=d.state();var s=/^\s*(javascript|mailto):/i;f.on("click",function(b){if(a.rewriteLinks&&!b.ctrlKey&&!b.metaKey&&!b.shiftKey&&2!=b.which&&2!=b.button){for(var e=B(b.target);"a"!==wa(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var l=e.prop("href"),h=e.attr("href")||e.attr("xlink:href");L(l)&&"[object SVGAnimatedString]"===l.toString()&&(l= -Aa(l.animVal).href);s.test(l)||!l||e.attr("target")||b.isDefaultPrevented()||!k.$$parseLinkUrl(l,h)||(b.preventDefault(),k.absUrl()!=d.url()&&(c.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});Gb(k.absUrl())!=Gb(p)&&d.url(k.absUrl(),!0);var F=!0;d.onUrlChange(function(a,b){D(ua(t,a))?g.location.href=a:(c.$evalAsync(function(){var d=k.absUrl(),e=k.$$state,f;k.$$parse(a);k.$$state=b;f=c.$broadcast("$locationChangeStart",a,d,b,e).defaultPrevented;k.absUrl()===a&&(f?(k.$$parse(d),k.$$state=e,h(d, -!1,e)):(F=!1,l(d,e)))}),c.$$phase||c.$digest())});c.$watch(function(){var a=Gb(d.url()),b=Gb(k.absUrl()),f=d.state(),g=k.$$replace,q=a!==b||k.$$html5&&e.history&&f!==k.$$state;if(F||q)F=!1,c.$evalAsync(function(){var b=k.absUrl(),d=c.$broadcast("$locationChangeStart",b,a,k.$$state,f).defaultPrevented;k.absUrl()===b&&(d?(k.$$parse(a),k.$$state=f):(q&&h(b,g,f===k.$$state?null:k.$$state),l(a,f)))});k.$$replace=!1});return k}]}function Ne(){var b=!0,a=this;this.debugEnabled=function(a){return y(a)?(b= -a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||A;a=!1;try{a=!!e.apply}catch(l){}return a?function(){var a=[];r(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"), -debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function va(b,a){if("__defineGetter__"===b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw ga("isecfld",a);return b}function dd(b,a){b+="";if(!x(b))throw ga("iseccst",a);return b}function oa(b,a){if(b){if(b.constructor===b)throw ga("isecfn",a);if(b.window===b)throw ga("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw ga("isecdom",a);if(b===Object)throw ga("isecobj", -a);}return b}function ec(b){return b.constant}function jb(b,a,c,d,e){oa(b,e);oa(a,e);c=c.split(".");for(var f,g=0;1h?ed(g[0],g[1],g[2],g[3],g[4],c,d):function(a,b){var e=0,f;do f=ed(g[e++],g[e++],g[e++],g[e++],g[e++],c,d)(a,b),b=u,a=f;while(e< -h);return f};else{var l="";d&&(l+="s = eso(s, fe);\nl = eso(l, fe);\n");var k=d;r(g,function(a,b){va(a,c);var e=(b?"s":'((l&&l.hasOwnProperty("'+a+'"))?l:s)')+"."+a;if(d||Qa(a))e="eso("+e+", fe)",k=!0;l+="if(s == null) return undefined;\ns="+e+";\n"});l+="return s;";a=new Function("s","l","eso","fe",l);a.toString=ea(l);k&&(a=yf(a,c));f=a}f.sharedGetter=!0;f.assign=function(a,c,d){return jb(a,d,b,c,b)};return e[b]=f}function fc(b){return z(b.valueOf)?b.valueOf():Cf.call(b)}function Oe(){var b=ja(), -a=ja();this.$get=["$filter","$sniffer",function(c,d){function e(a){var b=a;a.sharedGetter&&(b=function(b,c){return a(b,c)},b.literal=a.literal,b.constant=a.constant,b.assign=a.assign);return b}function f(a,b){for(var c=0,d=a.length;c=this.promise.$$state.status&&d&&d.length&&b(function(){for(var b,e,f=0,g=d.length;fa)for(b in k++,f)e.hasOwnProperty(b)||(t--,delete f[b])}else f!==e&&(f=e,k++);return k}}c.$stateful=!0;var d=this,e,f,g,l=1r&&(u=4-r,P[u]||(P[u]=[]),P[u].push({msg:z(b.exp)?"fn: "+(b.exp.name||b.exp.toString()):b.exp,newVal:f,oldVal:h}));else if(b===d){n=!1;break a}}catch(D){g(D)}if(!(k=F.$$childHead||F!==this&&F.$$nextSibling))for(;F!==this&&!(k=F.$$nextSibling);)F=F.$parent}while(F=k);if((n||m.length)&&!r--)throw v.$$phase=null,c("infdig",a,P);}while(n||m.length);for(v.$$phase=null;C.length;)try{C.shift()()}catch(B){g(B)}}, -$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;if(this!==v){for(var b in this.$$listenerCount)q(this,this.$$listenerCount[b],b);a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync= -this.$applyAsync=A;this.$on=this.$watch=this.$watchGroup=function(){return A};this.$$listeners={};this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}}},$eval:function(a,b){return h(a)(this,b)},$evalAsync:function(a,b){v.$$phase||m.length||l.defer(function(){m.length&&v.$digest()});m.push({scope:this,expression:a,locals:b})},$$postDigest:function(a){C.push(a)},$apply:function(a){try{return p("$apply"),this.$eval(a)}catch(b){g(b)}finally{v.$$phase= -null;try{v.$digest()}catch(c){throw g(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&u.push(b);F()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,q(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,f=!1,l={name:a,targetScope:e,stopPropagation:function(){f=!0},preventDefault:function(){l.defaultPrevented= -!0},defaultPrevented:!1},h=Za([l],arguments,1),k,q;do{d=e.$$listeners[a]||c;l.currentScope=e;k=0;for(q=d.length;kRa)throw Ba("iequirks");var d=sa(pa);d.isEnabled=function(){return b};d.trustAs=c.trustAs;d.getTrusted=c.getTrusted;d.valueOf=c.valueOf;b||(d.trustAs=d.getTrusted=function(a,b){return b},d.valueOf=ra);d.parseAs=function(b,c){var e=a(c);return e.literal&&e.constant?e:a(c,function(a){return d.getTrusted(b,a)})};var e=d.parseAs,f=d.getTrusted,g=d.trustAs;r(pa,function(a,b){var c=K(b);d[fb("parse_as_"+c)]=function(b){return e(a,b)};d[fb("get_trusted_"+c)]=function(b){return f(a,b)};d[fb("trust_as_"+ -c)]=function(b){return g(a,b)}});return d}]}function Ue(){this.$get=["$window","$document",function(b,a){var c={},d=aa((/android (\d+)/.exec(K((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,l=f.body&&f.body.style,k=!1,n=!1;if(l){for(var p in l)if(k=h.exec(p)){g=k[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in l&&"webkit");k=!!("transition"in l||g+"Transition"in l);n=!!("animation"in l||g+"Animation"in -l);!d||k&&n||(k=x(f.body.style.webkitTransition),n=x(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hasEvent:function(a){if("input"===a&&11>=Ra)return!1;if(D(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:db(),vendorPrefix:g,transitions:k,animations:n,android:d}}]}function We(){this.$get=["$templateCache","$http","$q","$sce",function(b,a,c,d){function e(f,g){e.totalPendingRequests++;x(f)&&b.get(f)||(f=d.getTrustedResourceUrl(f));var h= -a.defaults&&a.defaults.transformResponse;H(h)?h=h.filter(function(a){return a!==Zb}):h===Zb&&(h=null);return a.get(f,{cache:b,transformResponse:h})["finally"](function(){e.totalPendingRequests--}).then(function(a){return a.data},function(a){if(!g)throw ma("tpload",f);return c.reject(a)})}e.totalPendingRequests=0;return e}]}function Xe(){this.$get=["$rootScope","$browser","$location",function(b,a,c){return{findBindings:function(a,b,c){a=a.getElementsByClassName("ng-binding");var g=[];r(a,function(a){var d= -ca.element(a).data("$binding");d&&r(d,function(d){c?(new RegExp("(^|\\s)"+gd(b)+"(\\s|\\||$)")).test(d)&&g.push(a):-1!=d.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,c){for(var g=["ng-","data-ng-","ng\\:"],h=0;hb;b=Math.abs(b);var g=b+"",h="",l=[],k=!1;if(-1!==g.indexOf("e")){var n=g.match(/([\d\.]+)e(-?)(\d+)/);n&&"-"==n[2]&&n[3]>e+1?b=0:(h=g,k=!0)}if(k)0b&&(h=b.toFixed(e),b=parseFloat(h));else{g=(g.split(od)[1]||"").length;D(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);var g=(""+b).split(od),k=g[0],g=g[1]||"",p=0,q=a.lgSize, -t=a.gSize;if(k.length>=q+t)for(p=k.length-q,n=0;nb&&(d="-",b=-b);for(b=""+b;b.length-c)e+= -c;0===e&&-12==c&&(e=12);return Jb(e,a,d)}}function Kb(b,a){return function(c,d){var e=c["get"+b](),f=vb(a?"SHORT"+b:b);return d[f][e]}}function pd(b){var a=(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function qd(b){return function(a){var c=pd(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return Jb(a,b)}}function hc(b,a){return 0>=b.getFullYear()?a.ERAS[0]:a.ERAS[1]}function kd(b){function a(a){var b;if(b=a.match(c)){a= -new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,l=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=aa(b[9]+b[10]),g=aa(b[9]+b[11]));h.call(a,aa(b[1]),aa(b[2])-1,aa(b[3]));f=aa(b[4]||0)-f;g=aa(b[5]||0)-g;h=aa(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e,f){var g="",h=[],l,k;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;x(c)&&(c=Kf.test(c)? -aa(c):a(c));Y(c)&&(c=new Date(c));if(!ha(c))return c;for(;e;)(k=Lf.exec(e))?(h=Za(h,k,1),e=h.pop()):(h.push(e),e=null);f&&"UTC"===f&&(c=new Date(c.getTime()),c.setMinutes(c.getMinutes()+c.getTimezoneOffset()));r(h,function(a){l=Mf[a];g+=l?l(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function Ff(){return function(b,a){D(a)&&(a=2);return ab(b,a)}}function Gf(){return function(b,a){Y(b)&&(b=b.toString());return H(b)||x(b)?(a=Infinity===Math.abs(Number(a))?Number(a): -aa(a))?0b||37<=b&&40>=b||n(a,this,this.value)});if(e.hasEvent("paste"))a.on("paste cut",n)}a.on("change",l);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)}}function Nb(b,a){return function(c,d){var e,f;if(ha(c))return c;if(x(c)){'"'==c.charAt(0)&&'"'==c.charAt(c.length-1)&&(c=c.substring(1,c.length-1));if(Nf.test(c))return new Date(c);b.lastIndex=0;if(e=b.exec(c))return e.shift(),f=d?{yyyy:d.getFullYear(),MM:d.getMonth()+1, -dd:d.getDate(),HH:d.getHours(),mm:d.getMinutes(),ss:d.getSeconds(),sss:d.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},r(e,function(b,c){c=r};g.$observe("min",function(a){r=q(a);h.$validate()})}if(y(g.max)||g.ngMax){var v; -h.$validators.max=function(a){return!p(a)||D(v)||c(a)<=v};g.$observe("max",function(a){v=q(a);h.$validate()})}}}function td(b,a,c,d){(d.$$hasNativeValidators=L(a[0].validity))&&d.$parsers.push(function(b){var c=a.prop("validity")||{};return c.badInput&&!c.typeMismatch?u:b})}function ud(b,a,c,d,e){if(y(d)){b=b(d);if(!b.constant)throw nb("constexpr",c,d);return b(a)}return e}function jc(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;d(?:<\/\1>|)$/,Sb=/<|&#?\w+;/,ef=/<([\w:]+)/,ff=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ka={option:[1,'"],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "], -td:[3,"","
    "],_default:[0,"",""]};ka.optgroup=ka.option;ka.tbody=ka.tfoot=ka.colgroup=ka.caption=ka.thead;ka.th=ka.td;var Ka=T.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===W.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),T(R).on("load",a))},toString:function(){var b=[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?B(this[b]):B(this[this.length+b])},length:0,push:Pf,sort:[].sort, -splice:[].splice},Fb={};r("multiple selected checked disabled readOnly required open".split(" "),function(b){Fb[K(b)]=b});var Nc={};r("input select option textarea button form details".split(" "),function(b){Nc[b]=!0});var Oc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};r({data:Vb,removeData:yb},function(b,a){T[a]=b});r({data:Vb,inheritedData:Eb,scope:function(b){return B.data(b,"$scope")||Eb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return B.data(b, -"$isolateScope")||B.data(b,"$isolateScopeNoTemplate")},controller:Jc,injector:function(b){return Eb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Bb,css:function(b,a,c){a=fb(a);if(y(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=b.nodeType;if(d!==bb&&2!==d&&8!==d)if(d=K(a),Fb[d])if(y(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||A).specified?d:u;else if(y(c))b.setAttribute(a,c);else if(b.getAttribute)return b= -b.getAttribute(a,2),null===b?u:b},prop:function(b,a,c){if(y(c))b[a]=c;else return b[a]},text:function(){function b(a,b){if(D(b)){var d=a.nodeType;return d===qa||d===bb?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(D(a)){if(b.multiple&&"select"===wa(b)){var c=[];r(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(D(a))return b.innerHTML;xb(b,!0);b.innerHTML=a},empty:Kc},function(b,a){T.prototype[a]= -function(a,d){var e,f,g=this.length;if(b!==Kc&&(2==b.length&&b!==Bb&&b!==Jc?a:d)===u){if(L(a)){for(e=0;e":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a, -c)||e(a,c)},"!":function(a,c,d){return!d(a,c)},"=":!0,"|":!0}),Zf={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},gc=function(a){this.options=a};gc.prototype={constructor:gc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index=a&&"string"=== -typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=y(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw ga("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.indexa){a=this.tokens[a];var g=a.text;if(g===c||g===d||g===e||g===f||!(c||d||e||f))return a}return!1},expect:function(a, -c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},consume:function(a){if(0===this.tokens.length)throw ga("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return c},unaryFn:function(a,c){var d=qb[a];return w(function(a,f){return d(a,f,c)},{constant:c.constant,inputs:[c]})},binaryFn:function(a,c,d,e){var f=qb[c];return w(function(c,e){return f(c,e,a,d)},{constant:a.constant&&d.constant,inputs:!e&&[a,d]})},identifier:function(){for(var a= -this.consume().text;this.peek(".")&&this.peekAhead(1).identifier&&!this.peekAhead(2,"(");)a+=this.consume().text+this.consume().text;return zf(a,this.options,this.text)},constant:function(){var a=this.consume().value;return w(function(){return a},{constant:!0,literal:!0})},statements:function(){for(var a=[];;)if(0","<=",">=");)a=this.binaryFn(a,c.text,this.additive());return a}, -additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.text,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.text,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(kb.ZERO,a.text,this.unary()):(a=this.expect("!"))?this.unaryFn(a.text,this.unary()):this.primary()},fieldAccess:function(a){var c=this.identifier(); -return w(function(d,e,f){d=f||a(d,e);return null==d?u:c(d)},{assign:function(d,e,f){var g=a(d,f);g||a.assign(d,g={},f);return c.assign(g,e)}})},objectIndex:function(a){var c=this.text,d=this.expression();this.consume("]");return w(function(e,f){var g=a(e,f),h=dd(d(e,f),c);va(h,c);return g?oa(g[h],c):u},{assign:function(e,f,g){var h=va(dd(d(e,g),c),c),l=oa(a(e,g),c);l||a.assign(e,l={},g);return l[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression()); -while(this.expect(","))}this.consume(")");var e=this.text,f=d.length?[]:null;return function(g,h){var l=c?c(g,h):y(c)?u:g,k=a(g,h,l)||A;if(f)for(var n=d.length;n--;)f[n]=oa(d[n](g,h),e);oa(l,e);if(k){if(k.constructor===k)throw ga("isecfn",e);if(k===Wf||k===Xf||k===Yf)throw ga("isecff",e);}l=k.apply?k.apply(l,f):k(f[0],f[1],f[2],f[3],f[4]);f&&(f.length=0);return oa(l,e)}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(",")) -}this.consume("]");return w(function(c,d){for(var e=[],f=0,g=a.length;fa.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Jb(Math[0=a.getFullYear()?c.ERANAMES[0]:c.ERANAMES[1]}},Lf=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/, -Kf=/^\-?\d+$/;kd.$inject=["$locale"];var Hf=ea(K),If=ea(vb);md.$inject=["$parse"];var Td=ea({restrict:"E",compile:function(a,c){if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){if("a"===c[0].nodeName.toLowerCase()){var f="[object SVGAnimatedString]"===Ca.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}}),wb={};r(Fb,function(a,c){if("multiple"!=a){var d=ya("ng-"+c);wb[d]=function(){return{restrict:"A",priority:100,link:function(a,f,g){a.$watch(g[d], -function(a){g.$set(c,!!a)})}}}}});r(Oc,function(a,c){wb[c]=function(){return{priority:100,link:function(a,e,f){if("ngPattern"===c&&"/"==f.ngPattern.charAt(0)&&(e=f.ngPattern.match(Of))){f.$set("ngPattern",new RegExp(e[1],e[2]));return}a.$watch(f[c],function(a){f.$set(c,a)})}}}});r(["src","srcset","href"],function(a){var c=ya("ng-"+a);wb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===Ca.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href", -g=null);f.$observe(c,function(c){c?(f.$set(h,c),Ra&&g&&e.prop(g,f[h])):"href"===a&&f.$set(h,null)})}}}});var Lb={$addControl:A,$$renameControl:function(a,c){a.$name=c},$removeControl:A,$setValidity:A,$setDirty:A,$setPristine:A,$setSubmitted:A};rd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var yd=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:rd,compile:function(d,e){d.addClass(Sa).addClass(ob);var f=e.name?"name":a&&e.ngForm?"ngForm": -!1;return{pre:function(a,d,e,k){if(!("action"in e)){var n=function(c){a.$apply(function(){k.$commitViewValue();k.$setSubmitted()});c.preventDefault()};d[0].addEventListener("submit",n,!1);d.on("$destroy",function(){c(function(){d[0].removeEventListener("submit",n,!1)},0,!1)})}var p=k.$$parentForm;f&&(jb(a,null,k.$name,k,k.$name),e.$observe(f,function(c){k.$name!==c&&(jb(a,null,k.$name,u,k.$name),p.$$renameControl(k,c),jb(a,null,k.$name,k,k.$name))}));d.on("$destroy",function(){p.$removeControl(k); -f&&jb(a,null,e[f],u,k.$name);w(k,Lb)})}}}}}]},Ud=yd(),ge=yd(!0),Nf=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,$f=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,ag=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,bg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,zd=/^(\d{4})-(\d{2})-(\d{2})$/,Ad=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,kc=/^(\d{4})-W(\d\d)$/,Bd=/^(\d{4})-(\d\d)$/, -Cd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Dd={text:function(a,c,d,e,f,g){lb(a,c,d,e,f,g);ic(e)},date:mb("date",zd,Nb(zd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":mb("datetimelocal",Ad,Nb(Ad,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:mb("time",Cd,Nb(Cd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:mb("week",kc,function(a,c){if(ha(a))return a;if(x(a)){kc.lastIndex=0;var d=kc.exec(a);if(d){var e=+d[1],f=+d[2],g=d=0,h=0,l=0,k=pd(e),f=7*(f-1);c&&(d=c.getHours(),g= -c.getMinutes(),h=c.getSeconds(),l=c.getMilliseconds());return new Date(e,0,k.getDate()+f,d,g,h,l)}}return NaN},"yyyy-Www"),month:mb("month",Bd,Nb(Bd,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,g){td(a,c,d,e);lb(a,c,d,e,f,g);e.$$parserName="number";e.$parsers.push(function(a){return e.$isEmpty(a)?null:bg.test(a)?parseFloat(a):u});e.$formatters.push(function(a){if(!e.$isEmpty(a)){if(!Y(a))throw nb("numfmt",a);a=a.toString()}return a});if(y(d.min)||d.ngMin){var h;e.$validators.min=function(a){return e.$isEmpty(a)|| -D(h)||a>=h};d.$observe("min",function(a){y(a)&&!Y(a)&&(a=parseFloat(a,10));h=Y(a)&&!isNaN(a)?a:u;e.$validate()})}if(y(d.max)||d.ngMax){var l;e.$validators.max=function(a){return e.$isEmpty(a)||D(l)||a<=l};d.$observe("max",function(a){y(a)&&!Y(a)&&(a=parseFloat(a,10));l=Y(a)&&!isNaN(a)?a:u;e.$validate()})}},url:function(a,c,d,e,f,g){lb(a,c,d,e,f,g);ic(e);e.$$parserName="url";e.$validators.url=function(a,c){var d=a||c;return e.$isEmpty(d)||$f.test(d)}},email:function(a,c,d,e,f,g){lb(a,c,d,e,f,g);ic(e); -e.$$parserName="email";e.$validators.email=function(a,c){var d=a||c;return e.$isEmpty(d)||ag.test(d)}},radio:function(a,c,d,e){D(d.name)&&c.attr("name",++rb);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,l){var k=ud(l,a,"ngTrueValue",d.ngTrueValue,!0),n=ud(l,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&& -a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return ia(a,k)});e.$parsers.push(function(a){return a?k:n})},hidden:A,button:A,submit:A,reset:A,file:A},yc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,l){l[0]&&(Dd[K(h.type)]||Dd.text)(f,g,h,l[0],c,a,d,e)}}}}],cg=/^(true|false|\d+)$/,ye=function(){return{restrict:"A",priority:100,compile:function(a, -c){return cg.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},Zd=["$compile",function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===u?"":a})}}}}],ae=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate)); -c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===u?"":a})}}}}],$d=["$sce","$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],xe=ea({restrict:"A",require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}), -be=jc("",!0),de=jc("Odd",0),ce=jc("Even",1),ee=Ia({compile:function(a,c){c.$set("ngCloak",u);a.removeClass("ng-cloak")}}),fe=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Dc={},dg={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=ya("ng-"+a);Dc[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h= -d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};dg[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var ie=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,l,k;c.$watch(e.ngIf,function(c){c?l||g(function(c,f){l=f;c[c.length++]=W.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=null),h&&(k= -ub(h.clone),a.leave(k).then(function(){k=null}),h=null))})}}}],je=["$templateRequest","$anchorScroll","$animate",function(a,c,d){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:ca.noop,compile:function(e,f){var g=f.ngInclude||f.src,h=f.onload||"",l=f.autoscroll;return function(e,f,p,q,r){var s=0,u,v,m,C=function(){v&&(v.remove(),v=null);u&&(u.$destroy(),u=null);m&&(d.leave(m).then(function(){v=null}),v=m,m=null)};e.$watch(g,function(g){var p=function(){!y(l)||l&&!e.$eval(l)|| -c()},M=++s;g?(a(g,!0).then(function(a){if(M===s){var c=e.$new();q.template=a;a=r(c,function(a){C();d.enter(a,null,f).then(p)});u=c;m=a;u.$emit("$includeContentLoaded",g);e.$eval(h)}},function(){M===s&&(C(),e.$emit("$includeContentError",g))}),e.$emit("$includeContentRequested",g)):(C(),q.template=null)})}}}}],Ae=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Gc(f.template,W).childNodes)(c,function(a){d.append(a)}, -{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}],ke=Ia({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),we=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?N(f):f;e.$parsers.push(function(a){if(!D(a)){var c=[];a&&r(a.split(h),function(a){a&&c.push(g?N(a):a)});return c}});e.$formatters.push(function(a){return H(a)?a.join(f):u});e.$isEmpty=function(a){return!a|| -!a.length}}}},ob="ng-valid",vd="ng-invalid",Sa="ng-pristine",Mb="ng-dirty",xd="ng-pending",nb=S("ngModel"),eg=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,l,k,n){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=u;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1; -this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=u;this.$name=n(d.name||"",!1)(a);var p=f(d.ngModel),q=p.assign,t=p,s=q,F=null,v,m=this;this.$$setOptions=function(a){if((m.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");t=function(a){var d=p(a);z(d)&&(d=c(a));return d};s=function(a,c){z(p(a))?g(a,{$$$p:m.$modelValue}):q(a,m.$modelValue)}}else if(!p.assign)throw nb("nonassign",d.ngModel,xa(e));};this.$render=A;this.$isEmpty=function(a){return D(a)|| -""===a||null===a||a!==a};var C=e.inheritedData("$formController")||Lb,w=0;sd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:C,$animate:g});this.$setPristine=function(){m.$dirty=!1;m.$pristine=!0;g.removeClass(e,Mb);g.addClass(e,Sa)};this.$setDirty=function(){m.$dirty=!0;m.$pristine=!1;g.removeClass(e,Sa);g.addClass(e,Mb);C.$setDirty()};this.$setUntouched=function(){m.$touched=!1;m.$untouched=!0;g.setClass(e,"ng-untouched","ng-touched")};this.$setTouched= -function(){m.$touched=!0;m.$untouched=!1;g.setClass(e,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){h.cancel(F);m.$viewValue=m.$$lastCommittedViewValue;m.$render()};this.$validate=function(){if(!Y(m.$modelValue)||!isNaN(m.$modelValue)){var a=m.$$rawModelValue,c=m.$valid,d=m.$modelValue,e=m.$options&&m.$options.allowInvalid;m.$$runValidators(a,m.$$lastCommittedViewValue,function(f){e||c===f||(m.$modelValue=f?a:u,m.$modelValue!==d&&m.$$writeModelToScope())})}};this.$$runValidators= -function(a,c,d){function e(){var d=!0;r(m.$validators,function(e,f){var h=e(a,c);d=d&&h;g(f,h)});return d?!0:(r(m.$asyncValidators,function(a,c){g(c,null)}),!1)}function f(){var d=[],e=!0;r(m.$asyncValidators,function(f,h){var l=f(a,c);if(!l||!z(l.then))throw nb("$asyncValidators",l);g(h,u);d.push(l.then(function(){g(h,!0)},function(a){e=!1;g(h,!1)}))});d.length?k.all(d).then(function(){h(e)},A):h(!0)}function g(a,c){l===w&&m.$setValidity(a,c)}function h(a){l===w&&d(a)}w++;var l=w;(function(){var a= -m.$$parserName||"parse";if(v===u)g(a,null);else return v||(r(m.$validators,function(a,c){g(c,null)}),r(m.$asyncValidators,function(a,c){g(c,null)})),g(a,v),v;return!0})()?e()?f():h(!1):h(!1)};this.$commitViewValue=function(){var a=m.$viewValue;h.cancel(F);if(m.$$lastCommittedViewValue!==a||""===a&&m.$$hasNativeValidators)m.$$lastCommittedViewValue=a,m.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var c=m.$$lastCommittedViewValue;if(v=D(c)?u:!0)for(var d= -0;dE;)d=u.pop(),n(P,d.label,!1),d.element.remove()}for(;S.length>x;){k=S.pop();for(E=1;Ea&&q.removeOption(c)})}var v;if(!(v=s.match(d)))throw gg("iexp",s,xa(f));var z=c(v[2]||v[1]),A=v[4]||v[6],B=/ as /.test(v[0])&&v[1],x=B?c(B): -null,I=v[5],M=c(v[3]||""),E=c(v[2]?v[1]:A),L=c(v[7]),K=v[8]?c(v[8]):null,R={},S=[[{element:f,label:""}]],T={};w&&(a(w)(e),w.removeClass("ng-scope"),w.remove());f.empty();f.on("change",function(){e.$apply(function(){var a=L(e)||[],c;if(t)c=[],r(f.val(),function(d){d=K?R[d]:d;c.push("?"===d?u:""===d?null:h(x?x:E,d,a[d]))});else{var d=K?R[f.val()]:f.val();c="?"===d?u:""===d?null:h(x?x:E,d,a[d])}g.$setViewValue(c);p()})});g.$render=p;e.$watchCollection(L,k);e.$watchCollection(function(){var a=L(e),c; -if(a&&H(a)){c=Array(a.length);for(var d=0,f=a.length;df||e.$isEmpty(c)||c.length<=f}}}}},Bc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=0;d.$observe("minlength",function(a){f=aa(a)||0;e.$validate()});e.$validators.minlength= -function(a,c){return e.$isEmpty(c)||c.length>=f}}}}};R.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(Nd(),Pd(ca),B(W).ready(function(){Jd(W,tc)}))})(window,document);!window.angular.$$csp()&&window.angular.element(document.head).prepend(''); -//# sourceMappingURL=angular.min.js.map diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/css/bootstrap.min.css b/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/css/bootstrap.min.css deleted file mode 100644 index fb90709..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/css/bootstrap.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-text{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-text{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-text{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-text,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-bs-toggle=buttons]>.btn input[type=checkbox],[data-bs-toggle=buttons]>.btn input[type=radio],[data-bs-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-bs-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-text,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-text,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-text,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-text,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-text,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-text,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-text,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-text,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-text,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-text:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-text,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-text{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-text.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-text.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-text:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-text:first-child{border-right:0}.input-group .form-control:last-child,.input-group-text:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-text:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-text,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} -/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot b/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index b93a495..0000000 Binary files a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot and /dev/null differ diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg b/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg deleted file mode 100644 index 94fb549..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf b/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 1413fc6..0000000 Binary files a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf and /dev/null differ diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff b/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index 9e61285..0000000 Binary files a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 b/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b5..0000000 Binary files a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 and /dev/null differ diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/js/bootstrap.min.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/js/bootstrap.min.js deleted file mode 100644 index b0398d4..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/bootstrap/dist/js/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under the MIT license - */ -if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-bs-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-bs-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-bs-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-bs-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-bs-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-bs-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-bs-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-bs-toggle="collapse"][href="#'+b.id+'"],[data-bs-toggle="collapse"][data-bs-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-bs-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',function(d){var e=a(this);e.attr("data-bs-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-bs-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-bs-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
    ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-bs-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-bs-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-bs-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-bs-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-bs-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/addon/mode/overlay.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/addon/mode/overlay.js deleted file mode 100644 index e1b9ed3..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/addon/mode/overlay.js +++ /dev/null @@ -1,85 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Utility function that allows modes to be combined. The mode given -// as the base argument takes care of most of the normal mode -// functionality, but a second (typically simple) mode is used, which -// can override the style of text. Both modes get to parse all of the -// text, but when both assign a non-null style to a piece of code, the -// overlay wins, unless the combine argument was true and not overridden, -// or state.overlay.combineTokens was true, in which case the styles are -// combined. - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.overlayMode = function(base, overlay, combine) { - return { - startState: function() { - return { - base: CodeMirror.startState(base), - overlay: CodeMirror.startState(overlay), - basePos: 0, baseCur: null, - overlayPos: 0, overlayCur: null, - streamSeen: null - }; - }, - copyState: function(state) { - return { - base: CodeMirror.copyState(base, state.base), - overlay: CodeMirror.copyState(overlay, state.overlay), - basePos: state.basePos, baseCur: null, - overlayPos: state.overlayPos, overlayCur: null - }; - }, - - token: function(stream, state) { - if (stream != state.streamSeen || - Math.min(state.basePos, state.overlayPos) < stream.start) { - state.streamSeen = stream; - state.basePos = state.overlayPos = stream.start; - } - - if (stream.start == state.basePos) { - state.baseCur = base.token(stream, state.base); - state.basePos = stream.pos; - } - if (stream.start == state.overlayPos) { - stream.pos = stream.start; - state.overlayCur = overlay.token(stream, state.overlay); - state.overlayPos = stream.pos; - } - stream.pos = Math.min(state.basePos, state.overlayPos); - - // state.overlay.combineTokens always takes precedence over combine, - // unless set to null - if (state.overlayCur == null) return state.baseCur; - else if (state.baseCur != null && - state.overlay.combineTokens || - combine && state.overlay.combineTokens == null) - return state.baseCur + " " + state.overlayCur; - else return state.overlayCur; - }, - - indent: base.indent && function(state, textAfter) { - return base.indent(state.base, textAfter); - }, - electricChars: base.electricChars, - - innerMode: function(state) { return {state: state.base, mode: base}; }, - - blankLine: function(state) { - if (base.blankLine) base.blankLine(state.base); - if (overlay.blankLine) overlay.blankLine(state.overlay); - } - }; -}; - -}); diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/lib/codemirror.css b/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/lib/codemirror.css deleted file mode 100644 index e2d4ec2..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/lib/codemirror.css +++ /dev/null @@ -1,318 +0,0 @@ -/* BASICS */ - -.CodeMirror { - /* Set height, width, borders, and global font properties here */ - font-family: monospace; - height: 300px; -} -.CodeMirror-scroll { - /* Set scrolling behaviour here */ - overflow: auto; -} - -/* PADDING */ - -.CodeMirror-lines { - padding: 4px 0; /* Vertical padding around content */ -} -.CodeMirror pre { - padding: 0 4px; /* Horizontal padding of content */ -} - -.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - background-color: white; /* The little square between H and V scrollbars */ -} - -/* GUTTER */ - -.CodeMirror-gutters { - border-right: 1px solid #ddd; - background-color: #f7f7f7; - white-space: nowrap; -} -.CodeMirror-linenumbers {} -.CodeMirror-linenumber { - padding: 0 3px 0 5px; - min-width: 20px; - text-align: right; - color: #999; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -.CodeMirror-guttermarker { color: black; } -.CodeMirror-guttermarker-subtle { color: #999; } - -/* CURSOR */ - -.CodeMirror div.CodeMirror-cursor { - border-left: 1px solid black; -} -/* Shown when moving in bi-directional text */ -.CodeMirror div.CodeMirror-secondarycursor { - border-left: 1px solid silver; -} -.CodeMirror.cm-fat-cursor div.CodeMirror-cursor { - width: auto; - border: 0; - background: #7e7; -} -.CodeMirror.cm-fat-cursor div.CodeMirror-cursors { - z-index: 1; -} - -.cm-animate-fat-cursor { - width: auto; - border: 0; - -webkit-animation: blink 1.06s steps(1) infinite; - -moz-animation: blink 1.06s steps(1) infinite; - animation: blink 1.06s steps(1) infinite; -} -@-moz-keyframes blink { - 0% { background: #7e7; } - 50% { background: none; } - 100% { background: #7e7; } -} -@-webkit-keyframes blink { - 0% { background: #7e7; } - 50% { background: none; } - 100% { background: #7e7; } -} -@keyframes blink { - 0% { background: #7e7; } - 50% { background: none; } - 100% { background: #7e7; } -} - -/* Can style cursor different in overwrite (non-insert) mode */ -div.CodeMirror-overwrite div.CodeMirror-cursor {} - -.cm-tab { display: inline-block; text-decoration: inherit; } - -.CodeMirror-ruler { - border-left: 1px solid #ccc; - position: absolute; -} - -/* DEFAULT THEME */ - -.cm-s-default .cm-keyword {color: #708;} -.cm-s-default .cm-atom {color: #219;} -.cm-s-default .cm-number {color: #164;} -.cm-s-default .cm-def {color: #00f;} -.cm-s-default .cm-variable, -.cm-s-default .cm-punctuation, -.cm-s-default .cm-property, -.cm-s-default .cm-operator {} -.cm-s-default .cm-variable-2 {color: #05a;} -.cm-s-default .cm-variable-3 {color: #085;} -.cm-s-default .cm-comment {color: #a50;} -.cm-s-default .cm-string {color: #a11;} -.cm-s-default .cm-string-2 {color: #f50;} -.cm-s-default .cm-meta {color: #555;} -.cm-s-default .cm-qualifier {color: #555;} -.cm-s-default .cm-builtin {color: #30a;} -.cm-s-default .cm-bracket {color: #997;} -.cm-s-default .cm-tag {color: #170;} -.cm-s-default .cm-attribute {color: #00c;} -.cm-s-default .cm-header {color: blue;} -.cm-s-default .cm-quote {color: #090;} -.cm-s-default .cm-hr {color: #999;} -.cm-s-default .cm-link {color: #00c;} - -.cm-negative {color: #d44;} -.cm-positive {color: #292;} -.cm-header, .cm-strong {font-weight: bold;} -.cm-em {font-style: italic;} -.cm-link {text-decoration: underline;} -.cm-strikethrough {text-decoration: line-through;} - -.cm-s-default .cm-error {color: #f00;} -.cm-invalidchar {color: #f00;} - -/* Default styles for common addons */ - -div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} -div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} -.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } -.CodeMirror-activeline-background {background: #e8f2ff;} - -/* STOP */ - -/* The rest of this file contains styles related to the mechanics of - the editor. You probably shouldn't touch them. */ - -.CodeMirror { - line-height: 1; - position: relative; - overflow: hidden; - background: white; - color: black; -} - -.CodeMirror-scroll { - /* 30px is the magic margin used to hide the element's real scrollbars */ - /* See overflow: hidden in .CodeMirror */ - margin-bottom: -30px; margin-right: -30px; - padding-bottom: 30px; - height: 100%; - outline: none; /* Prevent dragging from highlighting the element */ - position: relative; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -.CodeMirror-sizer { - position: relative; - border-right: 30px solid transparent; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* The fake, visible scrollbars. Used to force redraw during scrolling - before actuall scrolling happens, thus preventing shaking and - flickering artifacts. */ -.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - position: absolute; - z-index: 6; - display: none; -} -.CodeMirror-vscrollbar { - right: 0; top: 0; - overflow-x: hidden; - overflow-y: scroll; -} -.CodeMirror-hscrollbar { - bottom: 0; left: 0; - overflow-y: hidden; - overflow-x: scroll; -} -.CodeMirror-scrollbar-filler { - right: 0; bottom: 0; -} -.CodeMirror-gutter-filler { - left: 0; bottom: 0; -} - -.CodeMirror-gutters { - position: absolute; left: 0; top: 0; - padding-bottom: 30px; - z-index: 3; -} -.CodeMirror-gutter { - white-space: normal; - height: 100%; - -moz-box-sizing: content-box; - box-sizing: content-box; - padding-bottom: 30px; - margin-bottom: -32px; - display: inline-block; - /* Hack to make IE7 behave */ - *zoom:1; - *display:inline; -} -.CodeMirror-gutter-wrapper { - position: absolute; - z-index: 4; - height: 100%; -} -.CodeMirror-gutter-elt { - position: absolute; - cursor: default; - z-index: 4; -} - -.CodeMirror-lines { - cursor: text; - min-height: 1px; /* prevents collapsing before first draw */ -} -.CodeMirror pre { - /* Reset some styles that the rest of the page might have set */ - -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; - border-width: 0; - background: transparent; - font-family: inherit; - font-size: inherit; - margin: 0; - white-space: pre; - word-wrap: normal; - line-height: inherit; - color: inherit; - z-index: 2; - position: relative; - overflow: visible; -} -.CodeMirror-wrap pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: normal; -} - -.CodeMirror-linebackground { - position: absolute; - left: 0; right: 0; top: 0; bottom: 0; - z-index: 0; -} - -.CodeMirror-linewidget { - position: relative; - z-index: 2; - overflow: auto; -} - -.CodeMirror-widget {} - -.CodeMirror-wrap .CodeMirror-scroll { - overflow-x: hidden; -} - -.CodeMirror-measure { - position: absolute; - width: 100%; - height: 0; - overflow: hidden; - visibility: hidden; -} -.CodeMirror-measure pre { position: static; } - -.CodeMirror div.CodeMirror-cursor { - position: absolute; - border-right: none; - width: 0; -} - -div.CodeMirror-cursors { - visibility: hidden; - position: relative; - z-index: 3; -} -.CodeMirror-focused div.CodeMirror-cursors { - visibility: visible; -} - -.CodeMirror-selected { background: #d9d9d9; } -.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } -.CodeMirror-crosshair { cursor: crosshair; } - -.cm-searching { - background: #ffa; - background: rgba(255, 255, 0, .4); -} - -/* IE7 hack to prevent it from returning funny offsetTops on the spans */ -.CodeMirror span { *vertical-align: text-bottom; } - -/* Used to force a border model for a node */ -.cm-force-border { padding-right: .1px; } - -@media print { - /* Hide the cursor when printing */ - .CodeMirror div.CodeMirror-cursors { - visibility: hidden; - } -} - -/* See issue #2901 */ -.cm-tab-wrap-hack:after { content: ''; } - -/* Help users use markselection to safely style text background */ -span.CodeMirror-selectedtext { background: none; } diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/lib/codemirror.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/lib/codemirror.js deleted file mode 100644 index e6011f7..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/lib/codemirror.js +++ /dev/null @@ -1,7922 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// This is CodeMirror (http://codemirror.net), a code editor -// implemented in JavaScript on top of the browser's DOM. -// -// You can find some technical background for some of the code below -// at http://marijnhaverbeke.nl/blog/#cm-internals . - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - module.exports = mod(); - else if (typeof define == "function" && define.amd) // AMD - return define([], mod); - else // Plain browser env - this.CodeMirror = mod(); -})(function() { - "use strict"; - - // BROWSER SNIFFING - - // Kludges for bugs and behavior differences that can't be feature - // detected are enabled based on userAgent etc sniffing. - - var gecko = /gecko\/\d/i.test(navigator.userAgent); - // ie_uptoN means Internet Explorer version N or lower - var ie_upto10 = /MSIE \d/.test(navigator.userAgent); - var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent); - var ie = ie_upto10 || ie_11up; - var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : ie_11up[1]); - var webkit = /WebKit\//.test(navigator.userAgent); - var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(navigator.userAgent); - var chrome = /Chrome\//.test(navigator.userAgent); - var presto = /Opera\//.test(navigator.userAgent); - var safari = /Apple Computer/.test(navigator.vendor); - var khtml = /KHTML\//.test(navigator.userAgent); - var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent); - var phantom = /PhantomJS/.test(navigator.userAgent); - - var ios = /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent); - // This is woefully incomplete. Suggestions for alternative methods welcome. - var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent); - var mac = ios || /Mac/.test(navigator.platform); - var windows = /win/i.test(navigator.platform); - - var presto_version = presto && navigator.userAgent.match(/Version\/(\d*\.\d*)/); - if (presto_version) presto_version = Number(presto_version[1]); - if (presto_version && presto_version >= 15) { presto = false; webkit = true; } - // Some browsers use the wrong event properties to signal cmd/ctrl on OS X - var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)); - var captureRightClick = gecko || (ie && ie_version >= 9); - - // Optimize some code when these features are not used. - var sawReadOnlySpans = false, sawCollapsedSpans = false; - - // EDITOR CONSTRUCTOR - - // A CodeMirror instance represents an editor. This is the object - // that user code is usually dealing with. - - function CodeMirror(place, options) { - if (!(this instanceof CodeMirror)) return new CodeMirror(place, options); - - this.options = options = options ? copyObj(options) : {}; - // Determine effective options based on given values and defaults. - copyObj(defaults, options, false); - setGuttersForLineNumbers(options); - - var doc = options.value; - if (typeof doc == "string") doc = new Doc(doc, options.mode); - this.doc = doc; - - var display = this.display = new Display(place, doc); - display.wrapper.CodeMirror = this; - updateGutters(this); - themeChanged(this); - if (options.lineWrapping) - this.display.wrapper.className += " CodeMirror-wrap"; - if (options.autofocus && !mobile) focusInput(this); - - this.state = { - keyMaps: [], // stores maps added by addKeyMap - overlays: [], // highlighting overlays, as added by addOverlay - modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info - overwrite: false, focused: false, - suppressEdits: false, // used to disable editing during key handlers when in readOnly mode - pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in readInput - draggingText: false, - highlight: new Delayed(), // stores highlight worker timeout - keySeq: null // Unfinished key sequence - }; - - // Override magic textarea content restore that IE sometimes does - // on our hidden textarea on reload - if (ie && ie_version < 11) setTimeout(bind(resetInput, this, true), 20); - - registerEventHandlers(this); - ensureGlobalHandlers(); - - startOperation(this); - this.curOp.forceUpdate = true; - attachDoc(this, doc); - - if ((options.autofocus && !mobile) || activeElt() == display.input) - setTimeout(bind(onFocus, this), 20); - else - onBlur(this); - - for (var opt in optionHandlers) if (optionHandlers.hasOwnProperty(opt)) - optionHandlers[opt](this, options[opt], Init); - maybeUpdateLineNumberWidth(this); - for (var i = 0; i < initHooks.length; ++i) initHooks[i](this); - endOperation(this); - } - - // DISPLAY CONSTRUCTOR - - // The display handles the DOM integration, both for input reading - // and content drawing. It holds references to DOM nodes and - // display-related state. - - function Display(place, doc) { - var d = this; - - // The semihidden textarea that is focused when the editor is - // focused, and receives input. - var input = d.input = elt("textarea", null, null, "position: absolute; padding: 0; width: 1px; height: 1em; outline: none"); - // The textarea is kept positioned near the cursor to prevent the - // fact that it'll be scrolled into view on input from scrolling - // our fake cursor out of view. On webkit, when wrap=off, paste is - // very slow. So make the area wide instead. - if (webkit) input.style.width = "1000px"; - else input.setAttribute("wrap", "off"); - // If border: 0; -- iOS fails to open keyboard (issue #1287) - if (ios) input.style.border = "1px solid black"; - input.setAttribute("autocorrect", "off"); input.setAttribute("autocapitalize", "off"); input.setAttribute("spellcheck", "false"); - - // Wraps and hides input textarea - d.inputDiv = elt("div", [input], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); - // The fake scrollbar elements. - d.scrollbarH = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); - d.scrollbarV = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"); - // Covers bottom-right square when both scrollbars are present. - d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler"); - // Covers bottom of gutter when coverGutterNextToScrollbar is on - // and h scrollbar is present. - d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler"); - // Will contain the actual code, positioned to cover the viewport. - d.lineDiv = elt("div", null, "CodeMirror-code"); - // Elements are added to these to represent selection and cursors. - d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1"); - d.cursorDiv = elt("div", null, "CodeMirror-cursors"); - // A visibility: hidden element used to find the size of things. - d.measure = elt("div", null, "CodeMirror-measure"); - // When lines outside of the viewport are measured, they are drawn in this. - d.lineMeasure = elt("div", null, "CodeMirror-measure"); - // Wraps everything that needs to exist inside the vertically-padded coordinate system - d.lineSpace = elt("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], - null, "position: relative; outline: none"); - // Moved around its parent to cover visible view. - d.mover = elt("div", [elt("div", [d.lineSpace], "CodeMirror-lines")], null, "position: relative"); - // Set to the height of the document, allowing scrolling. - d.sizer = elt("div", [d.mover], "CodeMirror-sizer"); - // Behavior of elts with overflow: auto and padding is - // inconsistent across browsers. This is used to ensure the - // scrollable area is big enough. - d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerCutOff + "px; width: 1px;"); - // Will contain the gutters, if any. - d.gutters = elt("div", null, "CodeMirror-gutters"); - d.lineGutter = null; - // Actual scrollable element. - d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"); - d.scroller.setAttribute("tabIndex", "-1"); - // The element in which the editor lives. - d.wrapper = elt("div", [d.inputDiv, d.scrollbarH, d.scrollbarV, - d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"); - - // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) - if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; } - // Needed to hide big blue blinking cursor on Mobile Safari - if (ios) input.style.width = "0px"; - if (!webkit) d.scroller.draggable = true; - // Needed to handle Tab key in KHTML - if (khtml) { d.inputDiv.style.height = "1px"; d.inputDiv.style.position = "absolute"; } - // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). - if (ie && ie_version < 8) d.scrollbarH.style.minHeight = d.scrollbarV.style.minWidth = "18px"; - - if (place) { - if (place.appendChild) place.appendChild(d.wrapper); - else place(d.wrapper); - } - - // Current rendered range (may be bigger than the view window). - d.viewFrom = d.viewTo = doc.first; - // Information about the rendered lines. - d.view = []; - // Holds info about a single rendered line when it was rendered - // for measurement, while not in view. - d.externalMeasured = null; - // Empty space (in pixels) above the view - d.viewOffset = 0; - d.lastWrapHeight = d.lastWrapWidth = 0; - d.updateLineNumbers = null; - - // Used to only resize the line number gutter when necessary (when - // the amount of lines crosses a boundary that makes its width change) - d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; - // See readInput and resetInput - d.prevInput = ""; - // Set to true when a non-horizontal-scrolling line widget is - // added. As an optimization, line widget aligning is skipped when - // this is false. - d.alignWidgets = false; - // Flag that indicates whether we expect input to appear real soon - // now (after some event like 'keypress' or 'input') and are - // polling intensively. - d.pollingFast = false; - // Self-resetting timeout for the poller - d.poll = new Delayed(); - - d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; - - // Tracks when resetInput has punted to just putting a short - // string into the textarea instead of the full selection. - d.inaccurateSelection = false; - - // Tracks the maximum line length so that the horizontal scrollbar - // can be kept static when scrolling. - d.maxLine = null; - d.maxLineLength = 0; - d.maxLineChanged = false; - - // Used for measuring wheel scrolling granularity - d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; - - // True when shift is held down. - d.shift = false; - - // Used to track whether anything happened since the context menu - // was opened. - d.selForContextMenu = null; - } - - // STATE UPDATES - - // Used to get the editor into a consistent state again when options change. - - function loadMode(cm) { - cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption); - resetModeState(cm); - } - - function resetModeState(cm) { - cm.doc.iter(function(line) { - if (line.stateAfter) line.stateAfter = null; - if (line.styles) line.styles = null; - }); - cm.doc.frontier = cm.doc.first; - startWorker(cm, 100); - cm.state.modeGen++; - if (cm.curOp) regChange(cm); - } - - function wrappingChanged(cm) { - if (cm.options.lineWrapping) { - addClass(cm.display.wrapper, "CodeMirror-wrap"); - cm.display.sizer.style.minWidth = ""; - } else { - rmClass(cm.display.wrapper, "CodeMirror-wrap"); - findMaxLine(cm); - } - estimateLineHeights(cm); - regChange(cm); - clearCaches(cm); - setTimeout(function(){updateScrollbars(cm);}, 100); - } - - // Returns a function that estimates the height of a line, to use as - // first approximation until the line becomes visible (and is thus - // properly measurable). - function estimateHeight(cm) { - var th = textHeight(cm.display), wrapping = cm.options.lineWrapping; - var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); - return function(line) { - if (lineIsHidden(cm.doc, line)) return 0; - - var widgetsHeight = 0; - if (line.widgets) for (var i = 0; i < line.widgets.length; i++) { - if (line.widgets[i].height) widgetsHeight += line.widgets[i].height; - } - - if (wrapping) - return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th; - else - return widgetsHeight + th; - }; - } - - function estimateLineHeights(cm) { - var doc = cm.doc, est = estimateHeight(cm); - doc.iter(function(line) { - var estHeight = est(line); - if (estHeight != line.height) updateLineHeight(line, estHeight); - }); - } - - function themeChanged(cm) { - cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + - cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-"); - clearCaches(cm); - } - - function guttersChanged(cm) { - updateGutters(cm); - regChange(cm); - setTimeout(function(){alignHorizontally(cm);}, 20); - } - - // Rebuild the gutter elements, ensure the margin to the left of the - // code matches their width. - function updateGutters(cm) { - var gutters = cm.display.gutters, specs = cm.options.gutters; - removeChildren(gutters); - for (var i = 0; i < specs.length; ++i) { - var gutterClass = specs[i]; - var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)); - if (gutterClass == "CodeMirror-linenumbers") { - cm.display.lineGutter = gElt; - gElt.style.width = (cm.display.lineNumWidth || 1) + "px"; - } - } - gutters.style.display = i ? "" : "none"; - updateGutterSpace(cm); - } - - function updateGutterSpace(cm) { - var width = cm.display.gutters.offsetWidth; - cm.display.sizer.style.marginLeft = width + "px"; - cm.display.scrollbarH.style.left = cm.options.fixedGutter ? width + "px" : 0; - } - - // Compute the character length of a line, taking into account - // collapsed ranges (see markText) that might hide parts, and join - // other lines onto it. - function lineLength(line) { - if (line.height == 0) return 0; - var len = line.text.length, merged, cur = line; - while (merged = collapsedSpanAtStart(cur)) { - var found = merged.find(0, true); - cur = found.from.line; - len += found.from.ch - found.to.ch; - } - cur = line; - while (merged = collapsedSpanAtEnd(cur)) { - var found = merged.find(0, true); - len -= cur.text.length - found.from.ch; - cur = found.to.line; - len += cur.text.length - found.to.ch; - } - return len; - } - - // Find the longest line in the document. - function findMaxLine(cm) { - var d = cm.display, doc = cm.doc; - d.maxLine = getLine(doc, doc.first); - d.maxLineLength = lineLength(d.maxLine); - d.maxLineChanged = true; - doc.iter(function(line) { - var len = lineLength(line); - if (len > d.maxLineLength) { - d.maxLineLength = len; - d.maxLine = line; - } - }); - } - - // Make sure the gutters options contains the element - // "CodeMirror-linenumbers" when the lineNumbers option is true. - function setGuttersForLineNumbers(options) { - var found = indexOf(options.gutters, "CodeMirror-linenumbers"); - if (found == -1 && options.lineNumbers) { - options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]); - } else if (found > -1 && !options.lineNumbers) { - options.gutters = options.gutters.slice(0); - options.gutters.splice(found, 1); - } - } - - // SCROLLBARS - - function hScrollbarTakesSpace(cm) { - return cm.display.scroller.clientHeight - cm.display.wrapper.clientHeight < scrollerCutOff - 3; - } - - // Prepare DOM reads needed to update the scrollbars. Done in one - // shot to minimize update/measure roundtrips. - function measureForScrollbars(cm) { - var scroll = cm.display.scroller; - return { - clientHeight: scroll.clientHeight, - barHeight: cm.display.scrollbarV.clientHeight, - scrollWidth: scroll.scrollWidth, clientWidth: scroll.clientWidth, - hScrollbarTakesSpace: hScrollbarTakesSpace(cm), - barWidth: cm.display.scrollbarH.clientWidth, - docHeight: Math.round(cm.doc.height + paddingVert(cm.display)) - }; - } - - // Re-synchronize the fake scrollbars with the actual size of the - // content. - function updateScrollbars(cm, measure) { - if (!measure) measure = measureForScrollbars(cm); - var d = cm.display, sWidth = scrollbarWidth(d.measure); - var scrollHeight = measure.docHeight + scrollerCutOff; - var needsH = measure.scrollWidth > measure.clientWidth; - if (needsH && measure.scrollWidth <= measure.clientWidth + 1 && - sWidth > 0 && !measure.hScrollbarTakesSpace) - needsH = false; // (Issue #2562) - var needsV = scrollHeight > measure.clientHeight; - - if (needsV) { - d.scrollbarV.style.display = "block"; - d.scrollbarV.style.bottom = needsH ? sWidth + "px" : "0"; - // A bug in IE8 can cause this value to be negative, so guard it. - d.scrollbarV.firstChild.style.height = - Math.max(0, scrollHeight - measure.clientHeight + (measure.barHeight || d.scrollbarV.clientHeight)) + "px"; - } else { - d.scrollbarV.style.display = ""; - d.scrollbarV.firstChild.style.height = "0"; - } - if (needsH) { - d.scrollbarH.style.display = "block"; - d.scrollbarH.style.right = needsV ? sWidth + "px" : "0"; - d.scrollbarH.firstChild.style.width = - (measure.scrollWidth - measure.clientWidth + (measure.barWidth || d.scrollbarH.clientWidth)) + "px"; - } else { - d.scrollbarH.style.display = ""; - d.scrollbarH.firstChild.style.width = "0"; - } - if (needsH && needsV) { - d.scrollbarFiller.style.display = "block"; - d.scrollbarFiller.style.height = d.scrollbarFiller.style.width = sWidth + "px"; - } else d.scrollbarFiller.style.display = ""; - if (needsH && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { - d.gutterFiller.style.display = "block"; - d.gutterFiller.style.height = sWidth + "px"; - d.gutterFiller.style.width = d.gutters.offsetWidth + "px"; - } else d.gutterFiller.style.display = ""; - - if (!cm.state.checkedOverlayScrollbar && measure.clientHeight > 0) { - if (sWidth === 0) { - var w = mac && !mac_geMountainLion ? "12px" : "18px"; - d.scrollbarV.style.minWidth = d.scrollbarH.style.minHeight = w; - var barMouseDown = function(e) { - if (e_target(e) != d.scrollbarV && e_target(e) != d.scrollbarH) - operation(cm, onMouseDown)(e); - }; - on(d.scrollbarV, "mousedown", barMouseDown); - on(d.scrollbarH, "mousedown", barMouseDown); - } - cm.state.checkedOverlayScrollbar = true; - } - } - - // Compute the lines that are visible in a given viewport (defaults - // the the current scroll position). viewport may contain top, - // height, and ensure (see op.scrollToPos) properties. - function visibleLines(display, doc, viewport) { - var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop; - top = Math.floor(top - paddingTop(display)); - var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight; - - var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom); - // Ensure is a {from: {line, ch}, to: {line, ch}} object, and - // forces those lines into the viewport (if possible). - if (viewport && viewport.ensure) { - var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line; - if (ensureFrom < from) - return {from: ensureFrom, - to: lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight)}; - if (Math.min(ensureTo, doc.lastLine()) >= to) - return {from: lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight), - to: ensureTo}; - } - return {from: from, to: Math.max(to, from + 1)}; - } - - // LINE NUMBERS - - // Re-align line numbers and gutter marks to compensate for - // horizontal scrolling. - function alignHorizontally(cm) { - var display = cm.display, view = display.view; - if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return; - var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft; - var gutterW = display.gutters.offsetWidth, left = comp + "px"; - for (var i = 0; i < view.length; i++) if (!view[i].hidden) { - if (cm.options.fixedGutter && view[i].gutter) - view[i].gutter.style.left = left; - var align = view[i].alignable; - if (align) for (var j = 0; j < align.length; j++) - align[j].style.left = left; - } - if (cm.options.fixedGutter) - display.gutters.style.left = (comp + gutterW) + "px"; - } - - // Used to ensure that the line number gutter is still the right - // size for the current document size. Returns true when an update - // is needed. - function maybeUpdateLineNumberWidth(cm) { - if (!cm.options.lineNumbers) return false; - var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display; - if (last.length != display.lineNumChars) { - var test = display.measure.appendChild(elt("div", [elt("div", last)], - "CodeMirror-linenumber CodeMirror-gutter-elt")); - var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW; - display.lineGutter.style.width = ""; - display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding); - display.lineNumWidth = display.lineNumInnerWidth + padding; - display.lineNumChars = display.lineNumInnerWidth ? last.length : -1; - display.lineGutter.style.width = display.lineNumWidth + "px"; - updateGutterSpace(cm); - return true; - } - return false; - } - - function lineNumberFor(options, i) { - return String(options.lineNumberFormatter(i + options.firstLineNumber)); - } - - // Computes display.scroller.scrollLeft + display.gutters.offsetWidth, - // but using getBoundingClientRect to get a sub-pixel-accurate - // result. - function compensateForHScroll(display) { - return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left; - } - - // DISPLAY DRAWING - - function DisplayUpdate(cm, viewport, force) { - var display = cm.display; - - this.viewport = viewport; - // Store some values that we'll need later (but don't want to force a relayout for) - this.visible = visibleLines(display, cm.doc, viewport); - this.editorIsHidden = !display.wrapper.offsetWidth; - this.wrapperHeight = display.wrapper.clientHeight; - this.wrapperWidth = display.wrapper.clientWidth; - this.oldViewFrom = display.viewFrom; this.oldViewTo = display.viewTo; - this.oldScrollerWidth = display.scroller.clientWidth; - this.force = force; - this.dims = getDimensions(cm); - } - - // Does the actual updating of the line display. Bails out - // (returning false) when there is nothing to be done and forced is - // false. - function updateDisplayIfNeeded(cm, update) { - var display = cm.display, doc = cm.doc; - if (update.editorIsHidden) { - resetView(cm); - return false; - } - - // Bail out if the visible area is already rendered and nothing changed. - if (!update.force && - update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && - (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && - countDirtyView(cm) == 0) - return false; - - if (maybeUpdateLineNumberWidth(cm)) { - resetView(cm); - update.dims = getDimensions(cm); - } - - // Compute a suitable new viewport (from & to) - var end = doc.first + doc.size; - var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first); - var to = Math.min(end, update.visible.to + cm.options.viewportMargin); - if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom); - if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo); - if (sawCollapsedSpans) { - from = visualLineNo(cm.doc, from); - to = visualLineEndNo(cm.doc, to); - } - - var different = from != display.viewFrom || to != display.viewTo || - display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth; - adjustView(cm, from, to); - - display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); - // Position the mover div to align with the current scroll position - cm.display.mover.style.top = display.viewOffset + "px"; - - var toUpdate = countDirtyView(cm); - if (!different && toUpdate == 0 && !update.force && - (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) - return false; - - // For big changes, we hide the enclosing element during the - // update, since that speeds up the operations on most browsers. - var focused = activeElt(); - if (toUpdate > 4) display.lineDiv.style.display = "none"; - patchDisplay(cm, display.updateLineNumbers, update.dims); - if (toUpdate > 4) display.lineDiv.style.display = ""; - // There might have been a widget with a focused element that got - // hidden or updated, if so re-focus it. - if (focused && activeElt() != focused && focused.offsetHeight) focused.focus(); - - // Prevent selection and cursors from interfering with the scroll - // width. - removeChildren(display.cursorDiv); - removeChildren(display.selectionDiv); - - if (different) { - display.lastWrapHeight = update.wrapperHeight; - display.lastWrapWidth = update.wrapperWidth; - startWorker(cm, 400); - } - - display.updateLineNumbers = null; - - return true; - } - - function postUpdateDisplay(cm, update) { - var force = update.force, viewport = update.viewport; - for (var first = true;; first = false) { - if (first && cm.options.lineWrapping && update.oldScrollerWidth != cm.display.scroller.clientWidth) { - force = true; - } else { - force = false; - // Clip forced viewport to actual scrollable area. - if (viewport && viewport.top != null) - viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - scrollerCutOff - - cm.display.scroller.clientHeight, viewport.top)}; - // Updated line heights might result in the drawn area not - // actually covering the viewport. Keep looping until it does. - update.visible = visibleLines(cm.display, cm.doc, viewport); - if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) - break; - } - if (!updateDisplayIfNeeded(cm, update)) break; - updateHeightsInViewport(cm); - var barMeasure = measureForScrollbars(cm); - updateSelection(cm); - setDocumentHeight(cm, barMeasure); - updateScrollbars(cm, barMeasure); - } - - signalLater(cm, "update", cm); - if (cm.display.viewFrom != update.oldViewFrom || cm.display.viewTo != update.oldViewTo) - signalLater(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo); - } - - function updateDisplaySimple(cm, viewport) { - var update = new DisplayUpdate(cm, viewport); - if (updateDisplayIfNeeded(cm, update)) { - updateHeightsInViewport(cm); - postUpdateDisplay(cm, update); - var barMeasure = measureForScrollbars(cm); - updateSelection(cm); - setDocumentHeight(cm, barMeasure); - updateScrollbars(cm, barMeasure); - } - } - - function setDocumentHeight(cm, measure) { - cm.display.sizer.style.minHeight = cm.display.heightForcer.style.top = measure.docHeight + "px"; - cm.display.gutters.style.height = Math.max(measure.docHeight, measure.clientHeight - scrollerCutOff) + "px"; - } - - function checkForWebkitWidthBug(cm, measure) { - // Work around Webkit bug where it sometimes reserves space for a - // non-existing phantom scrollbar in the scroller (Issue #2420) - if (cm.display.sizer.offsetWidth + cm.display.gutters.offsetWidth < cm.display.scroller.clientWidth - 1) { - cm.display.sizer.style.minHeight = cm.display.heightForcer.style.top = "0px"; - cm.display.gutters.style.height = measure.docHeight + "px"; - } - } - - // Read the actual heights of the rendered lines, and update their - // stored heights to match. - function updateHeightsInViewport(cm) { - var display = cm.display; - var prevBottom = display.lineDiv.offsetTop; - for (var i = 0; i < display.view.length; i++) { - var cur = display.view[i], height; - if (cur.hidden) continue; - if (ie && ie_version < 8) { - var bot = cur.node.offsetTop + cur.node.offsetHeight; - height = bot - prevBottom; - prevBottom = bot; - } else { - var box = cur.node.getBoundingClientRect(); - height = box.bottom - box.top; - } - var diff = cur.line.height - height; - if (height < 2) height = textHeight(display); - if (diff > .001 || diff < -.001) { - updateLineHeight(cur.line, height); - updateWidgetHeight(cur.line); - if (cur.rest) for (var j = 0; j < cur.rest.length; j++) - updateWidgetHeight(cur.rest[j]); - } - } - } - - // Read and store the height of line widgets associated with the - // given line. - function updateWidgetHeight(line) { - if (line.widgets) for (var i = 0; i < line.widgets.length; ++i) - line.widgets[i].height = line.widgets[i].node.offsetHeight; - } - - // Do a bulk-read of the DOM positions and sizes needed to draw the - // view, so that we don't interleave reading and writing to the DOM. - function getDimensions(cm) { - var d = cm.display, left = {}, width = {}; - var gutterLeft = d.gutters.clientLeft; - for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { - left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft; - width[cm.options.gutters[i]] = n.clientWidth; - } - return {fixedPos: compensateForHScroll(d), - gutterTotalWidth: d.gutters.offsetWidth, - gutterLeft: left, - gutterWidth: width, - wrapperWidth: d.wrapper.clientWidth}; - } - - // Sync the actual display DOM structure with display.view, removing - // nodes for lines that are no longer in view, and creating the ones - // that are not there yet, and updating the ones that are out of - // date. - function patchDisplay(cm, updateNumbersFrom, dims) { - var display = cm.display, lineNumbers = cm.options.lineNumbers; - var container = display.lineDiv, cur = container.firstChild; - - function rm(node) { - var next = node.nextSibling; - // Works around a throw-scroll bug in OS X Webkit - if (webkit && mac && cm.display.currentWheelTarget == node) - node.style.display = "none"; - else - node.parentNode.removeChild(node); - return next; - } - - var view = display.view, lineN = display.viewFrom; - // Loop over the elements in the view, syncing cur (the DOM nodes - // in display.lineDiv) with the view as we go. - for (var i = 0; i < view.length; i++) { - var lineView = view[i]; - if (lineView.hidden) { - } else if (!lineView.node) { // Not drawn yet - var node = buildLineElement(cm, lineView, lineN, dims); - container.insertBefore(node, cur); - } else { // Already drawn - while (cur != lineView.node) cur = rm(cur); - var updateNumber = lineNumbers && updateNumbersFrom != null && - updateNumbersFrom <= lineN && lineView.lineNumber; - if (lineView.changes) { - if (indexOf(lineView.changes, "gutter") > -1) updateNumber = false; - updateLineForChanges(cm, lineView, lineN, dims); - } - if (updateNumber) { - removeChildren(lineView.lineNumber); - lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))); - } - cur = lineView.node.nextSibling; - } - lineN += lineView.size; - } - while (cur) cur = rm(cur); - } - - // When an aspect of a line changes, a string is added to - // lineView.changes. This updates the relevant part of the line's - // DOM structure. - function updateLineForChanges(cm, lineView, lineN, dims) { - for (var j = 0; j < lineView.changes.length; j++) { - var type = lineView.changes[j]; - if (type == "text") updateLineText(cm, lineView); - else if (type == "gutter") updateLineGutter(cm, lineView, lineN, dims); - else if (type == "class") updateLineClasses(lineView); - else if (type == "widget") updateLineWidgets(lineView, dims); - } - lineView.changes = null; - } - - // Lines with gutter elements, widgets or a background class need to - // be wrapped, and have the extra elements added to the wrapper div - function ensureLineWrapped(lineView) { - if (lineView.node == lineView.text) { - lineView.node = elt("div", null, null, "position: relative"); - if (lineView.text.parentNode) - lineView.text.parentNode.replaceChild(lineView.node, lineView.text); - lineView.node.appendChild(lineView.text); - if (ie && ie_version < 8) lineView.node.style.zIndex = 2; - } - return lineView.node; - } - - function updateLineBackground(lineView) { - var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass; - if (cls) cls += " CodeMirror-linebackground"; - if (lineView.background) { - if (cls) lineView.background.className = cls; - else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; } - } else if (cls) { - var wrap = ensureLineWrapped(lineView); - lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild); - } - } - - // Wrapper around buildLineContent which will reuse the structure - // in display.externalMeasured when possible. - function getLineContent(cm, lineView) { - var ext = cm.display.externalMeasured; - if (ext && ext.line == lineView.line) { - cm.display.externalMeasured = null; - lineView.measure = ext.measure; - return ext.built; - } - return buildLineContent(cm, lineView); - } - - // Redraw the line's text. Interacts with the background and text - // classes because the mode may output tokens that influence these - // classes. - function updateLineText(cm, lineView) { - var cls = lineView.text.className; - var built = getLineContent(cm, lineView); - if (lineView.text == lineView.node) lineView.node = built.pre; - lineView.text.parentNode.replaceChild(built.pre, lineView.text); - lineView.text = built.pre; - if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { - lineView.bgClass = built.bgClass; - lineView.textClass = built.textClass; - updateLineClasses(lineView); - } else if (cls) { - lineView.text.className = cls; - } - } - - function updateLineClasses(lineView) { - updateLineBackground(lineView); - if (lineView.line.wrapClass) - ensureLineWrapped(lineView).className = lineView.line.wrapClass; - else if (lineView.node != lineView.text) - lineView.node.className = ""; - var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass; - lineView.text.className = textClass || ""; - } - - function updateLineGutter(cm, lineView, lineN, dims) { - if (lineView.gutter) { - lineView.node.removeChild(lineView.gutter); - lineView.gutter = null; - } - var markers = lineView.line.gutterMarkers; - if (cm.options.lineNumbers || markers) { - var wrap = ensureLineWrapped(lineView); - var gutterWrap = lineView.gutter = - wrap.insertBefore(elt("div", null, "CodeMirror-gutter-wrapper", "left: " + - (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + - "px; width: " + dims.gutterTotalWidth + "px"), - lineView.text); - if (lineView.line.gutterClass) - gutterWrap.className += " " + lineView.line.gutterClass; - if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) - lineView.lineNumber = gutterWrap.appendChild( - elt("div", lineNumberFor(cm.options, lineN), - "CodeMirror-linenumber CodeMirror-gutter-elt", - "left: " + dims.gutterLeft["CodeMirror-linenumbers"] + "px; width: " - + cm.display.lineNumInnerWidth + "px")); - if (markers) for (var k = 0; k < cm.options.gutters.length; ++k) { - var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id]; - if (found) - gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", "left: " + - dims.gutterLeft[id] + "px; width: " + dims.gutterWidth[id] + "px")); - } - } - } - - function updateLineWidgets(lineView, dims) { - if (lineView.alignable) lineView.alignable = null; - for (var node = lineView.node.firstChild, next; node; node = next) { - var next = node.nextSibling; - if (node.className == "CodeMirror-linewidget") - lineView.node.removeChild(node); - } - insertLineWidgets(lineView, dims); - } - - // Build a line's DOM representation from scratch - function buildLineElement(cm, lineView, lineN, dims) { - var built = getLineContent(cm, lineView); - lineView.text = lineView.node = built.pre; - if (built.bgClass) lineView.bgClass = built.bgClass; - if (built.textClass) lineView.textClass = built.textClass; - - updateLineClasses(lineView); - updateLineGutter(cm, lineView, lineN, dims); - insertLineWidgets(lineView, dims); - return lineView.node; - } - - // A lineView may contain multiple logical lines (when merged by - // collapsed spans). The widgets for all of them need to be drawn. - function insertLineWidgets(lineView, dims) { - insertLineWidgetsFor(lineView.line, lineView, dims, true); - if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) - insertLineWidgetsFor(lineView.rest[i], lineView, dims, false); - } - - function insertLineWidgetsFor(line, lineView, dims, allowAbove) { - if (!line.widgets) return; - var wrap = ensureLineWrapped(lineView); - for (var i = 0, ws = line.widgets; i < ws.length; ++i) { - var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget"); - if (!widget.handleMouseEvents) node.ignoreEvents = true; - positionLineWidget(widget, node, lineView, dims); - if (allowAbove && widget.above) - wrap.insertBefore(node, lineView.gutter || lineView.text); - else - wrap.appendChild(node); - signalLater(widget, "redraw"); - } - } - - function positionLineWidget(widget, node, lineView, dims) { - if (widget.noHScroll) { - (lineView.alignable || (lineView.alignable = [])).push(node); - var width = dims.wrapperWidth; - node.style.left = dims.fixedPos + "px"; - if (!widget.coverGutter) { - width -= dims.gutterTotalWidth; - node.style.paddingLeft = dims.gutterTotalWidth + "px"; - } - node.style.width = width + "px"; - } - if (widget.coverGutter) { - node.style.zIndex = 5; - node.style.position = "relative"; - if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + "px"; - } - } - - // POSITION OBJECT - - // A Pos instance represents a position within the text. - var Pos = CodeMirror.Pos = function(line, ch) { - if (!(this instanceof Pos)) return new Pos(line, ch); - this.line = line; this.ch = ch; - }; - - // Compare two positions, return 0 if they are the same, a negative - // number when a is less, and a positive number otherwise. - var cmp = CodeMirror.cmpPos = function(a, b) { return a.line - b.line || a.ch - b.ch; }; - - function copyPos(x) {return Pos(x.line, x.ch);} - function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; } - function minPos(a, b) { return cmp(a, b) < 0 ? a : b; } - - // SELECTION / CURSOR - - // Selection objects are immutable. A new one is created every time - // the selection changes. A selection is one or more non-overlapping - // (and non-touching) ranges, sorted, and an integer that indicates - // which one is the primary selection (the one that's scrolled into - // view, that getCursor returns, etc). - function Selection(ranges, primIndex) { - this.ranges = ranges; - this.primIndex = primIndex; - } - - Selection.prototype = { - primary: function() { return this.ranges[this.primIndex]; }, - equals: function(other) { - if (other == this) return true; - if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false; - for (var i = 0; i < this.ranges.length; i++) { - var here = this.ranges[i], there = other.ranges[i]; - if (cmp(here.anchor, there.anchor) != 0 || cmp(here.head, there.head) != 0) return false; - } - return true; - }, - deepCopy: function() { - for (var out = [], i = 0; i < this.ranges.length; i++) - out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); - return new Selection(out, this.primIndex); - }, - somethingSelected: function() { - for (var i = 0; i < this.ranges.length; i++) - if (!this.ranges[i].empty()) return true; - return false; - }, - contains: function(pos, end) { - if (!end) end = pos; - for (var i = 0; i < this.ranges.length; i++) { - var range = this.ranges[i]; - if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) - return i; - } - return -1; - } - }; - - function Range(anchor, head) { - this.anchor = anchor; this.head = head; - } - - Range.prototype = { - from: function() { return minPos(this.anchor, this.head); }, - to: function() { return maxPos(this.anchor, this.head); }, - empty: function() { - return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch; - } - }; - - // Take an unsorted, potentially overlapping set of ranges, and - // build a selection out of it. 'Consumes' ranges array (modifying - // it). - function normalizeSelection(ranges, primIndex) { - var prim = ranges[primIndex]; - ranges.sort(function(a, b) { return cmp(a.from(), b.from()); }); - primIndex = indexOf(ranges, prim); - for (var i = 1; i < ranges.length; i++) { - var cur = ranges[i], prev = ranges[i - 1]; - if (cmp(prev.to(), cur.from()) >= 0) { - var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); - var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; - if (i <= primIndex) --primIndex; - ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); - } - } - return new Selection(ranges, primIndex); - } - - function simpleSelection(anchor, head) { - return new Selection([new Range(anchor, head || anchor)], 0); - } - - // Most of the external API clips given positions to make sure they - // actually exist within the document. - function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));} - function clipPos(doc, pos) { - if (pos.line < doc.first) return Pos(doc.first, 0); - var last = doc.first + doc.size - 1; - if (pos.line > last) return Pos(last, getLine(doc, last).text.length); - return clipToLen(pos, getLine(doc, pos.line).text.length); - } - function clipToLen(pos, linelen) { - var ch = pos.ch; - if (ch == null || ch > linelen) return Pos(pos.line, linelen); - else if (ch < 0) return Pos(pos.line, 0); - else return pos; - } - function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size;} - function clipPosArray(doc, array) { - for (var out = [], i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i]); - return out; - } - - // SELECTION UPDATES - - // The 'scroll' parameter given to many of these indicated whether - // the new cursor position should be scrolled into view after - // modifying the selection. - - // If shift is held or the extend flag is set, extends a range to - // include a given position (and optionally a second position). - // Otherwise, simply returns the range between the given positions. - // Used for cursor motion and such. - function extendRange(doc, range, head, other) { - if (doc.cm && doc.cm.display.shift || doc.extend) { - var anchor = range.anchor; - if (other) { - var posBefore = cmp(head, anchor) < 0; - if (posBefore != (cmp(other, anchor) < 0)) { - anchor = head; - head = other; - } else if (posBefore != (cmp(head, other) < 0)) { - head = other; - } - } - return new Range(anchor, head); - } else { - return new Range(other || head, head); - } - } - - // Extend the primary selection range, discard the rest. - function extendSelection(doc, head, other, options) { - setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options); - } - - // Extend all selections (pos is an array of selections with length - // equal the number of selections) - function extendSelections(doc, heads, options) { - for (var out = [], i = 0; i < doc.sel.ranges.length; i++) - out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null); - var newSel = normalizeSelection(out, doc.sel.primIndex); - setSelection(doc, newSel, options); - } - - // Updates a single range in the selection. - function replaceOneSelection(doc, i, range, options) { - var ranges = doc.sel.ranges.slice(0); - ranges[i] = range; - setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options); - } - - // Reset the selection to a single range. - function setSimpleSelection(doc, anchor, head, options) { - setSelection(doc, simpleSelection(anchor, head), options); - } - - // Give beforeSelectionChange handlers a change to influence a - // selection update. - function filterSelectionChange(doc, sel) { - var obj = { - ranges: sel.ranges, - update: function(ranges) { - this.ranges = []; - for (var i = 0; i < ranges.length; i++) - this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), - clipPos(doc, ranges[i].head)); - } - }; - signal(doc, "beforeSelectionChange", doc, obj); - if (doc.cm) signal(doc.cm, "beforeSelectionChange", doc.cm, obj); - if (obj.ranges != sel.ranges) return normalizeSelection(obj.ranges, obj.ranges.length - 1); - else return sel; - } - - function setSelectionReplaceHistory(doc, sel, options) { - var done = doc.history.done, last = lst(done); - if (last && last.ranges) { - done[done.length - 1] = sel; - setSelectionNoUndo(doc, sel, options); - } else { - setSelection(doc, sel, options); - } - } - - // Set a new selection. - function setSelection(doc, sel, options) { - setSelectionNoUndo(doc, sel, options); - addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options); - } - - function setSelectionNoUndo(doc, sel, options) { - if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) - sel = filterSelectionChange(doc, sel); - - var bias = options && options.bias || - (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1); - setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)); - - if (!(options && options.scroll === false) && doc.cm) - ensureCursorVisible(doc.cm); - } - - function setSelectionInner(doc, sel) { - if (sel.equals(doc.sel)) return; - - doc.sel = sel; - - if (doc.cm) { - doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true; - signalCursorActivity(doc.cm); - } - signalLater(doc, "cursorActivity", doc); - } - - // Verify that the selection does not partially select any atomic - // marked ranges. - function reCheckSelection(doc) { - setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll); - } - - // Return a selection that does not partially select any atomic - // ranges. - function skipAtomicInSelection(doc, sel, bias, mayClear) { - var out; - for (var i = 0; i < sel.ranges.length; i++) { - var range = sel.ranges[i]; - var newAnchor = skipAtomic(doc, range.anchor, bias, mayClear); - var newHead = skipAtomic(doc, range.head, bias, mayClear); - if (out || newAnchor != range.anchor || newHead != range.head) { - if (!out) out = sel.ranges.slice(0, i); - out[i] = new Range(newAnchor, newHead); - } - } - return out ? normalizeSelection(out, sel.primIndex) : sel; - } - - // Ensure a given position is not inside an atomic range. - function skipAtomic(doc, pos, bias, mayClear) { - var flipped = false, curPos = pos; - var dir = bias || 1; - doc.cantEdit = false; - search: for (;;) { - var line = getLine(doc, curPos.line); - if (line.markedSpans) { - for (var i = 0; i < line.markedSpans.length; ++i) { - var sp = line.markedSpans[i], m = sp.marker; - if ((sp.from == null || (m.inclusiveLeft ? sp.from <= curPos.ch : sp.from < curPos.ch)) && - (sp.to == null || (m.inclusiveRight ? sp.to >= curPos.ch : sp.to > curPos.ch))) { - if (mayClear) { - signal(m, "beforeCursorEnter"); - if (m.explicitlyCleared) { - if (!line.markedSpans) break; - else {--i; continue;} - } - } - if (!m.atomic) continue; - var newPos = m.find(dir < 0 ? -1 : 1); - if (cmp(newPos, curPos) == 0) { - newPos.ch += dir; - if (newPos.ch < 0) { - if (newPos.line > doc.first) newPos = clipPos(doc, Pos(newPos.line - 1)); - else newPos = null; - } else if (newPos.ch > line.text.length) { - if (newPos.line < doc.first + doc.size - 1) newPos = Pos(newPos.line + 1, 0); - else newPos = null; - } - if (!newPos) { - if (flipped) { - // Driven in a corner -- no valid cursor position found at all - // -- try again *with* clearing, if we didn't already - if (!mayClear) return skipAtomic(doc, pos, bias, true); - // Otherwise, turn off editing until further notice, and return the start of the doc - doc.cantEdit = true; - return Pos(doc.first, 0); - } - flipped = true; newPos = pos; dir = -dir; - } - } - curPos = newPos; - continue search; - } - } - } - return curPos; - } - } - - // SELECTION DRAWING - - // Redraw the selection and/or cursor - function drawSelection(cm) { - var display = cm.display, doc = cm.doc, result = {}; - var curFragment = result.cursors = document.createDocumentFragment(); - var selFragment = result.selection = document.createDocumentFragment(); - - for (var i = 0; i < doc.sel.ranges.length; i++) { - var range = doc.sel.ranges[i]; - var collapsed = range.empty(); - if (collapsed || cm.options.showCursorWhenSelecting) - drawSelectionCursor(cm, range, curFragment); - if (!collapsed) - drawSelectionRange(cm, range, selFragment); - } - - // Move the hidden textarea near the cursor to prevent scrolling artifacts - if (cm.options.moveInputWithCursor) { - var headPos = cursorCoords(cm, doc.sel.primary().head, "div"); - var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect(); - result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, - headPos.top + lineOff.top - wrapOff.top)); - result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, - headPos.left + lineOff.left - wrapOff.left)); - } - - return result; - } - - function showSelection(cm, drawn) { - removeChildrenAndAdd(cm.display.cursorDiv, drawn.cursors); - removeChildrenAndAdd(cm.display.selectionDiv, drawn.selection); - if (drawn.teTop != null) { - cm.display.inputDiv.style.top = drawn.teTop + "px"; - cm.display.inputDiv.style.left = drawn.teLeft + "px"; - } - } - - function updateSelection(cm) { - showSelection(cm, drawSelection(cm)); - } - - // Draws a cursor for the given range - function drawSelectionCursor(cm, range, output) { - var pos = cursorCoords(cm, range.head, "div", null, null, !cm.options.singleCursorHeightPerLine); - - var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")); - cursor.style.left = pos.left + "px"; - cursor.style.top = pos.top + "px"; - cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px"; - - if (pos.other) { - // Secondary cursor, shown when on a 'jump' in bi-directional text - var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")); - otherCursor.style.display = ""; - otherCursor.style.left = pos.other.left + "px"; - otherCursor.style.top = pos.other.top + "px"; - otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; - } - } - - // Draws the given range as a highlighted selection - function drawSelectionRange(cm, range, output) { - var display = cm.display, doc = cm.doc; - var fragment = document.createDocumentFragment(); - var padding = paddingH(cm.display), leftSide = padding.left, rightSide = display.lineSpace.offsetWidth - padding.right; - - function add(left, top, width, bottom) { - if (top < 0) top = 0; - top = Math.round(top); - bottom = Math.round(bottom); - fragment.appendChild(elt("div", null, "CodeMirror-selected", "position: absolute; left: " + left + - "px; top: " + top + "px; width: " + (width == null ? rightSide - left : width) + - "px; height: " + (bottom - top) + "px")); - } - - function drawForLine(line, fromArg, toArg) { - var lineObj = getLine(doc, line); - var lineLen = lineObj.text.length; - var start, end; - function coords(ch, bias) { - return charCoords(cm, Pos(line, ch), "div", lineObj, bias); - } - - iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir) { - var leftPos = coords(from, "left"), rightPos, left, right; - if (from == to) { - rightPos = leftPos; - left = right = leftPos.left; - } else { - rightPos = coords(to - 1, "right"); - if (dir == "rtl") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; } - left = leftPos.left; - right = rightPos.right; - } - if (fromArg == null && from == 0) left = leftSide; - if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part - add(left, leftPos.top, null, leftPos.bottom); - left = leftSide; - if (leftPos.bottom < rightPos.top) add(left, leftPos.bottom, null, rightPos.top); - } - if (toArg == null && to == lineLen) right = rightSide; - if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left) - start = leftPos; - if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right) - end = rightPos; - if (left < leftSide + 1) left = leftSide; - add(left, rightPos.top, right - left, rightPos.bottom); - }); - return {start: start, end: end}; - } - - var sFrom = range.from(), sTo = range.to(); - if (sFrom.line == sTo.line) { - drawForLine(sFrom.line, sFrom.ch, sTo.ch); - } else { - var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line); - var singleVLine = visualLine(fromLine) == visualLine(toLine); - var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end; - var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start; - if (singleVLine) { - if (leftEnd.top < rightStart.top - 2) { - add(leftEnd.right, leftEnd.top, null, leftEnd.bottom); - add(leftSide, rightStart.top, rightStart.left, rightStart.bottom); - } else { - add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom); - } - } - if (leftEnd.bottom < rightStart.top) - add(leftSide, leftEnd.bottom, null, rightStart.top); - } - - output.appendChild(fragment); - } - - // Cursor-blinking - function restartBlink(cm) { - if (!cm.state.focused) return; - var display = cm.display; - clearInterval(display.blinker); - var on = true; - display.cursorDiv.style.visibility = ""; - if (cm.options.cursorBlinkRate > 0) - display.blinker = setInterval(function() { - display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; - }, cm.options.cursorBlinkRate); - else if (cm.options.cursorBlinkRate < 0) - display.cursorDiv.style.visibility = "hidden"; - } - - // HIGHLIGHT WORKER - - function startWorker(cm, time) { - if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo) - cm.state.highlight.set(time, bind(highlightWorker, cm)); - } - - function highlightWorker(cm) { - var doc = cm.doc; - if (doc.frontier < doc.first) doc.frontier = doc.first; - if (doc.frontier >= cm.display.viewTo) return; - var end = +new Date + cm.options.workTime; - var state = copyState(doc.mode, getStateBefore(cm, doc.frontier)); - var changedLines = []; - - doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) { - if (doc.frontier >= cm.display.viewFrom) { // Visible - var oldStyles = line.styles; - var highlighted = highlightLine(cm, line, state, true); - line.styles = highlighted.styles; - var oldCls = line.styleClasses, newCls = highlighted.classes; - if (newCls) line.styleClasses = newCls; - else if (oldCls) line.styleClasses = null; - var ischange = !oldStyles || oldStyles.length != line.styles.length || - oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass); - for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i]; - if (ischange) changedLines.push(doc.frontier); - line.stateAfter = copyState(doc.mode, state); - } else { - processLine(cm, line.text, state); - line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null; - } - ++doc.frontier; - if (+new Date > end) { - startWorker(cm, cm.options.workDelay); - return true; - } - }); - if (changedLines.length) runInOp(cm, function() { - for (var i = 0; i < changedLines.length; i++) - regLineChange(cm, changedLines[i], "text"); - }); - } - - // Finds the line to start with when starting a parse. Tries to - // find a line with a stateAfter, so that it can start with a - // valid state. If that fails, it returns the line with the - // smallest indentation, which tends to need the least context to - // parse correctly. - function findStartLine(cm, n, precise) { - var minindent, minline, doc = cm.doc; - var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100); - for (var search = n; search > lim; --search) { - if (search <= doc.first) return doc.first; - var line = getLine(doc, search - 1); - if (line.stateAfter && (!precise || search <= doc.frontier)) return search; - var indented = countColumn(line.text, null, cm.options.tabSize); - if (minline == null || minindent > indented) { - minline = search - 1; - minindent = indented; - } - } - return minline; - } - - function getStateBefore(cm, n, precise) { - var doc = cm.doc, display = cm.display; - if (!doc.mode.startState) return true; - var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter; - if (!state) state = startState(doc.mode); - else state = copyState(doc.mode, state); - doc.iter(pos, n, function(line) { - processLine(cm, line.text, state); - var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo; - line.stateAfter = save ? copyState(doc.mode, state) : null; - ++pos; - }); - if (precise) doc.frontier = pos; - return state; - } - - // POSITION MEASUREMENT - - function paddingTop(display) {return display.lineSpace.offsetTop;} - function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight;} - function paddingH(display) { - if (display.cachedPaddingH) return display.cachedPaddingH; - var e = removeChildrenAndAdd(display.measure, elt("pre", "x")); - var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle; - var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)}; - if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data; - return data; - } - - // Ensure the lineView.wrapping.heights array is populated. This is - // an array of bottom offsets for the lines that make up a drawn - // line. When lineWrapping is on, there might be more than one - // height. - function ensureLineHeights(cm, lineView, rect) { - var wrapping = cm.options.lineWrapping; - var curWidth = wrapping && cm.display.scroller.clientWidth; - if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { - var heights = lineView.measure.heights = []; - if (wrapping) { - lineView.measure.width = curWidth; - var rects = lineView.text.firstChild.getClientRects(); - for (var i = 0; i < rects.length - 1; i++) { - var cur = rects[i], next = rects[i + 1]; - if (Math.abs(cur.bottom - next.bottom) > 2) - heights.push((cur.bottom + next.top) / 2 - rect.top); - } - } - heights.push(rect.bottom - rect.top); - } - } - - // Find a line map (mapping character offsets to text nodes) and a - // measurement cache for the given line number. (A line view might - // contain multiple lines when collapsed ranges are present.) - function mapFromLineView(lineView, line, lineN) { - if (lineView.line == line) - return {map: lineView.measure.map, cache: lineView.measure.cache}; - for (var i = 0; i < lineView.rest.length; i++) - if (lineView.rest[i] == line) - return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]}; - for (var i = 0; i < lineView.rest.length; i++) - if (lineNo(lineView.rest[i]) > lineN) - return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true}; - } - - // Render a line into the hidden node display.externalMeasured. Used - // when measurement is needed for a line that's not in the viewport. - function updateExternalMeasurement(cm, line) { - line = visualLine(line); - var lineN = lineNo(line); - var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN); - view.lineN = lineN; - var built = view.built = buildLineContent(cm, view); - view.text = built.pre; - removeChildrenAndAdd(cm.display.lineMeasure, built.pre); - return view; - } - - // Get a {top, bottom, left, right} box (in line-local coordinates) - // for a given character. - function measureChar(cm, line, ch, bias) { - return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias); - } - - // Find a line view that corresponds to the given line number. - function findViewForLine(cm, lineN) { - if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) - return cm.display.view[findViewIndex(cm, lineN)]; - var ext = cm.display.externalMeasured; - if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) - return ext; - } - - // Measurement can be split in two steps, the set-up work that - // applies to the whole line, and the measurement of the actual - // character. Functions like coordsChar, that need to do a lot of - // measurements in a row, can thus ensure that the set-up work is - // only done once. - function prepareMeasureForLine(cm, line) { - var lineN = lineNo(line); - var view = findViewForLine(cm, lineN); - if (view && !view.text) - view = null; - else if (view && view.changes) - updateLineForChanges(cm, view, lineN, getDimensions(cm)); - if (!view) - view = updateExternalMeasurement(cm, line); - - var info = mapFromLineView(view, line, lineN); - return { - line: line, view: view, rect: null, - map: info.map, cache: info.cache, before: info.before, - hasHeights: false - }; - } - - // Given a prepared measurement object, measures the position of an - // actual character (or fetches it from the cache). - function measureCharPrepared(cm, prepared, ch, bias, varHeight) { - if (prepared.before) ch = -1; - var key = ch + (bias || ""), found; - if (prepared.cache.hasOwnProperty(key)) { - found = prepared.cache[key]; - } else { - if (!prepared.rect) - prepared.rect = prepared.view.text.getBoundingClientRect(); - if (!prepared.hasHeights) { - ensureLineHeights(cm, prepared.view, prepared.rect); - prepared.hasHeights = true; - } - found = measureCharInner(cm, prepared, ch, bias); - if (!found.bogus) prepared.cache[key] = found; - } - return {left: found.left, right: found.right, - top: varHeight ? found.rtop : found.top, - bottom: varHeight ? found.rbottom : found.bottom}; - } - - var nullRect = {left: 0, right: 0, top: 0, bottom: 0}; - - function measureCharInner(cm, prepared, ch, bias) { - var map = prepared.map; - - var node, start, end, collapse; - // First, search the line map for the text node corresponding to, - // or closest to, the target character. - for (var i = 0; i < map.length; i += 3) { - var mStart = map[i], mEnd = map[i + 1]; - if (ch < mStart) { - start = 0; end = 1; - collapse = "left"; - } else if (ch < mEnd) { - start = ch - mStart; - end = start + 1; - } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { - end = mEnd - mStart; - start = end - 1; - if (ch >= mEnd) collapse = "right"; - } - if (start != null) { - node = map[i + 2]; - if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) - collapse = bias; - if (bias == "left" && start == 0) - while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { - node = map[(i -= 3) + 2]; - collapse = "left"; - } - if (bias == "right" && start == mEnd - mStart) - while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { - node = map[(i += 3) + 2]; - collapse = "right"; - } - break; - } - } - - var rect; - if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. - for (var i = 0; i < 4; i++) { // Retry a maximum of 4 times when nonsense rectangles are returned - while (start && isExtendingChar(prepared.line.text.charAt(mStart + start))) --start; - while (mStart + end < mEnd && isExtendingChar(prepared.line.text.charAt(mStart + end))) ++end; - if (ie && ie_version < 9 && start == 0 && end == mEnd - mStart) { - rect = node.parentNode.getBoundingClientRect(); - } else if (ie && cm.options.lineWrapping) { - var rects = range(node, start, end).getClientRects(); - if (rects.length) - rect = rects[bias == "right" ? rects.length - 1 : 0]; - else - rect = nullRect; - } else { - rect = range(node, start, end).getBoundingClientRect() || nullRect; - } - if (rect.left || rect.right || start == 0) break; - end = start; - start = start - 1; - collapse = "right"; - } - if (ie && ie_version < 11) rect = maybeUpdateRectForZooming(cm.display.measure, rect); - } else { // If it is a widget, simply get the box for the whole widget. - if (start > 0) collapse = bias = "right"; - var rects; - if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) - rect = rects[bias == "right" ? rects.length - 1 : 0]; - else - rect = node.getBoundingClientRect(); - } - if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { - var rSpan = node.parentNode.getClientRects()[0]; - if (rSpan) - rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; - else - rect = nullRect; - } - - var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top; - var mid = (rtop + rbot) / 2; - var heights = prepared.view.measure.heights; - for (var i = 0; i < heights.length - 1; i++) - if (mid < heights[i]) break; - var top = i ? heights[i - 1] : 0, bot = heights[i]; - var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, - right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, - top: top, bottom: bot}; - if (!rect.left && !rect.right) result.bogus = true; - if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; } - - return result; - } - - // Work around problem with bounding client rects on ranges being - // returned incorrectly when zoomed on IE10 and below. - function maybeUpdateRectForZooming(measure, rect) { - if (!window.screen || screen.logicalXDPI == null || - screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) - return rect; - var scaleX = screen.logicalXDPI / screen.deviceXDPI; - var scaleY = screen.logicalYDPI / screen.deviceYDPI; - return {left: rect.left * scaleX, right: rect.right * scaleX, - top: rect.top * scaleY, bottom: rect.bottom * scaleY}; - } - - function clearLineMeasurementCacheFor(lineView) { - if (lineView.measure) { - lineView.measure.cache = {}; - lineView.measure.heights = null; - if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) - lineView.measure.caches[i] = {}; - } - } - - function clearLineMeasurementCache(cm) { - cm.display.externalMeasure = null; - removeChildren(cm.display.lineMeasure); - for (var i = 0; i < cm.display.view.length; i++) - clearLineMeasurementCacheFor(cm.display.view[i]); - } - - function clearCaches(cm) { - clearLineMeasurementCache(cm); - cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null; - if (!cm.options.lineWrapping) cm.display.maxLineChanged = true; - cm.display.lineNumChars = null; - } - - function pageScrollX() { return window.pageXOffset || (document.documentElement || document.body).scrollLeft; } - function pageScrollY() { return window.pageYOffset || (document.documentElement || document.body).scrollTop; } - - // Converts a {top, bottom, left, right} box from line-local - // coordinates into another coordinate system. Context may be one of - // "line", "div" (display.lineDiv), "local"/null (editor), or "page". - function intoCoordSystem(cm, lineObj, rect, context) { - if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) { - var size = widgetHeight(lineObj.widgets[i]); - rect.top += size; rect.bottom += size; - } - if (context == "line") return rect; - if (!context) context = "local"; - var yOff = heightAtLine(lineObj); - if (context == "local") yOff += paddingTop(cm.display); - else yOff -= cm.display.viewOffset; - if (context == "page" || context == "window") { - var lOff = cm.display.lineSpace.getBoundingClientRect(); - yOff += lOff.top + (context == "window" ? 0 : pageScrollY()); - var xOff = lOff.left + (context == "window" ? 0 : pageScrollX()); - rect.left += xOff; rect.right += xOff; - } - rect.top += yOff; rect.bottom += yOff; - return rect; - } - - // Coverts a box from "div" coords to another coordinate system. - // Context may be "window", "page", "div", or "local"/null. - function fromCoordSystem(cm, coords, context) { - if (context == "div") return coords; - var left = coords.left, top = coords.top; - // First move into "page" coordinate system - if (context == "page") { - left -= pageScrollX(); - top -= pageScrollY(); - } else if (context == "local" || !context) { - var localBox = cm.display.sizer.getBoundingClientRect(); - left += localBox.left; - top += localBox.top; - } - - var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect(); - return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}; - } - - function charCoords(cm, pos, context, lineObj, bias) { - if (!lineObj) lineObj = getLine(cm.doc, pos.line); - return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context); - } - - // Returns a box for a given cursor position, which may have an - // 'other' property containing the position of the secondary cursor - // on a bidi boundary. - function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { - lineObj = lineObj || getLine(cm.doc, pos.line); - if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj); - function get(ch, right) { - var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight); - if (right) m.left = m.right; else m.right = m.left; - return intoCoordSystem(cm, lineObj, m, context); - } - function getBidi(ch, partPos) { - var part = order[partPos], right = part.level % 2; - if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) { - part = order[--partPos]; - ch = bidiRight(part) - (part.level % 2 ? 0 : 1); - right = true; - } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) { - part = order[++partPos]; - ch = bidiLeft(part) - part.level % 2; - right = false; - } - if (right && ch == part.to && ch > part.from) return get(ch - 1); - return get(ch, right); - } - var order = getOrder(lineObj), ch = pos.ch; - if (!order) return get(ch); - var partPos = getBidiPartAt(order, ch); - var val = getBidi(ch, partPos); - if (bidiOther != null) val.other = getBidi(ch, bidiOther); - return val; - } - - // Used to cheaply estimate the coordinates for a position. Used for - // intermediate scroll updates. - function estimateCoords(cm, pos) { - var left = 0, pos = clipPos(cm.doc, pos); - if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch; - var lineObj = getLine(cm.doc, pos.line); - var top = heightAtLine(lineObj) + paddingTop(cm.display); - return {left: left, right: left, top: top, bottom: top + lineObj.height}; - } - - // Positions returned by coordsChar contain some extra information. - // xRel is the relative x position of the input coordinates compared - // to the found position (so xRel > 0 means the coordinates are to - // the right of the character position, for example). When outside - // is true, that means the coordinates lie outside the line's - // vertical range. - function PosWithInfo(line, ch, outside, xRel) { - var pos = Pos(line, ch); - pos.xRel = xRel; - if (outside) pos.outside = true; - return pos; - } - - // Compute the character position closest to the given coordinates. - // Input must be lineSpace-local ("div" coordinate system). - function coordsChar(cm, x, y) { - var doc = cm.doc; - y += cm.display.viewOffset; - if (y < 0) return PosWithInfo(doc.first, 0, true, -1); - var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1; - if (lineN > last) - return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, true, 1); - if (x < 0) x = 0; - - var lineObj = getLine(doc, lineN); - for (;;) { - var found = coordsCharInner(cm, lineObj, lineN, x, y); - var merged = collapsedSpanAtEnd(lineObj); - var mergedPos = merged && merged.find(0, true); - if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0)) - lineN = lineNo(lineObj = mergedPos.to.line); - else - return found; - } - } - - function coordsCharInner(cm, lineObj, lineNo, x, y) { - var innerOff = y - heightAtLine(lineObj); - var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth; - var preparedMeasure = prepareMeasureForLine(cm, lineObj); - - function getX(ch) { - var sp = cursorCoords(cm, Pos(lineNo, ch), "line", lineObj, preparedMeasure); - wrongLine = true; - if (innerOff > sp.bottom) return sp.left - adjust; - else if (innerOff < sp.top) return sp.left + adjust; - else wrongLine = false; - return sp.left; - } - - var bidi = getOrder(lineObj), dist = lineObj.text.length; - var from = lineLeft(lineObj), to = lineRight(lineObj); - var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine; - - if (x > toX) return PosWithInfo(lineNo, to, toOutside, 1); - // Do a binary search between these bounds. - for (;;) { - if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) { - var ch = x < fromX || x - fromX <= toX - x ? from : to; - var xDiff = x - (ch == from ? fromX : toX); - while (isExtendingChar(lineObj.text.charAt(ch))) ++ch; - var pos = PosWithInfo(lineNo, ch, ch == from ? fromOutside : toOutside, - xDiff < -1 ? -1 : xDiff > 1 ? 1 : 0); - return pos; - } - var step = Math.ceil(dist / 2), middle = from + step; - if (bidi) { - middle = from; - for (var i = 0; i < step; ++i) middle = moveVisually(lineObj, middle, 1); - } - var middleX = getX(middle); - if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) toX += 1000; dist = step;} - else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step;} - } - } - - var measureText; - // Compute the default text height. - function textHeight(display) { - if (display.cachedTextHeight != null) return display.cachedTextHeight; - if (measureText == null) { - measureText = elt("pre"); - // Measure a bunch of lines, for browsers that compute - // fractional heights. - for (var i = 0; i < 49; ++i) { - measureText.appendChild(document.createTextNode("x")); - measureText.appendChild(elt("br")); - } - measureText.appendChild(document.createTextNode("x")); - } - removeChildrenAndAdd(display.measure, measureText); - var height = measureText.offsetHeight / 50; - if (height > 3) display.cachedTextHeight = height; - removeChildren(display.measure); - return height || 1; - } - - // Compute the default character width. - function charWidth(display) { - if (display.cachedCharWidth != null) return display.cachedCharWidth; - var anchor = elt("span", "xxxxxxxxxx"); - var pre = elt("pre", [anchor]); - removeChildrenAndAdd(display.measure, pre); - var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10; - if (width > 2) display.cachedCharWidth = width; - return width || 10; - } - - // OPERATIONS - - // Operations are used to wrap a series of changes to the editor - // state in such a way that each change won't have to update the - // cursor and display (which would be awkward, slow, and - // error-prone). Instead, display updates are batched and then all - // combined and executed at once. - - var operationGroup = null; - - var nextOpId = 0; - // Start a new operation. - function startOperation(cm) { - cm.curOp = { - cm: cm, - viewChanged: false, // Flag that indicates that lines might need to be redrawn - startHeight: cm.doc.height, // Used to detect need to update scrollbar - forceUpdate: false, // Used to force a redraw - updateInput: null, // Whether to reset the input textarea - typing: false, // Whether this reset should be careful to leave existing text (for compositing) - changeObjs: null, // Accumulated changes, for firing change events - cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on - cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already - selectionChanged: false, // Whether the selection needs to be redrawn - updateMaxLine: false, // Set when the widest line needs to be determined anew - scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet - scrollToPos: null, // Used to scroll to a specific position - id: ++nextOpId // Unique ID - }; - if (operationGroup) { - operationGroup.ops.push(cm.curOp); - } else { - cm.curOp.ownsGroup = operationGroup = { - ops: [cm.curOp], - delayedCallbacks: [] - }; - } - } - - function fireCallbacksForOps(group) { - // Calls delayed callbacks and cursorActivity handlers until no - // new ones appear - var callbacks = group.delayedCallbacks, i = 0; - do { - for (; i < callbacks.length; i++) - callbacks[i](); - for (var j = 0; j < group.ops.length; j++) { - var op = group.ops[j]; - if (op.cursorActivityHandlers) - while (op.cursorActivityCalled < op.cursorActivityHandlers.length) - op.cursorActivityHandlers[op.cursorActivityCalled++](op.cm); - } - } while (i < callbacks.length); - } - - // Finish an operation, updating the display and signalling delayed events - function endOperation(cm) { - var op = cm.curOp, group = op.ownsGroup; - if (!group) return; - - try { fireCallbacksForOps(group); } - finally { - operationGroup = null; - for (var i = 0; i < group.ops.length; i++) - group.ops[i].cm.curOp = null; - endOperations(group); - } - } - - // The DOM updates done when an operation finishes are batched so - // that the minimum number of relayouts are required. - function endOperations(group) { - var ops = group.ops; - for (var i = 0; i < ops.length; i++) // Read DOM - endOperation_R1(ops[i]); - for (var i = 0; i < ops.length; i++) // Write DOM (maybe) - endOperation_W1(ops[i]); - for (var i = 0; i < ops.length; i++) // Read DOM - endOperation_R2(ops[i]); - for (var i = 0; i < ops.length; i++) // Write DOM (maybe) - endOperation_W2(ops[i]); - for (var i = 0; i < ops.length; i++) // Read DOM - endOperation_finish(ops[i]); - } - - function endOperation_R1(op) { - var cm = op.cm, display = cm.display; - if (op.updateMaxLine) findMaxLine(cm); - - op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || - op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || - op.scrollToPos.to.line >= display.viewTo) || - display.maxLineChanged && cm.options.lineWrapping; - op.update = op.mustUpdate && - new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate); - } - - function endOperation_W1(op) { - op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update); - } - - function endOperation_R2(op) { - var cm = op.cm, display = cm.display; - if (op.updatedDisplay) updateHeightsInViewport(cm); - - op.barMeasure = measureForScrollbars(cm); - - // If the max line changed since it was last measured, measure it, - // and ensure the document's width matches it. - // updateDisplay_W2 will use these properties to do the actual resizing - if (display.maxLineChanged && !cm.options.lineWrapping) { - op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3; - op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo + - scrollerCutOff - display.scroller.clientWidth); - } - - if (op.updatedDisplay || op.selectionChanged) - op.newSelectionNodes = drawSelection(cm); - } - - function endOperation_W2(op) { - var cm = op.cm; - - if (op.adjustWidthTo != null) { - cm.display.sizer.style.minWidth = op.adjustWidthTo + "px"; - if (op.maxScrollLeft < cm.doc.scrollLeft) - setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); - cm.display.maxLineChanged = false; - } - - if (op.newSelectionNodes) - showSelection(cm, op.newSelectionNodes); - if (op.updatedDisplay) - setDocumentHeight(cm, op.barMeasure); - if (op.updatedDisplay || op.startHeight != cm.doc.height) - updateScrollbars(cm, op.barMeasure); - - if (op.selectionChanged) restartBlink(cm); - - if (cm.state.focused && op.updateInput) - resetInput(cm, op.typing); - } - - function endOperation_finish(op) { - var cm = op.cm, display = cm.display, doc = cm.doc; - - if (op.adjustWidthTo != null && Math.abs(op.barMeasure.scrollWidth - cm.display.scroller.scrollWidth) > 1) - updateScrollbars(cm); - - if (op.updatedDisplay) postUpdateDisplay(cm, op.update); - - // Abort mouse wheel delta measurement, when scrolling explicitly - if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) - display.wheelStartX = display.wheelStartY = null; - - // Propagate the scroll position to the actual DOM scroller - if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) { - var top = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop)); - display.scroller.scrollTop = display.scrollbarV.scrollTop = doc.scrollTop = top; - } - if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) { - var left = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft)); - display.scroller.scrollLeft = display.scrollbarH.scrollLeft = doc.scrollLeft = left; - alignHorizontally(cm); - } - // If we need to scroll a specific position into view, do so. - if (op.scrollToPos) { - var coords = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), - clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin); - if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords); - } - - // Fire events for markers that are hidden/unidden by editing or - // undoing - var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers; - if (hidden) for (var i = 0; i < hidden.length; ++i) - if (!hidden[i].lines.length) signal(hidden[i], "hide"); - if (unhidden) for (var i = 0; i < unhidden.length; ++i) - if (unhidden[i].lines.length) signal(unhidden[i], "unhide"); - - if (display.wrapper.offsetHeight) - doc.scrollTop = cm.display.scroller.scrollTop; - - // Apply workaround for two webkit bugs - if (op.updatedDisplay && webkit) { - if (cm.options.lineWrapping) - checkForWebkitWidthBug(cm, op.barMeasure); // (Issue #2420) - if (op.barMeasure.scrollWidth > op.barMeasure.clientWidth && - op.barMeasure.scrollWidth < op.barMeasure.clientWidth + 1 && - !hScrollbarTakesSpace(cm)) - updateScrollbars(cm); // (Issue #2562) - } - - // Fire change events, and delayed event handlers - if (op.changeObjs) - signal(cm, "changes", cm, op.changeObjs); - } - - // Run the given function in an operation - function runInOp(cm, f) { - if (cm.curOp) return f(); - startOperation(cm); - try { return f(); } - finally { endOperation(cm); } - } - // Wraps a function in an operation. Returns the wrapped function. - function operation(cm, f) { - return function() { - if (cm.curOp) return f.apply(cm, arguments); - startOperation(cm); - try { return f.apply(cm, arguments); } - finally { endOperation(cm); } - }; - } - // Used to add methods to editor and doc instances, wrapping them in - // operations. - function methodOp(f) { - return function() { - if (this.curOp) return f.apply(this, arguments); - startOperation(this); - try { return f.apply(this, arguments); } - finally { endOperation(this); } - }; - } - function docMethodOp(f) { - return function() { - var cm = this.cm; - if (!cm || cm.curOp) return f.apply(this, arguments); - startOperation(cm); - try { return f.apply(this, arguments); } - finally { endOperation(cm); } - }; - } - - // VIEW TRACKING - - // These objects are used to represent the visible (currently drawn) - // part of the document. A LineView may correspond to multiple - // logical lines, if those are connected by collapsed ranges. - function LineView(doc, line, lineN) { - // The starting line - this.line = line; - // Continuing lines, if any - this.rest = visualLineContinued(line); - // Number of logical lines in this visual line - this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1; - this.node = this.text = null; - this.hidden = lineIsHidden(doc, line); - } - - // Create a range of LineView objects for the given lines. - function buildViewArray(cm, from, to) { - var array = [], nextPos; - for (var pos = from; pos < to; pos = nextPos) { - var view = new LineView(cm.doc, getLine(cm.doc, pos), pos); - nextPos = pos + view.size; - array.push(view); - } - return array; - } - - // Updates the display.view data structure for a given change to the - // document. From and to are in pre-change coordinates. Lendiff is - // the amount of lines added or subtracted by the change. This is - // used for changes that span multiple lines, or change the way - // lines are divided into visual lines. regLineChange (below) - // registers single-line changes. - function regChange(cm, from, to, lendiff) { - if (from == null) from = cm.doc.first; - if (to == null) to = cm.doc.first + cm.doc.size; - if (!lendiff) lendiff = 0; - - var display = cm.display; - if (lendiff && to < display.viewTo && - (display.updateLineNumbers == null || display.updateLineNumbers > from)) - display.updateLineNumbers = from; - - cm.curOp.viewChanged = true; - - if (from >= display.viewTo) { // Change after - if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) - resetView(cm); - } else if (to <= display.viewFrom) { // Change before - if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { - resetView(cm); - } else { - display.viewFrom += lendiff; - display.viewTo += lendiff; - } - } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap - resetView(cm); - } else if (from <= display.viewFrom) { // Top overlap - var cut = viewCuttingPoint(cm, to, to + lendiff, 1); - if (cut) { - display.view = display.view.slice(cut.index); - display.viewFrom = cut.lineN; - display.viewTo += lendiff; - } else { - resetView(cm); - } - } else if (to >= display.viewTo) { // Bottom overlap - var cut = viewCuttingPoint(cm, from, from, -1); - if (cut) { - display.view = display.view.slice(0, cut.index); - display.viewTo = cut.lineN; - } else { - resetView(cm); - } - } else { // Gap in the middle - var cutTop = viewCuttingPoint(cm, from, from, -1); - var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1); - if (cutTop && cutBot) { - display.view = display.view.slice(0, cutTop.index) - .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) - .concat(display.view.slice(cutBot.index)); - display.viewTo += lendiff; - } else { - resetView(cm); - } - } - - var ext = display.externalMeasured; - if (ext) { - if (to < ext.lineN) - ext.lineN += lendiff; - else if (from < ext.lineN + ext.size) - display.externalMeasured = null; - } - } - - // Register a change to a single line. Type must be one of "text", - // "gutter", "class", "widget" - function regLineChange(cm, line, type) { - cm.curOp.viewChanged = true; - var display = cm.display, ext = cm.display.externalMeasured; - if (ext && line >= ext.lineN && line < ext.lineN + ext.size) - display.externalMeasured = null; - - if (line < display.viewFrom || line >= display.viewTo) return; - var lineView = display.view[findViewIndex(cm, line)]; - if (lineView.node == null) return; - var arr = lineView.changes || (lineView.changes = []); - if (indexOf(arr, type) == -1) arr.push(type); - } - - // Clear the view. - function resetView(cm) { - cm.display.viewFrom = cm.display.viewTo = cm.doc.first; - cm.display.view = []; - cm.display.viewOffset = 0; - } - - // Find the view element corresponding to a given line. Return null - // when the line isn't visible. - function findViewIndex(cm, n) { - if (n >= cm.display.viewTo) return null; - n -= cm.display.viewFrom; - if (n < 0) return null; - var view = cm.display.view; - for (var i = 0; i < view.length; i++) { - n -= view[i].size; - if (n < 0) return i; - } - } - - function viewCuttingPoint(cm, oldN, newN, dir) { - var index = findViewIndex(cm, oldN), diff, view = cm.display.view; - if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) - return {index: index, lineN: newN}; - for (var i = 0, n = cm.display.viewFrom; i < index; i++) - n += view[i].size; - if (n != oldN) { - if (dir > 0) { - if (index == view.length - 1) return null; - diff = (n + view[index].size) - oldN; - index++; - } else { - diff = n - oldN; - } - oldN += diff; newN += diff; - } - while (visualLineNo(cm.doc, newN) != newN) { - if (index == (dir < 0 ? 0 : view.length - 1)) return null; - newN += dir * view[index - (dir < 0 ? 1 : 0)].size; - index += dir; - } - return {index: index, lineN: newN}; - } - - // Force the view to cover a given range, adding empty view element - // or clipping off existing ones as needed. - function adjustView(cm, from, to) { - var display = cm.display, view = display.view; - if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { - display.view = buildViewArray(cm, from, to); - display.viewFrom = from; - } else { - if (display.viewFrom > from) - display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); - else if (display.viewFrom < from) - display.view = display.view.slice(findViewIndex(cm, from)); - display.viewFrom = from; - if (display.viewTo < to) - display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); - else if (display.viewTo > to) - display.view = display.view.slice(0, findViewIndex(cm, to)); - } - display.viewTo = to; - } - - // Count the number of lines in the view whose DOM representation is - // out of date (or nonexistent). - function countDirtyView(cm) { - var view = cm.display.view, dirty = 0; - for (var i = 0; i < view.length; i++) { - var lineView = view[i]; - if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty; - } - return dirty; - } - - // INPUT HANDLING - - // Poll for input changes, using the normal rate of polling. This - // runs as long as the editor is focused. - function slowPoll(cm) { - if (cm.display.pollingFast) return; - cm.display.poll.set(cm.options.pollInterval, function() { - readInput(cm); - if (cm.state.focused) slowPoll(cm); - }); - } - - // When an event has just come in that is likely to add or change - // something in the input textarea, we poll faster, to ensure that - // the change appears on the screen quickly. - function fastPoll(cm) { - var missed = false; - cm.display.pollingFast = true; - function p() { - var changed = readInput(cm); - if (!changed && !missed) {missed = true; cm.display.poll.set(60, p);} - else {cm.display.pollingFast = false; slowPoll(cm);} - } - cm.display.poll.set(20, p); - } - - // This will be set to an array of strings when copying, so that, - // when pasting, we know what kind of selections the copied text - // was made out of. - var lastCopied = null; - - // Read input from the textarea, and update the document to match. - // When something is selected, it is present in the textarea, and - // selected (unless it is huge, in which case a placeholder is - // used). When nothing is selected, the cursor sits after previously - // seen text (can be empty), which is stored in prevInput (we must - // not reset the textarea when typing, because that breaks IME). - function readInput(cm) { - var input = cm.display.input, prevInput = cm.display.prevInput, doc = cm.doc; - // Since this is called a *lot*, try to bail out as cheaply as - // possible when it is clear that nothing happened. hasSelection - // will be the case when there is a lot of text in the textarea, - // in which case reading its value would be expensive. - if (!cm.state.focused || (hasSelection(input) && !prevInput) || isReadOnly(cm) || cm.options.disableInput || cm.state.keySeq) - return false; - // See paste handler for more on the fakedLastChar kludge - if (cm.state.pasteIncoming && cm.state.fakedLastChar) { - input.value = input.value.substring(0, input.value.length - 1); - cm.state.fakedLastChar = false; - } - var text = input.value; - // If nothing changed, bail. - if (text == prevInput && !cm.somethingSelected()) return false; - // Work around nonsensical selection resetting in IE9/10, and - // inexplicable appearance of private area unicode characters on - // some key combos in Mac (#2689). - if (ie && ie_version >= 9 && cm.display.inputHasSelection === text || - mac && /[\uf700-\uf7ff]/.test(text)) { - resetInput(cm); - return false; - } - - var withOp = !cm.curOp; - if (withOp) startOperation(cm); - cm.display.shift = false; - - if (text.charCodeAt(0) == 0x200b && doc.sel == cm.display.selForContextMenu && !prevInput) - prevInput = "\u200b"; - // Find the part of the input that is actually new - var same = 0, l = Math.min(prevInput.length, text.length); - while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same; - var inserted = text.slice(same), textLines = splitLines(inserted); - - // When pasing N lines into N selections, insert one line per selection - var multiPaste = null; - if (cm.state.pasteIncoming && doc.sel.ranges.length > 1) { - if (lastCopied && lastCopied.join("\n") == inserted) - multiPaste = doc.sel.ranges.length % lastCopied.length == 0 && map(lastCopied, splitLines); - else if (textLines.length == doc.sel.ranges.length) - multiPaste = map(textLines, function(l) { return [l]; }); - } - - // Normal behavior is to insert the new text into every selection - for (var i = doc.sel.ranges.length - 1; i >= 0; i--) { - var range = doc.sel.ranges[i]; - var from = range.from(), to = range.to(); - // Handle deletion - if (same < prevInput.length) - from = Pos(from.line, from.ch - (prevInput.length - same)); - // Handle overwrite - else if (cm.state.overwrite && range.empty() && !cm.state.pasteIncoming) - to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); - var updateInput = cm.curOp.updateInput; - var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i % multiPaste.length] : textLines, - origin: cm.state.pasteIncoming ? "paste" : cm.state.cutIncoming ? "cut" : "+input"}; - makeChange(cm.doc, changeEvent); - signalLater(cm, "inputRead", cm, changeEvent); - // When an 'electric' character is inserted, immediately trigger a reindent - if (inserted && !cm.state.pasteIncoming && cm.options.electricChars && - cm.options.smartIndent && range.head.ch < 100 && - (!i || doc.sel.ranges[i - 1].head.line != range.head.line)) { - var mode = cm.getModeAt(range.head); - var end = changeEnd(changeEvent); - if (mode.electricChars) { - for (var j = 0; j < mode.electricChars.length; j++) - if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { - indentLine(cm, end.line, "smart"); - break; - } - } else if (mode.electricInput) { - if (mode.electricInput.test(getLine(doc, end.line).text.slice(0, end.ch))) - indentLine(cm, end.line, "smart"); - } - } - } - ensureCursorVisible(cm); - cm.curOp.updateInput = updateInput; - cm.curOp.typing = true; - - // Don't leave long text in the textarea, since it makes further polling slow - if (text.length > 1000 || text.indexOf("\n") > -1) input.value = cm.display.prevInput = ""; - else cm.display.prevInput = text; - if (withOp) endOperation(cm); - cm.state.pasteIncoming = cm.state.cutIncoming = false; - return true; - } - - // Reset the input to correspond to the selection (or to be empty, - // when not typing and nothing is selected) - function resetInput(cm, typing) { - var minimal, selected, doc = cm.doc; - if (cm.somethingSelected()) { - cm.display.prevInput = ""; - var range = doc.sel.primary(); - minimal = hasCopyEvent && - (range.to().line - range.from().line > 100 || (selected = cm.getSelection()).length > 1000); - var content = minimal ? "-" : selected || cm.getSelection(); - cm.display.input.value = content; - if (cm.state.focused) selectInput(cm.display.input); - if (ie && ie_version >= 9) cm.display.inputHasSelection = content; - } else if (!typing) { - cm.display.prevInput = cm.display.input.value = ""; - if (ie && ie_version >= 9) cm.display.inputHasSelection = null; - } - cm.display.inaccurateSelection = minimal; - } - - function focusInput(cm) { - if (cm.options.readOnly != "nocursor" && (!mobile || activeElt() != cm.display.input)) - cm.display.input.focus(); - } - - function ensureFocus(cm) { - if (!cm.state.focused) { focusInput(cm); onFocus(cm); } - } - - function isReadOnly(cm) { - return cm.options.readOnly || cm.doc.cantEdit; - } - - // EVENT HANDLERS - - // Attach the necessary event handlers when initializing the editor - function registerEventHandlers(cm) { - var d = cm.display; - on(d.scroller, "mousedown", operation(cm, onMouseDown)); - // Older IE's will not fire a second mousedown for a double click - if (ie && ie_version < 11) - on(d.scroller, "dblclick", operation(cm, function(e) { - if (signalDOMEvent(cm, e)) return; - var pos = posFromMouse(cm, e); - if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return; - e_preventDefault(e); - var word = cm.findWordAt(pos); - extendSelection(cm.doc, word.anchor, word.head); - })); - else - on(d.scroller, "dblclick", function(e) { signalDOMEvent(cm, e) || e_preventDefault(e); }); - // Prevent normal selection in the editor (we handle our own) - on(d.lineSpace, "selectstart", function(e) { - if (!eventInWidget(d, e)) e_preventDefault(e); - }); - // Some browsers fire contextmenu *after* opening the menu, at - // which point we can't mess with it anymore. Context menu is - // handled in onMouseDown for these browsers. - if (!captureRightClick) on(d.scroller, "contextmenu", function(e) {onContextMenu(cm, e);}); - - // Sync scrolling between fake scrollbars and real scrollable - // area, ensure viewport is updated when scrolling. - on(d.scroller, "scroll", function() { - if (d.scroller.clientHeight) { - setScrollTop(cm, d.scroller.scrollTop); - setScrollLeft(cm, d.scroller.scrollLeft, true); - signal(cm, "scroll", cm); - } - }); - on(d.scrollbarV, "scroll", function() { - if (d.scroller.clientHeight) setScrollTop(cm, d.scrollbarV.scrollTop); - }); - on(d.scrollbarH, "scroll", function() { - if (d.scroller.clientHeight) setScrollLeft(cm, d.scrollbarH.scrollLeft); - }); - - // Listen to wheel events in order to try and update the viewport on time. - on(d.scroller, "mousewheel", function(e){onScrollWheel(cm, e);}); - on(d.scroller, "DOMMouseScroll", function(e){onScrollWheel(cm, e);}); - - // Prevent clicks in the scrollbars from killing focus - function reFocus() { if (cm.state.focused) setTimeout(bind(focusInput, cm), 0); } - on(d.scrollbarH, "mousedown", reFocus); - on(d.scrollbarV, "mousedown", reFocus); - // Prevent wrapper from ever scrolling - on(d.wrapper, "scroll", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }); - - on(d.input, "keyup", function(e) { onKeyUp.call(cm, e); }); - on(d.input, "input", function() { - if (ie && ie_version >= 9 && cm.display.inputHasSelection) cm.display.inputHasSelection = null; - fastPoll(cm); - }); - on(d.input, "keydown", operation(cm, onKeyDown)); - on(d.input, "keypress", operation(cm, onKeyPress)); - on(d.input, "focus", bind(onFocus, cm)); - on(d.input, "blur", bind(onBlur, cm)); - - function drag_(e) { - if (!signalDOMEvent(cm, e)) e_stop(e); - } - if (cm.options.dragDrop) { - on(d.scroller, "dragstart", function(e){onDragStart(cm, e);}); - on(d.scroller, "dragenter", drag_); - on(d.scroller, "dragover", drag_); - on(d.scroller, "drop", operation(cm, onDrop)); - } - on(d.scroller, "paste", function(e) { - if (eventInWidget(d, e)) return; - cm.state.pasteIncoming = true; - focusInput(cm); - fastPoll(cm); - }); - on(d.input, "paste", function() { - // Workaround for webkit bug https://bugs.webkit.org/show_bug.cgi?id=90206 - // Add a char to the end of textarea before paste occur so that - // selection doesn't span to the end of textarea. - if (webkit && !cm.state.fakedLastChar && !(new Date - cm.state.lastMiddleDown < 200)) { - var start = d.input.selectionStart, end = d.input.selectionEnd; - d.input.value += "$"; - // The selection end needs to be set before the start, otherwise there - // can be an intermediate non-empty selection between the two, which - // can override the middle-click paste buffer on linux and cause the - // wrong thing to get pasted. - d.input.selectionEnd = end; - d.input.selectionStart = start; - cm.state.fakedLastChar = true; - } - cm.state.pasteIncoming = true; - fastPoll(cm); - }); - - function prepareCopyCut(e) { - if (cm.somethingSelected()) { - lastCopied = cm.getSelections(); - if (d.inaccurateSelection) { - d.prevInput = ""; - d.inaccurateSelection = false; - d.input.value = lastCopied.join("\n"); - selectInput(d.input); - } - } else { - var text = [], ranges = []; - for (var i = 0; i < cm.doc.sel.ranges.length; i++) { - var line = cm.doc.sel.ranges[i].head.line; - var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)}; - ranges.push(lineRange); - text.push(cm.getRange(lineRange.anchor, lineRange.head)); - } - if (e.type == "cut") { - cm.setSelections(ranges, null, sel_dontScroll); - } else { - d.prevInput = ""; - d.input.value = text.join("\n"); - selectInput(d.input); - } - lastCopied = text; - } - if (e.type == "cut") cm.state.cutIncoming = true; - } - on(d.input, "cut", prepareCopyCut); - on(d.input, "copy", prepareCopyCut); - - // Needed to handle Tab key in KHTML - if (khtml) on(d.sizer, "mouseup", function() { - if (activeElt() == d.input) d.input.blur(); - focusInput(cm); - }); - } - - // Called when the window resizes - function onResize(cm) { - var d = cm.display; - if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth) - return; - // Might be a text scaling operation, clear size caches. - d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; - cm.setSize(); - } - - // MOUSE EVENTS - - // Return true when the given mouse event happened in a widget - function eventInWidget(display, e) { - for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { - if (!n || n.ignoreEvents || n.parentNode == display.sizer && n != display.mover) return true; - } - } - - // Given a mouse event, find the corresponding position. If liberal - // is false, it checks whether a gutter or scrollbar was clicked, - // and returns null if it was. forRect is used by rectangular - // selections, and tries to estimate a character position even for - // coordinates beyond the right of the text. - function posFromMouse(cm, e, liberal, forRect) { - var display = cm.display; - if (!liberal) { - var target = e_target(e); - if (target == display.scrollbarH || target == display.scrollbarV || - target == display.scrollbarFiller || target == display.gutterFiller) return null; - } - var x, y, space = display.lineSpace.getBoundingClientRect(); - // Fails unpredictably on IE[67] when mouse is dragged around quickly. - try { x = e.clientX - space.left; y = e.clientY - space.top; } - catch (e) { return null; } - var coords = coordsChar(cm, x, y), line; - if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { - var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length; - coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)); - } - return coords; - } - - // A mouse down can be a single click, double click, triple click, - // start of selection drag, start of text drag, new cursor - // (ctrl-click), rectangle drag (alt-drag), or xwin - // middle-click-paste. Or it might be a click on something we should - // not interfere with, such as a scrollbar or widget. - function onMouseDown(e) { - if (signalDOMEvent(this, e)) return; - var cm = this, display = cm.display; - display.shift = e.shiftKey; - - if (eventInWidget(display, e)) { - if (!webkit) { - // Briefly turn off draggability, to allow widgets to do - // normal dragging things. - display.scroller.draggable = false; - setTimeout(function(){display.scroller.draggable = true;}, 100); - } - return; - } - if (clickInGutter(cm, e)) return; - var start = posFromMouse(cm, e); - window.focus(); - - switch (e_button(e)) { - case 1: - if (start) - leftButtonDown(cm, e, start); - else if (e_target(e) == display.scroller) - e_preventDefault(e); - break; - case 2: - if (webkit) cm.state.lastMiddleDown = +new Date; - if (start) extendSelection(cm.doc, start); - setTimeout(bind(focusInput, cm), 20); - e_preventDefault(e); - break; - case 3: - if (captureRightClick) onContextMenu(cm, e); - break; - } - } - - var lastClick, lastDoubleClick; - function leftButtonDown(cm, e, start) { - setTimeout(bind(ensureFocus, cm), 0); - - var now = +new Date, type; - if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) { - type = "triple"; - } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) { - type = "double"; - lastDoubleClick = {time: now, pos: start}; - } else { - type = "single"; - lastClick = {time: now, pos: start}; - } - - var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey; - if (cm.options.dragDrop && dragAndDrop && !isReadOnly(cm) && - type == "single" && sel.contains(start) > -1 && sel.somethingSelected()) - leftButtonStartDrag(cm, e, start, modifier); - else - leftButtonSelect(cm, e, start, type, modifier); - } - - // Start a text drag. When it ends, see if any dragging actually - // happen, and treat as a click if it didn't. - function leftButtonStartDrag(cm, e, start, modifier) { - var display = cm.display; - var dragEnd = operation(cm, function(e2) { - if (webkit) display.scroller.draggable = false; - cm.state.draggingText = false; - off(document, "mouseup", dragEnd); - off(display.scroller, "drop", dragEnd); - if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { - e_preventDefault(e2); - if (!modifier) - extendSelection(cm.doc, start); - focusInput(cm); - // Work around unexplainable focus problem in IE9 (#2127) - if (ie && ie_version == 9) - setTimeout(function() {document.body.focus(); focusInput(cm);}, 20); - } - }); - // Let the drag handler handle this. - if (webkit) display.scroller.draggable = true; - cm.state.draggingText = dragEnd; - // IE's approach to draggable - if (display.scroller.dragDrop) display.scroller.dragDrop(); - on(document, "mouseup", dragEnd); - on(display.scroller, "drop", dragEnd); - } - - // Normal selection, as opposed to text dragging. - function leftButtonSelect(cm, e, start, type, addNew) { - var display = cm.display, doc = cm.doc; - e_preventDefault(e); - - var ourRange, ourIndex, startSel = doc.sel; - if (addNew && !e.shiftKey) { - ourIndex = doc.sel.contains(start); - if (ourIndex > -1) - ourRange = doc.sel.ranges[ourIndex]; - else - ourRange = new Range(start, start); - } else { - ourRange = doc.sel.primary(); - } - - if (e.altKey) { - type = "rect"; - if (!addNew) ourRange = new Range(start, start); - start = posFromMouse(cm, e, true, true); - ourIndex = -1; - } else if (type == "double") { - var word = cm.findWordAt(start); - if (cm.display.shift || doc.extend) - ourRange = extendRange(doc, ourRange, word.anchor, word.head); - else - ourRange = word; - } else if (type == "triple") { - var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0))); - if (cm.display.shift || doc.extend) - ourRange = extendRange(doc, ourRange, line.anchor, line.head); - else - ourRange = line; - } else { - ourRange = extendRange(doc, ourRange, start); - } - - if (!addNew) { - ourIndex = 0; - setSelection(doc, new Selection([ourRange], 0), sel_mouse); - startSel = doc.sel; - } else if (ourIndex > -1) { - replaceOneSelection(doc, ourIndex, ourRange, sel_mouse); - } else { - ourIndex = doc.sel.ranges.length; - setSelection(doc, normalizeSelection(doc.sel.ranges.concat([ourRange]), ourIndex), - {scroll: false, origin: "*mouse"}); - } - - var lastPos = start; - function extendTo(pos) { - if (cmp(lastPos, pos) == 0) return; - lastPos = pos; - - if (type == "rect") { - var ranges = [], tabSize = cm.options.tabSize; - var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize); - var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize); - var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol); - for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); - line <= end; line++) { - var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize); - if (left == right) - ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); - else if (text.length > leftPos) - ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); - } - if (!ranges.length) ranges.push(new Range(start, start)); - setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), - {origin: "*mouse", scroll: false}); - cm.scrollIntoView(pos); - } else { - var oldRange = ourRange; - var anchor = oldRange.anchor, head = pos; - if (type != "single") { - if (type == "double") - var range = cm.findWordAt(pos); - else - var range = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0))); - if (cmp(range.anchor, anchor) > 0) { - head = range.head; - anchor = minPos(oldRange.from(), range.anchor); - } else { - head = range.anchor; - anchor = maxPos(oldRange.to(), range.head); - } - } - var ranges = startSel.ranges.slice(0); - ranges[ourIndex] = new Range(clipPos(doc, anchor), head); - setSelection(doc, normalizeSelection(ranges, ourIndex), sel_mouse); - } - } - - var editorSize = display.wrapper.getBoundingClientRect(); - // Used to ensure timeout re-tries don't fire when another extend - // happened in the meantime (clearTimeout isn't reliable -- at - // least on Chrome, the timeouts still happen even when cleared, - // if the clear happens after their scheduled firing time). - var counter = 0; - - function extend(e) { - var curCount = ++counter; - var cur = posFromMouse(cm, e, true, type == "rect"); - if (!cur) return; - if (cmp(cur, lastPos) != 0) { - ensureFocus(cm); - extendTo(cur); - var visible = visibleLines(display, doc); - if (cur.line >= visible.to || cur.line < visible.from) - setTimeout(operation(cm, function(){if (counter == curCount) extend(e);}), 150); - } else { - var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0; - if (outside) setTimeout(operation(cm, function() { - if (counter != curCount) return; - display.scroller.scrollTop += outside; - extend(e); - }), 50); - } - } - - function done(e) { - counter = Infinity; - e_preventDefault(e); - focusInput(cm); - off(document, "mousemove", move); - off(document, "mouseup", up); - doc.history.lastSelOrigin = null; - } - - var move = operation(cm, function(e) { - if (!e_button(e)) done(e); - else extend(e); - }); - var up = operation(cm, done); - on(document, "mousemove", move); - on(document, "mouseup", up); - } - - // Determines whether an event happened in the gutter, and fires the - // handlers for the corresponding event. - function gutterEvent(cm, e, type, prevent, signalfn) { - try { var mX = e.clientX, mY = e.clientY; } - catch(e) { return false; } - if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false; - if (prevent) e_preventDefault(e); - - var display = cm.display; - var lineBox = display.lineDiv.getBoundingClientRect(); - - if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e); - mY -= lineBox.top - display.viewOffset; - - for (var i = 0; i < cm.options.gutters.length; ++i) { - var g = display.gutters.childNodes[i]; - if (g && g.getBoundingClientRect().right >= mX) { - var line = lineAtHeight(cm.doc, mY); - var gutter = cm.options.gutters[i]; - signalfn(cm, type, cm, line, gutter, e); - return e_defaultPrevented(e); - } - } - } - - function clickInGutter(cm, e) { - return gutterEvent(cm, e, "gutterClick", true, signalLater); - } - - // Kludge to work around strange IE behavior where it'll sometimes - // re-fire a series of drag-related events right after the drop (#1551) - var lastDrop = 0; - - function onDrop(e) { - var cm = this; - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) - return; - e_preventDefault(e); - if (ie) lastDrop = +new Date; - var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files; - if (!pos || isReadOnly(cm)) return; - // Might be a file drop, in which case we simply extract the text - // and insert it. - if (files && files.length && window.FileReader && window.File) { - var n = files.length, text = Array(n), read = 0; - var loadFile = function(file, i) { - var reader = new FileReader; - reader.onload = operation(cm, function() { - text[i] = reader.result; - if (++read == n) { - pos = clipPos(cm.doc, pos); - var change = {from: pos, to: pos, text: splitLines(text.join("\n")), origin: "paste"}; - makeChange(cm.doc, change); - setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change))); - } - }); - reader.readAsText(file); - }; - for (var i = 0; i < n; ++i) loadFile(files[i], i); - } else { // Normal drop - // Don't do a replace if the drop happened inside of the selected text. - if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { - cm.state.draggingText(e); - // Ensure the editor is re-focused - setTimeout(bind(focusInput, cm), 20); - return; - } - try { - var text = e.dataTransfer.getData("Text"); - if (text) { - if (cm.state.draggingText && !(mac ? e.metaKey : e.ctrlKey)) - var selected = cm.listSelections(); - setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)); - if (selected) for (var i = 0; i < selected.length; ++i) - replaceRange(cm.doc, "", selected[i].anchor, selected[i].head, "drag"); - cm.replaceSelection(text, "around", "paste"); - focusInput(cm); - } - } - catch(e){} - } - } - - function onDragStart(cm, e) { - if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return; } - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return; - - e.dataTransfer.setData("Text", cm.getSelection()); - - // Use dummy image instead of default browsers image. - // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. - if (e.dataTransfer.setDragImage && !safari) { - var img = elt("img", null, null, "position: fixed; left: 0; top: 0;"); - img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; - if (presto) { - img.width = img.height = 1; - cm.display.wrapper.appendChild(img); - // Force a relayout, or Opera won't use our image for some obscure reason - img._top = img.offsetTop; - } - e.dataTransfer.setDragImage(img, 0, 0); - if (presto) img.parentNode.removeChild(img); - } - } - - // SCROLL EVENTS - - // Sync the scrollable area and scrollbars, ensure the viewport - // covers the visible area. - function setScrollTop(cm, val) { - if (Math.abs(cm.doc.scrollTop - val) < 2) return; - cm.doc.scrollTop = val; - if (!gecko) updateDisplaySimple(cm, {top: val}); - if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val; - if (cm.display.scrollbarV.scrollTop != val) cm.display.scrollbarV.scrollTop = val; - if (gecko) updateDisplaySimple(cm); - startWorker(cm, 100); - } - // Sync scroller and scrollbar, ensure the gutter elements are - // aligned. - function setScrollLeft(cm, val, isScroller) { - if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return; - val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth); - cm.doc.scrollLeft = val; - alignHorizontally(cm); - if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val; - if (cm.display.scrollbarH.scrollLeft != val) cm.display.scrollbarH.scrollLeft = val; - } - - // Since the delta values reported on mouse wheel events are - // unstandardized between browsers and even browser versions, and - // generally horribly unpredictable, this code starts by measuring - // the scroll effect that the first few mouse wheel events have, - // and, from that, detects the way it can convert deltas to pixel - // offsets afterwards. - // - // The reason we want to know the amount a wheel event will scroll - // is that it gives us a chance to update the display before the - // actual scrolling happens, reducing flickering. - - var wheelSamples = 0, wheelPixelsPerUnit = null; - // Fill in a browser-detected starting value on browsers where we - // know one. These don't have to be accurate -- the result of them - // being wrong would just be a slight flicker on the first wheel - // scroll (if it is large enough). - if (ie) wheelPixelsPerUnit = -.53; - else if (gecko) wheelPixelsPerUnit = 15; - else if (chrome) wheelPixelsPerUnit = -.7; - else if (safari) wheelPixelsPerUnit = -1/3; - - function onScrollWheel(cm, e) { - var dx = e.wheelDeltaX, dy = e.wheelDeltaY; - if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail; - if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail; - else if (dy == null) dy = e.wheelDelta; - - var display = cm.display, scroll = display.scroller; - // Quit if there's nothing to scroll here - if (!(dx && scroll.scrollWidth > scroll.clientWidth || - dy && scroll.scrollHeight > scroll.clientHeight)) return; - - // Webkit browsers on OS X abort momentum scrolls when the target - // of the scroll event is removed from the scrollable element. - // This hack (see related code in patchDisplay) makes sure the - // element is kept around. - if (dy && mac && webkit) { - outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { - for (var i = 0; i < view.length; i++) { - if (view[i].node == cur) { - cm.display.currentWheelTarget = cur; - break outer; - } - } - } - } - - // On some browsers, horizontal scrolling will cause redraws to - // happen before the gutter has been realigned, causing it to - // wriggle around in a most unseemly way. When we have an - // estimated pixels/delta value, we just handle horizontal - // scrolling entirely here. It'll be slightly off from native, but - // better than glitching out. - if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { - if (dy) - setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight))); - setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth))); - e_preventDefault(e); - display.wheelStartX = null; // Abort measurement, if in progress - return; - } - - // 'Project' the visible viewport to cover the area that is being - // scrolled into view (if we know enough to estimate it). - if (dy && wheelPixelsPerUnit != null) { - var pixels = dy * wheelPixelsPerUnit; - var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; - if (pixels < 0) top = Math.max(0, top + pixels - 50); - else bot = Math.min(cm.doc.height, bot + pixels + 50); - updateDisplaySimple(cm, {top: top, bottom: bot}); - } - - if (wheelSamples < 20) { - if (display.wheelStartX == null) { - display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; - display.wheelDX = dx; display.wheelDY = dy; - setTimeout(function() { - if (display.wheelStartX == null) return; - var movedX = scroll.scrollLeft - display.wheelStartX; - var movedY = scroll.scrollTop - display.wheelStartY; - var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || - (movedX && display.wheelDX && movedX / display.wheelDX); - display.wheelStartX = display.wheelStartY = null; - if (!sample) return; - wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); - ++wheelSamples; - }, 200); - } else { - display.wheelDX += dx; display.wheelDY += dy; - } - } - } - - // KEY EVENTS - - // Run a handler that was bound to a key. - function doHandleBinding(cm, bound, dropShift) { - if (typeof bound == "string") { - bound = commands[bound]; - if (!bound) return false; - } - // Ensure previous input has been read, so that the handler sees a - // consistent view of the document - if (cm.display.pollingFast && readInput(cm)) cm.display.pollingFast = false; - var prevShift = cm.display.shift, done = false; - try { - if (isReadOnly(cm)) cm.state.suppressEdits = true; - if (dropShift) cm.display.shift = false; - done = bound(cm) != Pass; - } finally { - cm.display.shift = prevShift; - cm.state.suppressEdits = false; - } - return done; - } - - function lookupKeyForEditor(cm, name, handle) { - for (var i = 0; i < cm.state.keyMaps.length; i++) { - var result = lookupKey(name, cm.state.keyMaps[i], handle); - if (result) return result; - } - return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle)) - || lookupKey(name, cm.options.keyMap, handle); - } - - var stopSeq = new Delayed; - function dispatchKey(cm, name, e, handle) { - var seq = cm.state.keySeq; - if (seq) { - if (isModifierKey(name)) return "handled"; - stopSeq.set(50, function() { - if (cm.state.keySeq == seq) { - cm.state.keySeq = null; - resetInput(cm); - } - }); - name = seq + " " + name; - } - var result = lookupKeyForEditor(cm, name, handle); - - if (result == "multi") - cm.state.keySeq = name; - if (result == "handled") - signalLater(cm, "keyHandled", cm, name, e); - - if (result == "handled" || result == "multi") { - e_preventDefault(e); - restartBlink(cm); - } - - if (seq && !result && /\'$/.test(name)) { - e_preventDefault(e); - return true; - } - return !!result; - } - - // Handle a key from the keydown event. - function handleKeyBinding(cm, e) { - var name = keyName(e, true); - if (!name) return false; - - if (e.shiftKey && !cm.state.keySeq) { - // First try to resolve full name (including 'Shift-'). Failing - // that, see if there is a cursor-motion command (starting with - // 'go') bound to the keyname without 'Shift-'. - return dispatchKey(cm, "Shift-" + name, e, function(b) {return doHandleBinding(cm, b, true);}) - || dispatchKey(cm, name, e, function(b) { - if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) - return doHandleBinding(cm, b); - }); - } else { - return dispatchKey(cm, name, e, function(b) { return doHandleBinding(cm, b); }); - } - } - - // Handle a key from the keypress event - function handleCharBinding(cm, e, ch) { - return dispatchKey(cm, "'" + ch + "'", e, - function(b) { return doHandleBinding(cm, b, true); }); - } - - var lastStoppedKey = null; - function onKeyDown(e) { - var cm = this; - ensureFocus(cm); - if (signalDOMEvent(cm, e)) return; - // IE does strange things with escape. - if (ie && ie_version < 11 && e.keyCode == 27) e.returnValue = false; - var code = e.keyCode; - cm.display.shift = code == 16 || e.shiftKey; - var handled = handleKeyBinding(cm, e); - if (presto) { - lastStoppedKey = handled ? code : null; - // Opera has no cut event... we try to at least catch the key combo - if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) - cm.replaceSelection("", null, "cut"); - } - - // Turn mouse into crosshair when Alt is held on Mac. - if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) - showCrossHair(cm); - } - - function showCrossHair(cm) { - var lineDiv = cm.display.lineDiv; - addClass(lineDiv, "CodeMirror-crosshair"); - - function up(e) { - if (e.keyCode == 18 || !e.altKey) { - rmClass(lineDiv, "CodeMirror-crosshair"); - off(document, "keyup", up); - off(document, "mouseover", up); - } - } - on(document, "keyup", up); - on(document, "mouseover", up); - } - - function onKeyUp(e) { - if (e.keyCode == 16) this.doc.sel.shift = false; - signalDOMEvent(this, e); - } - - function onKeyPress(e) { - var cm = this; - if (signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) return; - var keyCode = e.keyCode, charCode = e.charCode; - if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;} - if (((presto && (!e.which || e.which < 10)) || khtml) && handleKeyBinding(cm, e)) return; - var ch = String.fromCharCode(charCode == null ? keyCode : charCode); - if (handleCharBinding(cm, e, ch)) return; - if (ie && ie_version >= 9) cm.display.inputHasSelection = null; - fastPoll(cm); - } - - // FOCUS/BLUR EVENTS - - function onFocus(cm) { - if (cm.options.readOnly == "nocursor") return; - if (!cm.state.focused) { - signal(cm, "focus", cm); - cm.state.focused = true; - addClass(cm.display.wrapper, "CodeMirror-focused"); - // The prevInput test prevents this from firing when a context - // menu is closed (since the resetInput would kill the - // select-all detection hack) - if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { - resetInput(cm); - if (webkit) setTimeout(bind(resetInput, cm, true), 0); // Issue #1730 - } - } - slowPoll(cm); - restartBlink(cm); - } - function onBlur(cm) { - if (cm.state.focused) { - signal(cm, "blur", cm); - cm.state.focused = false; - rmClass(cm.display.wrapper, "CodeMirror-focused"); - } - clearInterval(cm.display.blinker); - setTimeout(function() {if (!cm.state.focused) cm.display.shift = false;}, 150); - } - - // CONTEXT MENU HANDLING - - // To make the context menu work, we need to briefly unhide the - // textarea (making it as unobtrusive as possible) to let the - // right-click take effect on it. - function onContextMenu(cm, e) { - if (signalDOMEvent(cm, e, "contextmenu")) return; - var display = cm.display; - if (eventInWidget(display, e) || contextMenuInGutter(cm, e)) return; - - var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop; - if (!pos || presto) return; // Opera is difficult. - - // Reset the current text selection only if the click is done outside of the selection - // and 'resetSelectionOnContextMenu' option is true. - var reset = cm.options.resetSelectionOnContextMenu; - if (reset && cm.doc.sel.contains(pos) == -1) - operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); - - var oldCSS = display.input.style.cssText; - display.inputDiv.style.position = "absolute"; - display.input.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (e.clientY - 5) + - "px; left: " + (e.clientX - 5) + "px; z-index: 1000; background: " + - (ie ? "rgba(255, 255, 255, .05)" : "transparent") + - "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; - if (webkit) var oldScrollY = window.scrollY; // Work around Chrome issue (#2712) - focusInput(cm); - if (webkit) window.scrollTo(null, oldScrollY); - resetInput(cm); - // Adds "Select all" to context menu in FF - if (!cm.somethingSelected()) display.input.value = display.prevInput = " "; - display.selForContextMenu = cm.doc.sel; - clearTimeout(display.detectingSelectAll); - - // Select-all will be greyed out if there's nothing to select, so - // this adds a zero-width space so that we can later check whether - // it got selected. - function prepareSelectAllHack() { - if (display.input.selectionStart != null) { - var selected = cm.somethingSelected(); - var extval = display.input.value = "\u200b" + (selected ? display.input.value : ""); - display.prevInput = selected ? "" : "\u200b"; - display.input.selectionStart = 1; display.input.selectionEnd = extval.length; - // Re-set this, in case some other handler touched the - // selection in the meantime. - display.selForContextMenu = cm.doc.sel; - } - } - function rehide() { - display.inputDiv.style.position = "relative"; - display.input.style.cssText = oldCSS; - if (ie && ie_version < 9) display.scrollbarV.scrollTop = display.scroller.scrollTop = scrollPos; - slowPoll(cm); - - // Try to detect the user choosing select-all - if (display.input.selectionStart != null) { - if (!ie || (ie && ie_version < 9)) prepareSelectAllHack(); - var i = 0, poll = function() { - if (display.selForContextMenu == cm.doc.sel && display.input.selectionStart == 0) - operation(cm, commands.selectAll)(cm); - else if (i++ < 10) display.detectingSelectAll = setTimeout(poll, 500); - else resetInput(cm); - }; - display.detectingSelectAll = setTimeout(poll, 200); - } - } - - if (ie && ie_version >= 9) prepareSelectAllHack(); - if (captureRightClick) { - e_stop(e); - var mouseup = function() { - off(window, "mouseup", mouseup); - setTimeout(rehide, 20); - }; - on(window, "mouseup", mouseup); - } else { - setTimeout(rehide, 50); - } - } - - function contextMenuInGutter(cm, e) { - if (!hasHandler(cm, "gutterContextMenu")) return false; - return gutterEvent(cm, e, "gutterContextMenu", false, signal); - } - - // UPDATING - - // Compute the position of the end of a change (its 'to' property - // refers to the pre-change end). - var changeEnd = CodeMirror.changeEnd = function(change) { - if (!change.text) return change.to; - return Pos(change.from.line + change.text.length - 1, - lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)); - }; - - // Adjust a position to refer to the post-change position of the - // same text, or the end of the change if the change covers it. - function adjustForChange(pos, change) { - if (cmp(pos, change.from) < 0) return pos; - if (cmp(pos, change.to) <= 0) return changeEnd(change); - - var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch; - if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch; - return Pos(line, ch); - } - - function computeSelAfterChange(doc, change) { - var out = []; - for (var i = 0; i < doc.sel.ranges.length; i++) { - var range = doc.sel.ranges[i]; - out.push(new Range(adjustForChange(range.anchor, change), - adjustForChange(range.head, change))); - } - return normalizeSelection(out, doc.sel.primIndex); - } - - function offsetPos(pos, old, nw) { - if (pos.line == old.line) - return Pos(nw.line, pos.ch - old.ch + nw.ch); - else - return Pos(nw.line + (pos.line - old.line), pos.ch); - } - - // Used by replaceSelections to allow moving the selection to the - // start or around the replaced test. Hint may be "start" or "around". - function computeReplacedSel(doc, changes, hint) { - var out = []; - var oldPrev = Pos(doc.first, 0), newPrev = oldPrev; - for (var i = 0; i < changes.length; i++) { - var change = changes[i]; - var from = offsetPos(change.from, oldPrev, newPrev); - var to = offsetPos(changeEnd(change), oldPrev, newPrev); - oldPrev = change.to; - newPrev = to; - if (hint == "around") { - var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0; - out[i] = new Range(inv ? to : from, inv ? from : to); - } else { - out[i] = new Range(from, from); - } - } - return new Selection(out, doc.sel.primIndex); - } - - // Allow "beforeChange" event handlers to influence a change - function filterChange(doc, change, update) { - var obj = { - canceled: false, - from: change.from, - to: change.to, - text: change.text, - origin: change.origin, - cancel: function() { this.canceled = true; } - }; - if (update) obj.update = function(from, to, text, origin) { - if (from) this.from = clipPos(doc, from); - if (to) this.to = clipPos(doc, to); - if (text) this.text = text; - if (origin !== undefined) this.origin = origin; - }; - signal(doc, "beforeChange", doc, obj); - if (doc.cm) signal(doc.cm, "beforeChange", doc.cm, obj); - - if (obj.canceled) return null; - return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}; - } - - // Apply a change to a document, and add it to the document's - // history, and propagating it to all linked documents. - function makeChange(doc, change, ignoreReadOnly) { - if (doc.cm) { - if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly); - if (doc.cm.state.suppressEdits) return; - } - - if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { - change = filterChange(doc, change, true); - if (!change) return; - } - - // Possibly split or suppress the update based on the presence - // of read-only spans in its range. - var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to); - if (split) { - for (var i = split.length - 1; i >= 0; --i) - makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text}); - } else { - makeChangeInner(doc, change); - } - } - - function makeChangeInner(doc, change) { - if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) return; - var selAfter = computeSelAfterChange(doc, change); - addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN); - - makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)); - var rebased = []; - - linkedDocs(doc, function(doc, sharedHist) { - if (!sharedHist && indexOf(rebased, doc.history) == -1) { - rebaseHist(doc.history, change); - rebased.push(doc.history); - } - makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)); - }); - } - - // Revert a change stored in a document's history. - function makeChangeFromHistory(doc, type, allowSelectionOnly) { - if (doc.cm && doc.cm.state.suppressEdits) return; - - var hist = doc.history, event, selAfter = doc.sel; - var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done; - - // Verify that there is a useable event (so that ctrl-z won't - // needlessly clear selection events) - for (var i = 0; i < source.length; i++) { - event = source[i]; - if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) - break; - } - if (i == source.length) return; - hist.lastOrigin = hist.lastSelOrigin = null; - - for (;;) { - event = source.pop(); - if (event.ranges) { - pushSelectionToHistory(event, dest); - if (allowSelectionOnly && !event.equals(doc.sel)) { - setSelection(doc, event, {clearRedo: false}); - return; - } - selAfter = event; - } - else break; - } - - // Build up a reverse change object to add to the opposite history - // stack (redo when undoing, and vice versa). - var antiChanges = []; - pushSelectionToHistory(selAfter, dest); - dest.push({changes: antiChanges, generation: hist.generation}); - hist.generation = event.generation || ++hist.maxGeneration; - - var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange"); - - for (var i = event.changes.length - 1; i >= 0; --i) { - var change = event.changes[i]; - change.origin = type; - if (filter && !filterChange(doc, change, false)) { - source.length = 0; - return; - } - - antiChanges.push(historyChangeFromChange(doc, change)); - - var after = i ? computeSelAfterChange(doc, change) : lst(source); - makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)); - if (!i && doc.cm) doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); - var rebased = []; - - // Propagate to the linked documents - linkedDocs(doc, function(doc, sharedHist) { - if (!sharedHist && indexOf(rebased, doc.history) == -1) { - rebaseHist(doc.history, change); - rebased.push(doc.history); - } - makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)); - }); - } - } - - // Sub-views need their line numbers shifted when text is added - // above or below them in the parent document. - function shiftDoc(doc, distance) { - if (distance == 0) return; - doc.first += distance; - doc.sel = new Selection(map(doc.sel.ranges, function(range) { - return new Range(Pos(range.anchor.line + distance, range.anchor.ch), - Pos(range.head.line + distance, range.head.ch)); - }), doc.sel.primIndex); - if (doc.cm) { - regChange(doc.cm, doc.first, doc.first - distance, distance); - for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) - regLineChange(doc.cm, l, "gutter"); - } - } - - // More lower-level change function, handling only a single document - // (not linked ones). - function makeChangeSingleDoc(doc, change, selAfter, spans) { - if (doc.cm && !doc.cm.curOp) - return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans); - - if (change.to.line < doc.first) { - shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)); - return; - } - if (change.from.line > doc.lastLine()) return; - - // Clip the change to the size of this doc - if (change.from.line < doc.first) { - var shift = change.text.length - 1 - (doc.first - change.from.line); - shiftDoc(doc, shift); - change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), - text: [lst(change.text)], origin: change.origin}; - } - var last = doc.lastLine(); - if (change.to.line > last) { - change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), - text: [change.text[0]], origin: change.origin}; - } - - change.removed = getBetween(doc, change.from, change.to); - - if (!selAfter) selAfter = computeSelAfterChange(doc, change); - if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans); - else updateDoc(doc, change, spans); - setSelectionNoUndo(doc, selAfter, sel_dontScroll); - } - - // Handle the interaction of a change to a document with the editor - // that this document is part of. - function makeChangeSingleDocInEditor(cm, change, spans) { - var doc = cm.doc, display = cm.display, from = change.from, to = change.to; - - var recomputeMaxLength = false, checkWidthStart = from.line; - if (!cm.options.lineWrapping) { - checkWidthStart = lineNo(visualLine(getLine(doc, from.line))); - doc.iter(checkWidthStart, to.line + 1, function(line) { - if (line == display.maxLine) { - recomputeMaxLength = true; - return true; - } - }); - } - - if (doc.sel.contains(change.from, change.to) > -1) - signalCursorActivity(cm); - - updateDoc(doc, change, spans, estimateHeight(cm)); - - if (!cm.options.lineWrapping) { - doc.iter(checkWidthStart, from.line + change.text.length, function(line) { - var len = lineLength(line); - if (len > display.maxLineLength) { - display.maxLine = line; - display.maxLineLength = len; - display.maxLineChanged = true; - recomputeMaxLength = false; - } - }); - if (recomputeMaxLength) cm.curOp.updateMaxLine = true; - } - - // Adjust frontier, schedule worker - doc.frontier = Math.min(doc.frontier, from.line); - startWorker(cm, 400); - - var lendiff = change.text.length - (to.line - from.line) - 1; - // Remember that these lines changed, for updating the display - if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) - regLineChange(cm, from.line, "text"); - else - regChange(cm, from.line, to.line + 1, lendiff); - - var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change"); - if (changeHandler || changesHandler) { - var obj = { - from: from, to: to, - text: change.text, - removed: change.removed, - origin: change.origin - }; - if (changeHandler) signalLater(cm, "change", cm, obj); - if (changesHandler) (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); - } - cm.display.selForContextMenu = null; - } - - function replaceRange(doc, code, from, to, origin) { - if (!to) to = from; - if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; } - if (typeof code == "string") code = splitLines(code); - makeChange(doc, {from: from, to: to, text: code, origin: origin}); - } - - // SCROLLING THINGS INTO VIEW - - // If an editor sits on the top or bottom of the window, partially - // scrolled out of view, this ensures that the cursor is visible. - function maybeScrollWindow(cm, coords) { - if (signalDOMEvent(cm, "scrollCursorIntoView")) return; - - var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null; - if (coords.top + box.top < 0) doScroll = true; - else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false; - if (doScroll != null && !phantom) { - var scrollNode = elt("div", "\u200b", null, "position: absolute; top: " + - (coords.top - display.viewOffset - paddingTop(cm.display)) + "px; height: " + - (coords.bottom - coords.top + scrollerCutOff) + "px; left: " + - coords.left + "px; width: 2px;"); - cm.display.lineSpace.appendChild(scrollNode); - scrollNode.scrollIntoView(doScroll); - cm.display.lineSpace.removeChild(scrollNode); - } - } - - // Scroll a given position into view (immediately), verifying that - // it actually became visible (as line heights are accurately - // measured, the position of something may 'drift' during drawing). - function scrollPosIntoView(cm, pos, end, margin) { - if (margin == null) margin = 0; - for (var limit = 0; limit < 5; limit++) { - var changed = false, coords = cursorCoords(cm, pos); - var endCoords = !end || end == pos ? coords : cursorCoords(cm, end); - var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left), - Math.min(coords.top, endCoords.top) - margin, - Math.max(coords.left, endCoords.left), - Math.max(coords.bottom, endCoords.bottom) + margin); - var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft; - if (scrollPos.scrollTop != null) { - setScrollTop(cm, scrollPos.scrollTop); - if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true; - } - if (scrollPos.scrollLeft != null) { - setScrollLeft(cm, scrollPos.scrollLeft); - if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true; - } - if (!changed) return coords; - } - } - - // Scroll a given set of coordinates into view (immediately). - function scrollIntoView(cm, x1, y1, x2, y2) { - var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2); - if (scrollPos.scrollTop != null) setScrollTop(cm, scrollPos.scrollTop); - if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft); - } - - // Calculate a new scroll position needed to scroll the given - // rectangle into view. Returns an object with scrollTop and - // scrollLeft properties. When these are undefined, the - // vertical/horizontal position does not need to be adjusted. - function calculateScrollPos(cm, x1, y1, x2, y2) { - var display = cm.display, snapMargin = textHeight(cm.display); - if (y1 < 0) y1 = 0; - var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop; - var screen = display.scroller.clientHeight - scrollerCutOff, result = {}; - if (y2 - y1 > screen) y2 = y1 + screen; - var docBottom = cm.doc.height + paddingVert(display); - var atTop = y1 < snapMargin, atBottom = y2 > docBottom - snapMargin; - if (y1 < screentop) { - result.scrollTop = atTop ? 0 : y1; - } else if (y2 > screentop + screen) { - var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen); - if (newTop != screentop) result.scrollTop = newTop; - } - - var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft; - var screenw = display.scroller.clientWidth - scrollerCutOff - display.gutters.offsetWidth; - var tooWide = x2 - x1 > screenw; - if (tooWide) x2 = x1 + screenw; - if (x1 < 10) - result.scrollLeft = 0; - else if (x1 < screenleft) - result.scrollLeft = Math.max(0, x1 - (tooWide ? 0 : 10)); - else if (x2 > screenw + screenleft - 3) - result.scrollLeft = x2 + (tooWide ? 0 : 10) - screenw; - - return result; - } - - // Store a relative adjustment to the scroll position in the current - // operation (to be applied when the operation finishes). - function addToScrollPos(cm, left, top) { - if (left != null || top != null) resolveScrollToPos(cm); - if (left != null) - cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left; - if (top != null) - cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; - } - - // Make sure that at the end of the operation the current cursor is - // shown. - function ensureCursorVisible(cm) { - resolveScrollToPos(cm); - var cur = cm.getCursor(), from = cur, to = cur; - if (!cm.options.lineWrapping) { - from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur; - to = Pos(cur.line, cur.ch + 1); - } - cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin, isCursor: true}; - } - - // When an operation has its scrollToPos property set, and another - // scroll action is applied before the end of the operation, this - // 'simulates' scrolling that position into view in a cheap way, so - // that the effect of intermediate scroll commands is not ignored. - function resolveScrollToPos(cm) { - var range = cm.curOp.scrollToPos; - if (range) { - cm.curOp.scrollToPos = null; - var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to); - var sPos = calculateScrollPos(cm, Math.min(from.left, to.left), - Math.min(from.top, to.top) - range.margin, - Math.max(from.right, to.right), - Math.max(from.bottom, to.bottom) + range.margin); - cm.scrollTo(sPos.scrollLeft, sPos.scrollTop); - } - } - - // API UTILITIES - - // Indent the given line. The how parameter can be "smart", - // "add"/null, "subtract", or "prev". When aggressive is false - // (typically set to true for forced single-line indents), empty - // lines are not indented, and places where the mode returns Pass - // are left alone. - function indentLine(cm, n, how, aggressive) { - var doc = cm.doc, state; - if (how == null) how = "add"; - if (how == "smart") { - // Fall back to "prev" when the mode doesn't have an indentation - // method. - if (!doc.mode.indent) how = "prev"; - else state = getStateBefore(cm, n); - } - - var tabSize = cm.options.tabSize; - var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize); - if (line.stateAfter) line.stateAfter = null; - var curSpaceString = line.text.match(/^\s*/)[0], indentation; - if (!aggressive && !/\S/.test(line.text)) { - indentation = 0; - how = "not"; - } else if (how == "smart") { - indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text); - if (indentation == Pass || indentation > 150) { - if (!aggressive) return; - how = "prev"; - } - } - if (how == "prev") { - if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize); - else indentation = 0; - } else if (how == "add") { - indentation = curSpace + cm.options.indentUnit; - } else if (how == "subtract") { - indentation = curSpace - cm.options.indentUnit; - } else if (typeof how == "number") { - indentation = curSpace + how; - } - indentation = Math.max(0, indentation); - - var indentString = "", pos = 0; - if (cm.options.indentWithTabs) - for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} - if (pos < indentation) indentString += spaceStr(indentation - pos); - - if (indentString != curSpaceString) { - replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input"); - } else { - // Ensure that, if the cursor was in the whitespace at the start - // of the line, it is moved to the end of that space. - for (var i = 0; i < doc.sel.ranges.length; i++) { - var range = doc.sel.ranges[i]; - if (range.head.line == n && range.head.ch < curSpaceString.length) { - var pos = Pos(n, curSpaceString.length); - replaceOneSelection(doc, i, new Range(pos, pos)); - break; - } - } - } - line.stateAfter = null; - } - - // Utility for applying a change to a line by handle or number, - // returning the number and optionally registering the line as - // changed. - function changeLine(doc, handle, changeType, op) { - var no = handle, line = handle; - if (typeof handle == "number") line = getLine(doc, clipLine(doc, handle)); - else no = lineNo(handle); - if (no == null) return null; - if (op(line, no) && doc.cm) regLineChange(doc.cm, no, changeType); - return line; - } - - // Helper for deleting text near the selection(s), used to implement - // backspace, delete, and similar functionality. - function deleteNearSelection(cm, compute) { - var ranges = cm.doc.sel.ranges, kill = []; - // Build up a set of ranges to kill first, merging overlapping - // ranges. - for (var i = 0; i < ranges.length; i++) { - var toKill = compute(ranges[i]); - while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { - var replaced = kill.pop(); - if (cmp(replaced.from, toKill.from) < 0) { - toKill.from = replaced.from; - break; - } - } - kill.push(toKill); - } - // Next, remove those actual ranges. - runInOp(cm, function() { - for (var i = kill.length - 1; i >= 0; i--) - replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete"); - ensureCursorVisible(cm); - }); - } - - // Used for horizontal relative motion. Dir is -1 or 1 (left or - // right), unit can be "char", "column" (like char, but doesn't - // cross line boundaries), "word" (across next word), or "group" (to - // the start of next group of word or non-word-non-whitespace - // chars). The visually param controls whether, in right-to-left - // text, direction 1 means to move towards the next index in the - // string, or towards the character to the right of the current - // position. The resulting position will have a hitSide=true - // property if it reached the end of the document. - function findPosH(doc, pos, dir, unit, visually) { - var line = pos.line, ch = pos.ch, origDir = dir; - var lineObj = getLine(doc, line); - var possible = true; - function findNextLine() { - var l = line + dir; - if (l < doc.first || l >= doc.first + doc.size) return (possible = false); - line = l; - return lineObj = getLine(doc, l); - } - function moveOnce(boundToLine) { - var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true); - if (next == null) { - if (!boundToLine && findNextLine()) { - if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj); - else ch = dir < 0 ? lineObj.text.length : 0; - } else return (possible = false); - } else ch = next; - return true; - } - - if (unit == "char") moveOnce(); - else if (unit == "column") moveOnce(true); - else if (unit == "word" || unit == "group") { - var sawType = null, group = unit == "group"; - var helper = doc.cm && doc.cm.getHelper(pos, "wordChars"); - for (var first = true;; first = false) { - if (dir < 0 && !moveOnce(!first)) break; - var cur = lineObj.text.charAt(ch) || "\n"; - var type = isWordChar(cur, helper) ? "w" - : group && cur == "\n" ? "n" - : !group || /\s/.test(cur) ? null - : "p"; - if (group && !first && !type) type = "s"; - if (sawType && sawType != type) { - if (dir < 0) {dir = 1; moveOnce();} - break; - } - - if (type) sawType = type; - if (dir > 0 && !moveOnce(!first)) break; - } - } - var result = skipAtomic(doc, Pos(line, ch), origDir, true); - if (!possible) result.hitSide = true; - return result; - } - - // For relative vertical movement. Dir may be -1 or 1. Unit can be - // "page" or "line". The resulting position will have a hitSide=true - // property if it reached the end of the document. - function findPosV(cm, pos, dir, unit) { - var doc = cm.doc, x = pos.left, y; - if (unit == "page") { - var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight); - y = pos.top + dir * (pageSize - (dir < 0 ? 1.5 : .5) * textHeight(cm.display)); - } else if (unit == "line") { - y = dir > 0 ? pos.bottom + 3 : pos.top - 3; - } - for (;;) { - var target = coordsChar(cm, x, y); - if (!target.outside) break; - if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break; } - y += dir * 5; - } - return target; - } - - // EDITOR METHODS - - // The publicly visible API. Note that methodOp(f) means - // 'wrap f in an operation, performed on its `this` parameter'. - - // This is not the complete set of editor methods. Most of the - // methods defined on the Doc type are also injected into - // CodeMirror.prototype, for backwards compatibility and - // convenience. - - CodeMirror.prototype = { - constructor: CodeMirror, - focus: function(){window.focus(); focusInput(this); fastPoll(this);}, - - setOption: function(option, value) { - var options = this.options, old = options[option]; - if (options[option] == value && option != "mode") return; - options[option] = value; - if (optionHandlers.hasOwnProperty(option)) - operation(this, optionHandlers[option])(this, value, old); - }, - - getOption: function(option) {return this.options[option];}, - getDoc: function() {return this.doc;}, - - addKeyMap: function(map, bottom) { - this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map)); - }, - removeKeyMap: function(map) { - var maps = this.state.keyMaps; - for (var i = 0; i < maps.length; ++i) - if (maps[i] == map || maps[i].name == map) { - maps.splice(i, 1); - return true; - } - }, - - addOverlay: methodOp(function(spec, options) { - var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec); - if (mode.startState) throw new Error("Overlays may not be stateful."); - this.state.overlays.push({mode: mode, modeSpec: spec, opaque: options && options.opaque}); - this.state.modeGen++; - regChange(this); - }), - removeOverlay: methodOp(function(spec) { - var overlays = this.state.overlays; - for (var i = 0; i < overlays.length; ++i) { - var cur = overlays[i].modeSpec; - if (cur == spec || typeof spec == "string" && cur.name == spec) { - overlays.splice(i, 1); - this.state.modeGen++; - regChange(this); - return; - } - } - }), - - indentLine: methodOp(function(n, dir, aggressive) { - if (typeof dir != "string" && typeof dir != "number") { - if (dir == null) dir = this.options.smartIndent ? "smart" : "prev"; - else dir = dir ? "add" : "subtract"; - } - if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive); - }), - indentSelection: methodOp(function(how) { - var ranges = this.doc.sel.ranges, end = -1; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (!range.empty()) { - var from = range.from(), to = range.to(); - var start = Math.max(end, from.line); - end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; - for (var j = start; j < end; ++j) - indentLine(this, j, how); - var newRanges = this.doc.sel.ranges; - if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) - replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); - } else if (range.head.line > end) { - indentLine(this, range.head.line, how, true); - end = range.head.line; - if (i == this.doc.sel.primIndex) ensureCursorVisible(this); - } - } - }), - - // Fetch the parser token for a given character. Useful for hacks - // that want to inspect the mode state (say, for completion). - getTokenAt: function(pos, precise) { - return takeToken(this, pos, precise); - }, - - getLineTokens: function(line, precise) { - return takeToken(this, Pos(line), precise, true); - }, - - getTokenTypeAt: function(pos) { - pos = clipPos(this.doc, pos); - var styles = getLineStyles(this, getLine(this.doc, pos.line)); - var before = 0, after = (styles.length - 1) / 2, ch = pos.ch; - var type; - if (ch == 0) type = styles[2]; - else for (;;) { - var mid = (before + after) >> 1; - if ((mid ? styles[mid * 2 - 1] : 0) >= ch) after = mid; - else if (styles[mid * 2 + 1] < ch) before = mid + 1; - else { type = styles[mid * 2 + 2]; break; } - } - var cut = type ? type.indexOf("cm-overlay ") : -1; - return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1); - }, - - getModeAt: function(pos) { - var mode = this.doc.mode; - if (!mode.innerMode) return mode; - return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode; - }, - - getHelper: function(pos, type) { - return this.getHelpers(pos, type)[0]; - }, - - getHelpers: function(pos, type) { - var found = []; - if (!helpers.hasOwnProperty(type)) return helpers; - var help = helpers[type], mode = this.getModeAt(pos); - if (typeof mode[type] == "string") { - if (help[mode[type]]) found.push(help[mode[type]]); - } else if (mode[type]) { - for (var i = 0; i < mode[type].length; i++) { - var val = help[mode[type][i]]; - if (val) found.push(val); - } - } else if (mode.helperType && help[mode.helperType]) { - found.push(help[mode.helperType]); - } else if (help[mode.name]) { - found.push(help[mode.name]); - } - for (var i = 0; i < help._global.length; i++) { - var cur = help._global[i]; - if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) - found.push(cur.val); - } - return found; - }, - - getStateAfter: function(line, precise) { - var doc = this.doc; - line = clipLine(doc, line == null ? doc.first + doc.size - 1: line); - return getStateBefore(this, line + 1, precise); - }, - - cursorCoords: function(start, mode) { - var pos, range = this.doc.sel.primary(); - if (start == null) pos = range.head; - else if (typeof start == "object") pos = clipPos(this.doc, start); - else pos = start ? range.from() : range.to(); - return cursorCoords(this, pos, mode || "page"); - }, - - charCoords: function(pos, mode) { - return charCoords(this, clipPos(this.doc, pos), mode || "page"); - }, - - coordsChar: function(coords, mode) { - coords = fromCoordSystem(this, coords, mode || "page"); - return coordsChar(this, coords.left, coords.top); - }, - - lineAtHeight: function(height, mode) { - height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top; - return lineAtHeight(this.doc, height + this.display.viewOffset); - }, - heightAtLine: function(line, mode) { - var end = false, last = this.doc.first + this.doc.size - 1; - if (line < this.doc.first) line = this.doc.first; - else if (line > last) { line = last; end = true; } - var lineObj = getLine(this.doc, line); - return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page").top + - (end ? this.doc.height - heightAtLine(lineObj) : 0); - }, - - defaultTextHeight: function() { return textHeight(this.display); }, - defaultCharWidth: function() { return charWidth(this.display); }, - - setGutterMarker: methodOp(function(line, gutterID, value) { - return changeLine(this.doc, line, "gutter", function(line) { - var markers = line.gutterMarkers || (line.gutterMarkers = {}); - markers[gutterID] = value; - if (!value && isEmpty(markers)) line.gutterMarkers = null; - return true; - }); - }), - - clearGutter: methodOp(function(gutterID) { - var cm = this, doc = cm.doc, i = doc.first; - doc.iter(function(line) { - if (line.gutterMarkers && line.gutterMarkers[gutterID]) { - line.gutterMarkers[gutterID] = null; - regLineChange(cm, i, "gutter"); - if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null; - } - ++i; - }); - }), - - addLineWidget: methodOp(function(handle, node, options) { - return addLineWidget(this, handle, node, options); - }), - - removeLineWidget: function(widget) { widget.clear(); }, - - lineInfo: function(line) { - if (typeof line == "number") { - if (!isLine(this.doc, line)) return null; - var n = line; - line = getLine(this.doc, line); - if (!line) return null; - } else { - var n = lineNo(line); - if (n == null) return null; - } - return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, - textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, - widgets: line.widgets}; - }, - - getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo};}, - - addWidget: function(pos, node, scroll, vert, horiz) { - var display = this.display; - pos = cursorCoords(this, clipPos(this.doc, pos)); - var top = pos.bottom, left = pos.left; - node.style.position = "absolute"; - display.sizer.appendChild(node); - if (vert == "over") { - top = pos.top; - } else if (vert == "above" || vert == "near") { - var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), - hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); - // Default to positioning above (if specified and possible); otherwise default to positioning below - if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) - top = pos.top - node.offsetHeight; - else if (pos.bottom + node.offsetHeight <= vspace) - top = pos.bottom; - if (left + node.offsetWidth > hspace) - left = hspace - node.offsetWidth; - } - node.style.top = top + "px"; - node.style.left = node.style.right = ""; - if (horiz == "right") { - left = display.sizer.clientWidth - node.offsetWidth; - node.style.right = "0px"; - } else { - if (horiz == "left") left = 0; - else if (horiz == "middle") left = (display.sizer.clientWidth - node.offsetWidth) / 2; - node.style.left = left + "px"; - } - if (scroll) - scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight); - }, - - triggerOnKeyDown: methodOp(onKeyDown), - triggerOnKeyPress: methodOp(onKeyPress), - triggerOnKeyUp: onKeyUp, - - execCommand: function(cmd) { - if (commands.hasOwnProperty(cmd)) - return commands[cmd](this); - }, - - findPosH: function(from, amount, unit, visually) { - var dir = 1; - if (amount < 0) { dir = -1; amount = -amount; } - for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { - cur = findPosH(this.doc, cur, dir, unit, visually); - if (cur.hitSide) break; - } - return cur; - }, - - moveH: methodOp(function(dir, unit) { - var cm = this; - cm.extendSelectionsBy(function(range) { - if (cm.display.shift || cm.doc.extend || range.empty()) - return findPosH(cm.doc, range.head, dir, unit, cm.options.rtlMoveVisually); - else - return dir < 0 ? range.from() : range.to(); - }, sel_move); - }), - - deleteH: methodOp(function(dir, unit) { - var sel = this.doc.sel, doc = this.doc; - if (sel.somethingSelected()) - doc.replaceSelection("", null, "+delete"); - else - deleteNearSelection(this, function(range) { - var other = findPosH(doc, range.head, dir, unit, false); - return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}; - }); - }), - - findPosV: function(from, amount, unit, goalColumn) { - var dir = 1, x = goalColumn; - if (amount < 0) { dir = -1; amount = -amount; } - for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { - var coords = cursorCoords(this, cur, "div"); - if (x == null) x = coords.left; - else coords.left = x; - cur = findPosV(this, coords, dir, unit); - if (cur.hitSide) break; - } - return cur; - }, - - moveV: methodOp(function(dir, unit) { - var cm = this, doc = this.doc, goals = []; - var collapse = !cm.display.shift && !doc.extend && doc.sel.somethingSelected(); - doc.extendSelectionsBy(function(range) { - if (collapse) - return dir < 0 ? range.from() : range.to(); - var headPos = cursorCoords(cm, range.head, "div"); - if (range.goalColumn != null) headPos.left = range.goalColumn; - goals.push(headPos.left); - var pos = findPosV(cm, headPos, dir, unit); - if (unit == "page" && range == doc.sel.primary()) - addToScrollPos(cm, null, charCoords(cm, pos, "div").top - headPos.top); - return pos; - }, sel_move); - if (goals.length) for (var i = 0; i < doc.sel.ranges.length; i++) - doc.sel.ranges[i].goalColumn = goals[i]; - }), - - // Find the word at the given position (as returned by coordsChar). - findWordAt: function(pos) { - var doc = this.doc, line = getLine(doc, pos.line).text; - var start = pos.ch, end = pos.ch; - if (line) { - var helper = this.getHelper(pos, "wordChars"); - if ((pos.xRel < 0 || end == line.length) && start) --start; else ++end; - var startChar = line.charAt(start); - var check = isWordChar(startChar, helper) - ? function(ch) { return isWordChar(ch, helper); } - : /\s/.test(startChar) ? function(ch) {return /\s/.test(ch);} - : function(ch) {return !/\s/.test(ch) && !isWordChar(ch);}; - while (start > 0 && check(line.charAt(start - 1))) --start; - while (end < line.length && check(line.charAt(end))) ++end; - } - return new Range(Pos(pos.line, start), Pos(pos.line, end)); - }, - - toggleOverwrite: function(value) { - if (value != null && value == this.state.overwrite) return; - if (this.state.overwrite = !this.state.overwrite) - addClass(this.display.cursorDiv, "CodeMirror-overwrite"); - else - rmClass(this.display.cursorDiv, "CodeMirror-overwrite"); - - signal(this, "overwriteToggle", this, this.state.overwrite); - }, - hasFocus: function() { return activeElt() == this.display.input; }, - - scrollTo: methodOp(function(x, y) { - if (x != null || y != null) resolveScrollToPos(this); - if (x != null) this.curOp.scrollLeft = x; - if (y != null) this.curOp.scrollTop = y; - }), - getScrollInfo: function() { - var scroller = this.display.scroller, co = scrollerCutOff; - return {left: scroller.scrollLeft, top: scroller.scrollTop, - height: scroller.scrollHeight - co, width: scroller.scrollWidth - co, - clientHeight: scroller.clientHeight - co, clientWidth: scroller.clientWidth - co}; - }, - - scrollIntoView: methodOp(function(range, margin) { - if (range == null) { - range = {from: this.doc.sel.primary().head, to: null}; - if (margin == null) margin = this.options.cursorScrollMargin; - } else if (typeof range == "number") { - range = {from: Pos(range, 0), to: null}; - } else if (range.from == null) { - range = {from: range, to: null}; - } - if (!range.to) range.to = range.from; - range.margin = margin || 0; - - if (range.from.line != null) { - resolveScrollToPos(this); - this.curOp.scrollToPos = range; - } else { - var sPos = calculateScrollPos(this, Math.min(range.from.left, range.to.left), - Math.min(range.from.top, range.to.top) - range.margin, - Math.max(range.from.right, range.to.right), - Math.max(range.from.bottom, range.to.bottom) + range.margin); - this.scrollTo(sPos.scrollLeft, sPos.scrollTop); - } - }), - - setSize: methodOp(function(width, height) { - var cm = this; - function interpret(val) { - return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; - } - if (width != null) cm.display.wrapper.style.width = interpret(width); - if (height != null) cm.display.wrapper.style.height = interpret(height); - if (cm.options.lineWrapping) clearLineMeasurementCache(this); - var lineNo = cm.display.viewFrom; - cm.doc.iter(lineNo, cm.display.viewTo, function(line) { - if (line.widgets) for (var i = 0; i < line.widgets.length; i++) - if (line.widgets[i].noHScroll) { regLineChange(cm, lineNo, "widget"); break; } - ++lineNo; - }); - cm.curOp.forceUpdate = true; - signal(cm, "refresh", this); - }), - - operation: function(f){return runInOp(this, f);}, - - refresh: methodOp(function() { - var oldHeight = this.display.cachedTextHeight; - regChange(this); - this.curOp.forceUpdate = true; - clearCaches(this); - this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop); - updateGutterSpace(this); - if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) - estimateLineHeights(this); - signal(this, "refresh", this); - }), - - swapDoc: methodOp(function(doc) { - var old = this.doc; - old.cm = null; - attachDoc(this, doc); - clearCaches(this); - resetInput(this); - this.scrollTo(doc.scrollLeft, doc.scrollTop); - this.curOp.forceScroll = true; - signalLater(this, "swapDoc", this, old); - return old; - }), - - getInputField: function(){return this.display.input;}, - getWrapperElement: function(){return this.display.wrapper;}, - getScrollerElement: function(){return this.display.scroller;}, - getGutterElement: function(){return this.display.gutters;} - }; - eventMixin(CodeMirror); - - // OPTION DEFAULTS - - // The default configuration options. - var defaults = CodeMirror.defaults = {}; - // Functions to run when options are changed. - var optionHandlers = CodeMirror.optionHandlers = {}; - - function option(name, deflt, handle, notOnInit) { - CodeMirror.defaults[name] = deflt; - if (handle) optionHandlers[name] = - notOnInit ? function(cm, val, old) {if (old != Init) handle(cm, val, old);} : handle; - } - - // Passed to option handlers when there is no old value. - var Init = CodeMirror.Init = {toString: function(){return "CodeMirror.Init";}}; - - // These two are, on init, called from the constructor because they - // have to be initialized before the editor can start at all. - option("value", "", function(cm, val) { - cm.setValue(val); - }, true); - option("mode", null, function(cm, val) { - cm.doc.modeOption = val; - loadMode(cm); - }, true); - - option("indentUnit", 2, loadMode, true); - option("indentWithTabs", false); - option("smartIndent", true); - option("tabSize", 4, function(cm) { - resetModeState(cm); - clearCaches(cm); - regChange(cm); - }, true); - option("specialChars", /[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g, function(cm, val) { - cm.options.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g"); - cm.refresh(); - }, true); - option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true); - option("electricChars", true); - option("rtlMoveVisually", !windows); - option("wholeLineUpdateBefore", true); - - option("theme", "default", function(cm) { - themeChanged(cm); - guttersChanged(cm); - }, true); - option("keyMap", "default", function(cm, val, old) { - var next = getKeyMap(val); - var prev = old != CodeMirror.Init && getKeyMap(old); - if (prev && prev.detach) prev.detach(cm, next); - if (next.attach) next.attach(cm, prev || null); - }); - option("extraKeys", null); - - option("lineWrapping", false, wrappingChanged, true); - option("gutters", [], function(cm) { - setGuttersForLineNumbers(cm.options); - guttersChanged(cm); - }, true); - option("fixedGutter", true, function(cm, val) { - cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0"; - cm.refresh(); - }, true); - option("coverGutterNextToScrollbar", false, updateScrollbars, true); - option("lineNumbers", false, function(cm) { - setGuttersForLineNumbers(cm.options); - guttersChanged(cm); - }, true); - option("firstLineNumber", 1, guttersChanged, true); - option("lineNumberFormatter", function(integer) {return integer;}, guttersChanged, true); - option("showCursorWhenSelecting", false, updateSelection, true); - - option("resetSelectionOnContextMenu", true); - - option("readOnly", false, function(cm, val) { - if (val == "nocursor") { - onBlur(cm); - cm.display.input.blur(); - cm.display.disabled = true; - } else { - cm.display.disabled = false; - if (!val) resetInput(cm); - } - }); - option("disableInput", false, function(cm, val) {if (!val) resetInput(cm);}, true); - option("dragDrop", true); - - option("cursorBlinkRate", 530); - option("cursorScrollMargin", 0); - option("cursorHeight", 1, updateSelection, true); - option("singleCursorHeightPerLine", true, updateSelection, true); - option("workTime", 100); - option("workDelay", 100); - option("flattenSpans", true, resetModeState, true); - option("addModeClass", false, resetModeState, true); - option("pollInterval", 100); - option("undoDepth", 200, function(cm, val){cm.doc.history.undoDepth = val;}); - option("historyEventDelay", 1250); - option("viewportMargin", 10, function(cm){cm.refresh();}, true); - option("maxHighlightLength", 10000, resetModeState, true); - option("moveInputWithCursor", true, function(cm, val) { - if (!val) cm.display.inputDiv.style.top = cm.display.inputDiv.style.left = 0; - }); - - option("tabindex", null, function(cm, val) { - cm.display.input.tabIndex = val || ""; - }); - option("autofocus", null); - - // MODE DEFINITION AND QUERYING - - // Known modes, by name and by MIME - var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {}; - - // Extra arguments are stored as the mode's dependencies, which is - // used by (legacy) mechanisms like loadmode.js to automatically - // load a mode. (Preferred mechanism is the require/define calls.) - CodeMirror.defineMode = function(name, mode) { - if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name; - if (arguments.length > 2) - mode.dependencies = Array.prototype.slice.call(arguments, 2); - modes[name] = mode; - }; - - CodeMirror.defineMIME = function(mime, spec) { - mimeModes[mime] = spec; - }; - - // Given a MIME type, a {name, ...options} config object, or a name - // string, return a mode config object. - CodeMirror.resolveMode = function(spec) { - if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { - spec = mimeModes[spec]; - } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { - var found = mimeModes[spec.name]; - if (typeof found == "string") found = {name: found}; - spec = createObj(found, spec); - spec.name = found.name; - } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { - return CodeMirror.resolveMode("application/xml"); - } - if (typeof spec == "string") return {name: spec}; - else return spec || {name: "null"}; - }; - - // Given a mode spec (anything that resolveMode accepts), find and - // initialize an actual mode object. - CodeMirror.getMode = function(options, spec) { - var spec = CodeMirror.resolveMode(spec); - var mfactory = modes[spec.name]; - if (!mfactory) return CodeMirror.getMode(options, "text/plain"); - var modeObj = mfactory(options, spec); - if (modeExtensions.hasOwnProperty(spec.name)) { - var exts = modeExtensions[spec.name]; - for (var prop in exts) { - if (!exts.hasOwnProperty(prop)) continue; - if (modeObj.hasOwnProperty(prop)) modeObj["_" + prop] = modeObj[prop]; - modeObj[prop] = exts[prop]; - } - } - modeObj.name = spec.name; - if (spec.helperType) modeObj.helperType = spec.helperType; - if (spec.modeProps) for (var prop in spec.modeProps) - modeObj[prop] = spec.modeProps[prop]; - - return modeObj; - }; - - // Minimal default mode. - CodeMirror.defineMode("null", function() { - return {token: function(stream) {stream.skipToEnd();}}; - }); - CodeMirror.defineMIME("text/plain", "null"); - - // This can be used to attach properties to mode objects from - // outside the actual mode definition. - var modeExtensions = CodeMirror.modeExtensions = {}; - CodeMirror.extendMode = function(mode, properties) { - var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}); - copyObj(properties, exts); - }; - - // EXTENSIONS - - CodeMirror.defineExtension = function(name, func) { - CodeMirror.prototype[name] = func; - }; - CodeMirror.defineDocExtension = function(name, func) { - Doc.prototype[name] = func; - }; - CodeMirror.defineOption = option; - - var initHooks = []; - CodeMirror.defineInitHook = function(f) {initHooks.push(f);}; - - var helpers = CodeMirror.helpers = {}; - CodeMirror.registerHelper = function(type, name, value) { - if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []}; - helpers[type][name] = value; - }; - CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { - CodeMirror.registerHelper(type, name, value); - helpers[type]._global.push({pred: predicate, val: value}); - }; - - // MODE STATE HANDLING - - // Utility functions for working with state. Exported because nested - // modes need to do this for their inner modes. - - var copyState = CodeMirror.copyState = function(mode, state) { - if (state === true) return state; - if (mode.copyState) return mode.copyState(state); - var nstate = {}; - for (var n in state) { - var val = state[n]; - if (val instanceof Array) val = val.concat([]); - nstate[n] = val; - } - return nstate; - }; - - var startState = CodeMirror.startState = function(mode, a1, a2) { - return mode.startState ? mode.startState(a1, a2) : true; - }; - - // Given a mode and a state (for that mode), find the inner mode and - // state at the position that the state refers to. - CodeMirror.innerMode = function(mode, state) { - while (mode.innerMode) { - var info = mode.innerMode(state); - if (!info || info.mode == mode) break; - state = info.state; - mode = info.mode; - } - return info || {mode: mode, state: state}; - }; - - // STANDARD COMMANDS - - // Commands are parameter-less actions that can be performed on an - // editor, mostly used for keybindings. - var commands = CodeMirror.commands = { - selectAll: function(cm) {cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);}, - singleSelection: function(cm) { - cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); - }, - killLine: function(cm) { - deleteNearSelection(cm, function(range) { - if (range.empty()) { - var len = getLine(cm.doc, range.head.line).text.length; - if (range.head.ch == len && range.head.line < cm.lastLine()) - return {from: range.head, to: Pos(range.head.line + 1, 0)}; - else - return {from: range.head, to: Pos(range.head.line, len)}; - } else { - return {from: range.from(), to: range.to()}; - } - }); - }, - deleteLine: function(cm) { - deleteNearSelection(cm, function(range) { - return {from: Pos(range.from().line, 0), - to: clipPos(cm.doc, Pos(range.to().line + 1, 0))}; - }); - }, - delLineLeft: function(cm) { - deleteNearSelection(cm, function(range) { - return {from: Pos(range.from().line, 0), to: range.from()}; - }); - }, - delWrappedLineLeft: function(cm) { - deleteNearSelection(cm, function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - var leftPos = cm.coordsChar({left: 0, top: top}, "div"); - return {from: leftPos, to: range.from()}; - }); - }, - delWrappedLineRight: function(cm) { - deleteNearSelection(cm, function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); - return {from: range.from(), to: rightPos }; - }); - }, - undo: function(cm) {cm.undo();}, - redo: function(cm) {cm.redo();}, - undoSelection: function(cm) {cm.undoSelection();}, - redoSelection: function(cm) {cm.redoSelection();}, - goDocStart: function(cm) {cm.extendSelection(Pos(cm.firstLine(), 0));}, - goDocEnd: function(cm) {cm.extendSelection(Pos(cm.lastLine()));}, - goLineStart: function(cm) { - cm.extendSelectionsBy(function(range) { return lineStart(cm, range.head.line); }, - {origin: "+move", bias: 1}); - }, - goLineStartSmart: function(cm) { - cm.extendSelectionsBy(function(range) { - return lineStartSmart(cm, range.head); - }, {origin: "+move", bias: 1}); - }, - goLineEnd: function(cm) { - cm.extendSelectionsBy(function(range) { return lineEnd(cm, range.head.line); }, - {origin: "+move", bias: -1}); - }, - goLineRight: function(cm) { - cm.extendSelectionsBy(function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); - }, sel_move); - }, - goLineLeft: function(cm) { - cm.extendSelectionsBy(function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - return cm.coordsChar({left: 0, top: top}, "div"); - }, sel_move); - }, - goLineLeftSmart: function(cm) { - cm.extendSelectionsBy(function(range) { - var top = cm.charCoords(range.head, "div").top + 5; - var pos = cm.coordsChar({left: 0, top: top}, "div"); - if (pos.ch < cm.getLine(pos.line).search(/\S/)) return lineStartSmart(cm, range.head); - return pos; - }, sel_move); - }, - goLineUp: function(cm) {cm.moveV(-1, "line");}, - goLineDown: function(cm) {cm.moveV(1, "line");}, - goPageUp: function(cm) {cm.moveV(-1, "page");}, - goPageDown: function(cm) {cm.moveV(1, "page");}, - goCharLeft: function(cm) {cm.moveH(-1, "char");}, - goCharRight: function(cm) {cm.moveH(1, "char");}, - goColumnLeft: function(cm) {cm.moveH(-1, "column");}, - goColumnRight: function(cm) {cm.moveH(1, "column");}, - goWordLeft: function(cm) {cm.moveH(-1, "word");}, - goGroupRight: function(cm) {cm.moveH(1, "group");}, - goGroupLeft: function(cm) {cm.moveH(-1, "group");}, - goWordRight: function(cm) {cm.moveH(1, "word");}, - delCharBefore: function(cm) {cm.deleteH(-1, "char");}, - delCharAfter: function(cm) {cm.deleteH(1, "char");}, - delWordBefore: function(cm) {cm.deleteH(-1, "word");}, - delWordAfter: function(cm) {cm.deleteH(1, "word");}, - delGroupBefore: function(cm) {cm.deleteH(-1, "group");}, - delGroupAfter: function(cm) {cm.deleteH(1, "group");}, - indentAuto: function(cm) {cm.indentSelection("smart");}, - indentMore: function(cm) {cm.indentSelection("add");}, - indentLess: function(cm) {cm.indentSelection("subtract");}, - insertTab: function(cm) {cm.replaceSelection("\t");}, - insertSoftTab: function(cm) { - var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize; - for (var i = 0; i < ranges.length; i++) { - var pos = ranges[i].from(); - var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize); - spaces.push(new Array(tabSize - col % tabSize + 1).join(" ")); - } - cm.replaceSelections(spaces); - }, - defaultTab: function(cm) { - if (cm.somethingSelected()) cm.indentSelection("add"); - else cm.execCommand("insertTab"); - }, - transposeChars: function(cm) { - runInOp(cm, function() { - var ranges = cm.listSelections(), newSel = []; - for (var i = 0; i < ranges.length; i++) { - var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text; - if (line) { - if (cur.ch == line.length) cur = new Pos(cur.line, cur.ch - 1); - if (cur.ch > 0) { - cur = new Pos(cur.line, cur.ch + 1); - cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), - Pos(cur.line, cur.ch - 2), cur, "+transpose"); - } else if (cur.line > cm.doc.first) { - var prev = getLine(cm.doc, cur.line - 1).text; - if (prev) - cm.replaceRange(line.charAt(0) + "\n" + prev.charAt(prev.length - 1), - Pos(cur.line - 1, prev.length - 1), Pos(cur.line, 1), "+transpose"); - } - } - newSel.push(new Range(cur, cur)); - } - cm.setSelections(newSel); - }); - }, - newlineAndIndent: function(cm) { - runInOp(cm, function() { - var len = cm.listSelections().length; - for (var i = 0; i < len; i++) { - var range = cm.listSelections()[i]; - cm.replaceRange("\n", range.anchor, range.head, "+input"); - cm.indentLine(range.from().line + 1, null, true); - ensureCursorVisible(cm); - } - }); - }, - toggleOverwrite: function(cm) {cm.toggleOverwrite();} - }; - - - // STANDARD KEYMAPS - - var keyMap = CodeMirror.keyMap = {}; - - keyMap.basic = { - "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", - "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", - "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", - "Tab": "defaultTab", "Shift-Tab": "indentAuto", - "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", - "Esc": "singleSelection" - }; - // Note that the save and find-related commands aren't defined by - // default. User code or addons can define them. Unknown commands - // are simply ignored. - keyMap.pcDefault = { - "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", - "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", - "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", - "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", - "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", - "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", - "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", - fallthrough: "basic" - }; - // Very basic readline/emacs-style bindings, which are standard on Mac. - keyMap.emacsy = { - "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", - "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", - "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", - "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars" - }; - keyMap.macDefault = { - "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", - "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", - "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", - "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", - "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", - "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", - "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", - fallthrough: ["basic", "emacsy"] - }; - keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; - - // KEYMAP DISPATCH - - function normalizeKeyName(name) { - var parts = name.split(/-(?!$)/), name = parts[parts.length - 1]; - var alt, ctrl, shift, cmd; - for (var i = 0; i < parts.length - 1; i++) { - var mod = parts[i]; - if (/^(cmd|meta|m)$/i.test(mod)) cmd = true; - else if (/^a(lt)?$/i.test(mod)) alt = true; - else if (/^(c|ctrl|control)$/i.test(mod)) ctrl = true; - else if (/^s(hift)$/i.test(mod)) shift = true; - else throw new Error("Unrecognized modifier name: " + mod); - } - if (alt) name = "Alt-" + name; - if (ctrl) name = "Ctrl-" + name; - if (cmd) name = "Cmd-" + name; - if (shift) name = "Shift-" + name; - return name; - } - - // This is a kludge to keep keymaps mostly working as raw objects - // (backwards compatibility) while at the same time support features - // like normalization and multi-stroke key bindings. It compiles a - // new normalized keymap, and then updates the old object to reflect - // this. - CodeMirror.normalizeKeyMap = function(keymap) { - var copy = {}; - for (var keyname in keymap) if (keymap.hasOwnProperty(keyname)) { - var value = keymap[keyname]; - if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) continue; - if (value == "...") { delete keymap[keyname]; continue; } - - var keys = map(keyname.split(" "), normalizeKeyName); - for (var i = 0; i < keys.length; i++) { - var val, name; - if (i == keys.length - 1) { - name = keyname; - val = value; - } else { - name = keys.slice(0, i + 1).join(" "); - val = "..."; - } - var prev = copy[name]; - if (!prev) copy[name] = val; - else if (prev != val) throw new Error("Inconsistent bindings for " + name); - } - delete keymap[keyname]; - } - for (var prop in copy) keymap[prop] = copy[prop]; - return keymap; - }; - - var lookupKey = CodeMirror.lookupKey = function(key, map, handle) { - map = getKeyMap(map); - var found = map.call ? map.call(key) : map[key]; - if (found === false) return "nothing"; - if (found === "...") return "multi"; - if (found != null && handle(found)) return "handled"; - - if (map.fallthrough) { - if (Object.prototype.toString.call(map.fallthrough) != "[object Array]") - return lookupKey(key, map.fallthrough, handle); - for (var i = 0; i < map.fallthrough.length; i++) { - var result = lookupKey(key, map.fallthrough[i], handle); - if (result) return result; - } - } - }; - - // Modifier key presses don't count as 'real' key presses for the - // purpose of keymap fallthrough. - var isModifierKey = CodeMirror.isModifierKey = function(value) { - var name = typeof value == "string" ? value : keyNames[value.keyCode]; - return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod"; - }; - - // Look up the name of a key as indicated by an event object. - var keyName = CodeMirror.keyName = function(event, noShift) { - if (presto && event.keyCode == 34 && event["char"]) return false; - var base = keyNames[event.keyCode], name = base; - if (name == null || event.altGraphKey) return false; - if (event.altKey && base != "Alt") name = "Alt-" + name; - if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") name = "Ctrl-" + name; - if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Cmd") name = "Cmd-" + name; - if (!noShift && event.shiftKey && base != "Shift") name = "Shift-" + name; - return name; - }; - - function getKeyMap(val) { - return typeof val == "string" ? keyMap[val] : val; - } - - // FROMTEXTAREA - - CodeMirror.fromTextArea = function(textarea, options) { - if (!options) options = {}; - options.value = textarea.value; - if (!options.tabindex && textarea.tabindex) - options.tabindex = textarea.tabindex; - if (!options.placeholder && textarea.placeholder) - options.placeholder = textarea.placeholder; - // Set autofocus to true if this textarea is focused, or if it has - // autofocus and no other element is focused. - if (options.autofocus == null) { - var hasFocus = activeElt(); - options.autofocus = hasFocus == textarea || - textarea.getAttribute("autofocus") != null && hasFocus == document.body; - } - - function save() {textarea.value = cm.getValue();} - if (textarea.form) { - on(textarea.form, "submit", save); - // Deplorable hack to make the submit method do the right thing. - if (!options.leaveSubmitMethodAlone) { - var form = textarea.form, realSubmit = form.submit; - try { - var wrappedSubmit = form.submit = function() { - save(); - form.submit = realSubmit; - form.submit(); - form.submit = wrappedSubmit; - }; - } catch(e) {} - } - } - - textarea.style.display = "none"; - var cm = CodeMirror(function(node) { - textarea.parentNode.insertBefore(node, textarea.nextSibling); - }, options); - cm.save = save; - cm.getTextArea = function() { return textarea; }; - cm.toTextArea = function() { - cm.toTextArea = isNaN; // Prevent this from being ran twice - save(); - textarea.parentNode.removeChild(cm.getWrapperElement()); - textarea.style.display = ""; - if (textarea.form) { - off(textarea.form, "submit", save); - if (typeof textarea.form.submit == "function") - textarea.form.submit = realSubmit; - } - }; - return cm; - }; - - // STRING STREAM - - // Fed to the mode parsers, provides helper functions to make - // parsers more succinct. - - var StringStream = CodeMirror.StringStream = function(string, tabSize) { - this.pos = this.start = 0; - this.string = string; - this.tabSize = tabSize || 8; - this.lastColumnPos = this.lastColumnValue = 0; - this.lineStart = 0; - }; - - StringStream.prototype = { - eol: function() {return this.pos >= this.string.length;}, - sol: function() {return this.pos == this.lineStart;}, - peek: function() {return this.string.charAt(this.pos) || undefined;}, - next: function() { - if (this.pos < this.string.length) - return this.string.charAt(this.pos++); - }, - eat: function(match) { - var ch = this.string.charAt(this.pos); - if (typeof match == "string") var ok = ch == match; - else var ok = ch && (match.test ? match.test(ch) : match(ch)); - if (ok) {++this.pos; return ch;} - }, - eatWhile: function(match) { - var start = this.pos; - while (this.eat(match)){} - return this.pos > start; - }, - eatSpace: function() { - var start = this.pos; - while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; - return this.pos > start; - }, - skipToEnd: function() {this.pos = this.string.length;}, - skipTo: function(ch) { - var found = this.string.indexOf(ch, this.pos); - if (found > -1) {this.pos = found; return true;} - }, - backUp: function(n) {this.pos -= n;}, - column: function() { - if (this.lastColumnPos < this.start) { - this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue); - this.lastColumnPos = this.start; - } - return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); - }, - indentation: function() { - return countColumn(this.string, null, this.tabSize) - - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); - }, - match: function(pattern, consume, caseInsensitive) { - if (typeof pattern == "string") { - var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; - var substr = this.string.substr(this.pos, pattern.length); - if (cased(substr) == cased(pattern)) { - if (consume !== false) this.pos += pattern.length; - return true; - } - } else { - var match = this.string.slice(this.pos).match(pattern); - if (match && match.index > 0) return null; - if (match && consume !== false) this.pos += match[0].length; - return match; - } - }, - current: function(){return this.string.slice(this.start, this.pos);}, - hideFirstChars: function(n, inner) { - this.lineStart += n; - try { return inner(); } - finally { this.lineStart -= n; } - } - }; - - // TEXTMARKERS - - // Created with markText and setBookmark methods. A TextMarker is a - // handle that can be used to clear or find a marked position in the - // document. Line objects hold arrays (markedSpans) containing - // {from, to, marker} object pointing to such marker objects, and - // indicating that such a marker is present on that line. Multiple - // lines may point to the same marker when it spans across lines. - // The spans will have null for their from/to properties when the - // marker continues beyond the start/end of the line. Markers have - // links back to the lines they currently touch. - - var TextMarker = CodeMirror.TextMarker = function(doc, type) { - this.lines = []; - this.type = type; - this.doc = doc; - }; - eventMixin(TextMarker); - - // Clear the marker. - TextMarker.prototype.clear = function() { - if (this.explicitlyCleared) return; - var cm = this.doc.cm, withOp = cm && !cm.curOp; - if (withOp) startOperation(cm); - if (hasHandler(this, "clear")) { - var found = this.find(); - if (found) signalLater(this, "clear", found.from, found.to); - } - var min = null, max = null; - for (var i = 0; i < this.lines.length; ++i) { - var line = this.lines[i]; - var span = getMarkedSpanFor(line.markedSpans, this); - if (cm && !this.collapsed) regLineChange(cm, lineNo(line), "text"); - else if (cm) { - if (span.to != null) max = lineNo(line); - if (span.from != null) min = lineNo(line); - } - line.markedSpans = removeMarkedSpan(line.markedSpans, span); - if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) - updateLineHeight(line, textHeight(cm.display)); - } - if (cm && this.collapsed && !cm.options.lineWrapping) for (var i = 0; i < this.lines.length; ++i) { - var visual = visualLine(this.lines[i]), len = lineLength(visual); - if (len > cm.display.maxLineLength) { - cm.display.maxLine = visual; - cm.display.maxLineLength = len; - cm.display.maxLineChanged = true; - } - } - - if (min != null && cm && this.collapsed) regChange(cm, min, max + 1); - this.lines.length = 0; - this.explicitlyCleared = true; - if (this.atomic && this.doc.cantEdit) { - this.doc.cantEdit = false; - if (cm) reCheckSelection(cm.doc); - } - if (cm) signalLater(cm, "markerCleared", cm, this); - if (withOp) endOperation(cm); - if (this.parent) this.parent.clear(); - }; - - // Find the position of the marker in the document. Returns a {from, - // to} object by default. Side can be passed to get a specific side - // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the - // Pos objects returned contain a line object, rather than a line - // number (used to prevent looking up the same line twice). - TextMarker.prototype.find = function(side, lineObj) { - if (side == null && this.type == "bookmark") side = 1; - var from, to; - for (var i = 0; i < this.lines.length; ++i) { - var line = this.lines[i]; - var span = getMarkedSpanFor(line.markedSpans, this); - if (span.from != null) { - from = Pos(lineObj ? line : lineNo(line), span.from); - if (side == -1) return from; - } - if (span.to != null) { - to = Pos(lineObj ? line : lineNo(line), span.to); - if (side == 1) return to; - } - } - return from && {from: from, to: to}; - }; - - // Signals that the marker's widget changed, and surrounding layout - // should be recomputed. - TextMarker.prototype.changed = function() { - var pos = this.find(-1, true), widget = this, cm = this.doc.cm; - if (!pos || !cm) return; - runInOp(cm, function() { - var line = pos.line, lineN = lineNo(pos.line); - var view = findViewForLine(cm, lineN); - if (view) { - clearLineMeasurementCacheFor(view); - cm.curOp.selectionChanged = cm.curOp.forceUpdate = true; - } - cm.curOp.updateMaxLine = true; - if (!lineIsHidden(widget.doc, line) && widget.height != null) { - var oldHeight = widget.height; - widget.height = null; - var dHeight = widgetHeight(widget) - oldHeight; - if (dHeight) - updateLineHeight(line, line.height + dHeight); - } - }); - }; - - TextMarker.prototype.attachLine = function(line) { - if (!this.lines.length && this.doc.cm) { - var op = this.doc.cm.curOp; - if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) - (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); - } - this.lines.push(line); - }; - TextMarker.prototype.detachLine = function(line) { - this.lines.splice(indexOf(this.lines, line), 1); - if (!this.lines.length && this.doc.cm) { - var op = this.doc.cm.curOp; - (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); - } - }; - - // Collapsed markers have unique ids, in order to be able to order - // them, which is needed for uniquely determining an outer marker - // when they overlap (they may nest, but not partially overlap). - var nextMarkerId = 0; - - // Create a marker, wire it up to the right lines, and - function markText(doc, from, to, options, type) { - // Shared markers (across linked documents) are handled separately - // (markTextShared will call out to this again, once per - // document). - if (options && options.shared) return markTextShared(doc, from, to, options, type); - // Ensure we are in an operation. - if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type); - - var marker = new TextMarker(doc, type), diff = cmp(from, to); - if (options) copyObj(options, marker, false); - // Don't connect empty markers unless clearWhenEmpty is false - if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) - return marker; - if (marker.replacedWith) { - // Showing up as a widget implies collapsed (widget replaces text) - marker.collapsed = true; - marker.widgetNode = elt("span", [marker.replacedWith], "CodeMirror-widget"); - if (!options.handleMouseEvents) marker.widgetNode.ignoreEvents = true; - if (options.insertLeft) marker.widgetNode.insertLeft = true; - } - if (marker.collapsed) { - if (conflictingCollapsedRange(doc, from.line, from, to, marker) || - from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) - throw new Error("Inserting collapsed marker partially overlapping an existing one"); - sawCollapsedSpans = true; - } - - if (marker.addToHistory) - addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN); - - var curLine = from.line, cm = doc.cm, updateMaxLine; - doc.iter(curLine, to.line + 1, function(line) { - if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) - updateMaxLine = true; - if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0); - addMarkedSpan(line, new MarkedSpan(marker, - curLine == from.line ? from.ch : null, - curLine == to.line ? to.ch : null)); - ++curLine; - }); - // lineIsHidden depends on the presence of the spans, so needs a second pass - if (marker.collapsed) doc.iter(from.line, to.line + 1, function(line) { - if (lineIsHidden(doc, line)) updateLineHeight(line, 0); - }); - - if (marker.clearOnEnter) on(marker, "beforeCursorEnter", function() { marker.clear(); }); - - if (marker.readOnly) { - sawReadOnlySpans = true; - if (doc.history.done.length || doc.history.undone.length) - doc.clearHistory(); - } - if (marker.collapsed) { - marker.id = ++nextMarkerId; - marker.atomic = true; - } - if (cm) { - // Sync editor state - if (updateMaxLine) cm.curOp.updateMaxLine = true; - if (marker.collapsed) - regChange(cm, from.line, to.line + 1); - else if (marker.className || marker.title || marker.startStyle || marker.endStyle) - for (var i = from.line; i <= to.line; i++) regLineChange(cm, i, "text"); - if (marker.atomic) reCheckSelection(cm.doc); - signalLater(cm, "markerAdded", cm, marker); - } - return marker; - } - - // SHARED TEXTMARKERS - - // A shared marker spans multiple linked documents. It is - // implemented as a meta-marker-object controlling multiple normal - // markers. - var SharedTextMarker = CodeMirror.SharedTextMarker = function(markers, primary) { - this.markers = markers; - this.primary = primary; - for (var i = 0; i < markers.length; ++i) - markers[i].parent = this; - }; - eventMixin(SharedTextMarker); - - SharedTextMarker.prototype.clear = function() { - if (this.explicitlyCleared) return; - this.explicitlyCleared = true; - for (var i = 0; i < this.markers.length; ++i) - this.markers[i].clear(); - signalLater(this, "clear"); - }; - SharedTextMarker.prototype.find = function(side, lineObj) { - return this.primary.find(side, lineObj); - }; - - function markTextShared(doc, from, to, options, type) { - options = copyObj(options); - options.shared = false; - var markers = [markText(doc, from, to, options, type)], primary = markers[0]; - var widget = options.widgetNode; - linkedDocs(doc, function(doc) { - if (widget) options.widgetNode = widget.cloneNode(true); - markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)); - for (var i = 0; i < doc.linked.length; ++i) - if (doc.linked[i].isParent) return; - primary = lst(markers); - }); - return new SharedTextMarker(markers, primary); - } - - function findSharedMarkers(doc) { - return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), - function(m) { return m.parent; }); - } - - function copySharedMarkers(doc, markers) { - for (var i = 0; i < markers.length; i++) { - var marker = markers[i], pos = marker.find(); - var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to); - if (cmp(mFrom, mTo)) { - var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type); - marker.markers.push(subMark); - subMark.parent = marker; - } - } - } - - function detachSharedMarkers(markers) { - for (var i = 0; i < markers.length; i++) { - var marker = markers[i], linked = [marker.primary.doc];; - linkedDocs(marker.primary.doc, function(d) { linked.push(d); }); - for (var j = 0; j < marker.markers.length; j++) { - var subMarker = marker.markers[j]; - if (indexOf(linked, subMarker.doc) == -1) { - subMarker.parent = null; - marker.markers.splice(j--, 1); - } - } - } - } - - // TEXTMARKER SPANS - - function MarkedSpan(marker, from, to) { - this.marker = marker; - this.from = from; this.to = to; - } - - // Search an array of spans for a span matching the given marker. - function getMarkedSpanFor(spans, marker) { - if (spans) for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if (span.marker == marker) return span; - } - } - // Remove a span from an array, returning undefined if no spans are - // left (we don't store arrays for lines without spans). - function removeMarkedSpan(spans, span) { - for (var r, i = 0; i < spans.length; ++i) - if (spans[i] != span) (r || (r = [])).push(spans[i]); - return r; - } - // Add a span to a line. - function addMarkedSpan(line, span) { - line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]; - span.marker.attachLine(line); - } - - // Used for the algorithm that adjusts markers for a change in the - // document. These functions cut an array of spans at a given - // character position, returning an array of remaining chunks (or - // undefined if nothing remains). - function markedSpansBefore(old, startCh, isInsert) { - if (old) for (var i = 0, nw; i < old.length; ++i) { - var span = old[i], marker = span.marker; - var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); - if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { - var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh); - (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)); - } - } - return nw; - } - function markedSpansAfter(old, endCh, isInsert) { - if (old) for (var i = 0, nw; i < old.length; ++i) { - var span = old[i], marker = span.marker; - var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); - if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { - var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh); - (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, - span.to == null ? null : span.to - endCh)); - } - } - return nw; - } - - // Given a change object, compute the new set of marker spans that - // cover the line in which the change took place. Removes spans - // entirely within the change, reconnects spans belonging to the - // same marker that appear on both sides of the change, and cuts off - // spans partially within the change. Returns an array of span - // arrays with one element for each line in (after) the change. - function stretchSpansOverChange(doc, change) { - var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans; - var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; - if (!oldFirst && !oldLast) return null; - - var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0; - // Get the spans that 'stick out' on both sides - var first = markedSpansBefore(oldFirst, startCh, isInsert); - var last = markedSpansAfter(oldLast, endCh, isInsert); - - // Next, merge those two ends - var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0); - if (first) { - // Fix up .to properties of first - for (var i = 0; i < first.length; ++i) { - var span = first[i]; - if (span.to == null) { - var found = getMarkedSpanFor(last, span.marker); - if (!found) span.to = startCh; - else if (sameLine) span.to = found.to == null ? null : found.to + offset; - } - } - } - if (last) { - // Fix up .from in last (or move them into first in case of sameLine) - for (var i = 0; i < last.length; ++i) { - var span = last[i]; - if (span.to != null) span.to += offset; - if (span.from == null) { - var found = getMarkedSpanFor(first, span.marker); - if (!found) { - span.from = offset; - if (sameLine) (first || (first = [])).push(span); - } - } else { - span.from += offset; - if (sameLine) (first || (first = [])).push(span); - } - } - } - // Make sure we didn't create any zero-length spans - if (first) first = clearEmptySpans(first); - if (last && last != first) last = clearEmptySpans(last); - - var newMarkers = [first]; - if (!sameLine) { - // Fill gap with whole-line-spans - var gap = change.text.length - 2, gapMarkers; - if (gap > 0 && first) - for (var i = 0; i < first.length; ++i) - if (first[i].to == null) - (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null)); - for (var i = 0; i < gap; ++i) - newMarkers.push(gapMarkers); - newMarkers.push(last); - } - return newMarkers; - } - - // Remove spans that are empty and don't have a clearWhenEmpty - // option of false. - function clearEmptySpans(spans) { - for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) - spans.splice(i--, 1); - } - if (!spans.length) return null; - return spans; - } - - // Used for un/re-doing changes from the history. Combines the - // result of computing the existing spans with the set of spans that - // existed in the history (so that deleting around a span and then - // undoing brings back the span). - function mergeOldSpans(doc, change) { - var old = getOldSpans(doc, change); - var stretched = stretchSpansOverChange(doc, change); - if (!old) return stretched; - if (!stretched) return old; - - for (var i = 0; i < old.length; ++i) { - var oldCur = old[i], stretchCur = stretched[i]; - if (oldCur && stretchCur) { - spans: for (var j = 0; j < stretchCur.length; ++j) { - var span = stretchCur[j]; - for (var k = 0; k < oldCur.length; ++k) - if (oldCur[k].marker == span.marker) continue spans; - oldCur.push(span); - } - } else if (stretchCur) { - old[i] = stretchCur; - } - } - return old; - } - - // Used to 'clip' out readOnly ranges when making a change. - function removeReadOnlyRanges(doc, from, to) { - var markers = null; - doc.iter(from.line, to.line + 1, function(line) { - if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) { - var mark = line.markedSpans[i].marker; - if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) - (markers || (markers = [])).push(mark); - } - }); - if (!markers) return null; - var parts = [{from: from, to: to}]; - for (var i = 0; i < markers.length; ++i) { - var mk = markers[i], m = mk.find(0); - for (var j = 0; j < parts.length; ++j) { - var p = parts[j]; - if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue; - var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to); - if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) - newParts.push({from: p.from, to: m.from}); - if (dto > 0 || !mk.inclusiveRight && !dto) - newParts.push({from: m.to, to: p.to}); - parts.splice.apply(parts, newParts); - j += newParts.length - 1; - } - } - return parts; - } - - // Connect or disconnect spans from a line. - function detachMarkedSpans(line) { - var spans = line.markedSpans; - if (!spans) return; - for (var i = 0; i < spans.length; ++i) - spans[i].marker.detachLine(line); - line.markedSpans = null; - } - function attachMarkedSpans(line, spans) { - if (!spans) return; - for (var i = 0; i < spans.length; ++i) - spans[i].marker.attachLine(line); - line.markedSpans = spans; - } - - // Helpers used when computing which overlapping collapsed span - // counts as the larger one. - function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; } - function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; } - - // Returns a number indicating which of two overlapping collapsed - // spans is larger (and thus includes the other). Falls back to - // comparing ids when the spans cover exactly the same range. - function compareCollapsedMarkers(a, b) { - var lenDiff = a.lines.length - b.lines.length; - if (lenDiff != 0) return lenDiff; - var aPos = a.find(), bPos = b.find(); - var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b); - if (fromCmp) return -fromCmp; - var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b); - if (toCmp) return toCmp; - return b.id - a.id; - } - - // Find out whether a line ends or starts in a collapsed span. If - // so, return the marker for that span. - function collapsedSpanAtSide(line, start) { - var sps = sawCollapsedSpans && line.markedSpans, found; - if (sps) for (var sp, i = 0; i < sps.length; ++i) { - sp = sps[i]; - if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && - (!found || compareCollapsedMarkers(found, sp.marker) < 0)) - found = sp.marker; - } - return found; - } - function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true); } - function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false); } - - // Test whether there exists a collapsed span that partially - // overlaps (covers the start or end, but not both) of a new span. - // Such overlap is not allowed. - function conflictingCollapsedRange(doc, lineNo, from, to, marker) { - var line = getLine(doc, lineNo); - var sps = sawCollapsedSpans && line.markedSpans; - if (sps) for (var i = 0; i < sps.length; ++i) { - var sp = sps[i]; - if (!sp.marker.collapsed) continue; - var found = sp.marker.find(0); - var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); - var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); - if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue; - if (fromCmp <= 0 && (cmp(found.to, from) > 0 || (sp.marker.inclusiveRight && marker.inclusiveLeft)) || - fromCmp >= 0 && (cmp(found.from, to) < 0 || (sp.marker.inclusiveLeft && marker.inclusiveRight))) - return true; - } - } - - // A visual line is a line as drawn on the screen. Folding, for - // example, can cause multiple logical lines to appear on the same - // visual line. This finds the start of the visual line that the - // given line is part of (usually that is the line itself). - function visualLine(line) { - var merged; - while (merged = collapsedSpanAtStart(line)) - line = merged.find(-1, true).line; - return line; - } - - // Returns an array of logical lines that continue the visual line - // started by the argument, or undefined if there are no such lines. - function visualLineContinued(line) { - var merged, lines; - while (merged = collapsedSpanAtEnd(line)) { - line = merged.find(1, true).line; - (lines || (lines = [])).push(line); - } - return lines; - } - - // Get the line number of the start of the visual line that the - // given line number is part of. - function visualLineNo(doc, lineN) { - var line = getLine(doc, lineN), vis = visualLine(line); - if (line == vis) return lineN; - return lineNo(vis); - } - // Get the line number of the start of the next visual line after - // the given line. - function visualLineEndNo(doc, lineN) { - if (lineN > doc.lastLine()) return lineN; - var line = getLine(doc, lineN), merged; - if (!lineIsHidden(doc, line)) return lineN; - while (merged = collapsedSpanAtEnd(line)) - line = merged.find(1, true).line; - return lineNo(line) + 1; - } - - // Compute whether a line is hidden. Lines count as hidden when they - // are part of a visual line that starts with another line, or when - // they are entirely covered by collapsed, non-widget span. - function lineIsHidden(doc, line) { - var sps = sawCollapsedSpans && line.markedSpans; - if (sps) for (var sp, i = 0; i < sps.length; ++i) { - sp = sps[i]; - if (!sp.marker.collapsed) continue; - if (sp.from == null) return true; - if (sp.marker.widgetNode) continue; - if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) - return true; - } - } - function lineIsHiddenInner(doc, line, span) { - if (span.to == null) { - var end = span.marker.find(1, true); - return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)); - } - if (span.marker.inclusiveRight && span.to == line.text.length) - return true; - for (var sp, i = 0; i < line.markedSpans.length; ++i) { - sp = line.markedSpans[i]; - if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && - (sp.to == null || sp.to != span.from) && - (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && - lineIsHiddenInner(doc, line, sp)) return true; - } - } - - // LINE WIDGETS - - // Line widgets are block elements displayed above or below a line. - - var LineWidget = CodeMirror.LineWidget = function(cm, node, options) { - if (options) for (var opt in options) if (options.hasOwnProperty(opt)) - this[opt] = options[opt]; - this.cm = cm; - this.node = node; - }; - eventMixin(LineWidget); - - function adjustScrollWhenAboveVisible(cm, line, diff) { - if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) - addToScrollPos(cm, null, diff); - } - - LineWidget.prototype.clear = function() { - var cm = this.cm, ws = this.line.widgets, line = this.line, no = lineNo(line); - if (no == null || !ws) return; - for (var i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1); - if (!ws.length) line.widgets = null; - var height = widgetHeight(this); - runInOp(cm, function() { - adjustScrollWhenAboveVisible(cm, line, -height); - regLineChange(cm, no, "widget"); - updateLineHeight(line, Math.max(0, line.height - height)); - }); - }; - LineWidget.prototype.changed = function() { - var oldH = this.height, cm = this.cm, line = this.line; - this.height = null; - var diff = widgetHeight(this) - oldH; - if (!diff) return; - runInOp(cm, function() { - cm.curOp.forceUpdate = true; - adjustScrollWhenAboveVisible(cm, line, diff); - updateLineHeight(line, line.height + diff); - }); - }; - - function widgetHeight(widget) { - if (widget.height != null) return widget.height; - if (!contains(document.body, widget.node)) { - var parentStyle = "position: relative;"; - if (widget.coverGutter) - parentStyle += "margin-left: -" + widget.cm.getGutterElement().offsetWidth + "px;"; - removeChildrenAndAdd(widget.cm.display.measure, elt("div", [widget.node], null, parentStyle)); - } - return widget.height = widget.node.offsetHeight; - } - - function addLineWidget(cm, handle, node, options) { - var widget = new LineWidget(cm, node, options); - if (widget.noHScroll) cm.display.alignWidgets = true; - changeLine(cm.doc, handle, "widget", function(line) { - var widgets = line.widgets || (line.widgets = []); - if (widget.insertAt == null) widgets.push(widget); - else widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); - widget.line = line; - if (!lineIsHidden(cm.doc, line)) { - var aboveVisible = heightAtLine(line) < cm.doc.scrollTop; - updateLineHeight(line, line.height + widgetHeight(widget)); - if (aboveVisible) addToScrollPos(cm, null, widget.height); - cm.curOp.forceUpdate = true; - } - return true; - }); - return widget; - } - - // LINE DATA STRUCTURE - - // Line objects. These hold state related to a line, including - // highlighting info (the styles array). - var Line = CodeMirror.Line = function(text, markedSpans, estimateHeight) { - this.text = text; - attachMarkedSpans(this, markedSpans); - this.height = estimateHeight ? estimateHeight(this) : 1; - }; - eventMixin(Line); - Line.prototype.lineNo = function() { return lineNo(this); }; - - // Change the content (text, markers) of a line. Automatically - // invalidates cached information and tries to re-estimate the - // line's height. - function updateLine(line, text, markedSpans, estimateHeight) { - line.text = text; - if (line.stateAfter) line.stateAfter = null; - if (line.styles) line.styles = null; - if (line.order != null) line.order = null; - detachMarkedSpans(line); - attachMarkedSpans(line, markedSpans); - var estHeight = estimateHeight ? estimateHeight(line) : 1; - if (estHeight != line.height) updateLineHeight(line, estHeight); - } - - // Detach a line from the document tree and its markers. - function cleanUpLine(line) { - line.parent = null; - detachMarkedSpans(line); - } - - function extractLineClasses(type, output) { - if (type) for (;;) { - var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/); - if (!lineClass) break; - type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length); - var prop = lineClass[1] ? "bgClass" : "textClass"; - if (output[prop] == null) - output[prop] = lineClass[2]; - else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop])) - output[prop] += " " + lineClass[2]; - } - return type; - } - - function callBlankLine(mode, state) { - if (mode.blankLine) return mode.blankLine(state); - if (!mode.innerMode) return; - var inner = CodeMirror.innerMode(mode, state); - if (inner.mode.blankLine) return inner.mode.blankLine(inner.state); - } - - function readToken(mode, stream, state, inner) { - for (var i = 0; i < 10; i++) { - if (inner) inner[0] = CodeMirror.innerMode(mode, state).mode; - var style = mode.token(stream, state); - if (stream.pos > stream.start) return style; - } - throw new Error("Mode " + mode.name + " failed to advance stream."); - } - - // Utility for getTokenAt and getLineTokens - function takeToken(cm, pos, precise, asArray) { - function getObj(copy) { - return {start: stream.start, end: stream.pos, - string: stream.current(), - type: style || null, - state: copy ? copyState(doc.mode, state) : state}; - } - - var doc = cm.doc, mode = doc.mode, style; - pos = clipPos(doc, pos); - var line = getLine(doc, pos.line), state = getStateBefore(cm, pos.line, precise); - var stream = new StringStream(line.text, cm.options.tabSize), tokens; - if (asArray) tokens = []; - while ((asArray || stream.pos < pos.ch) && !stream.eol()) { - stream.start = stream.pos; - style = readToken(mode, stream, state); - if (asArray) tokens.push(getObj(true)); - } - return asArray ? tokens : getObj(); - } - - // Run the given mode's parser over a line, calling f for each token. - function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) { - var flattenSpans = mode.flattenSpans; - if (flattenSpans == null) flattenSpans = cm.options.flattenSpans; - var curStart = 0, curStyle = null; - var stream = new StringStream(text, cm.options.tabSize), style; - var inner = cm.options.addModeClass && [null]; - if (text == "") extractLineClasses(callBlankLine(mode, state), lineClasses); - while (!stream.eol()) { - if (stream.pos > cm.options.maxHighlightLength) { - flattenSpans = false; - if (forceToEnd) processLine(cm, text, state, stream.pos); - stream.pos = text.length; - style = null; - } else { - style = extractLineClasses(readToken(mode, stream, state, inner), lineClasses); - } - if (inner) { - var mName = inner[0].name; - if (mName) style = "m-" + (style ? mName + " " + style : mName); - } - if (!flattenSpans || curStyle != style) { - if (curStart < stream.start) f(stream.start, curStyle); - curStart = stream.start; curStyle = style; - } - stream.start = stream.pos; - } - while (curStart < stream.pos) { - // Webkit seems to refuse to render text nodes longer than 57444 characters - var pos = Math.min(stream.pos, curStart + 50000); - f(pos, curStyle); - curStart = pos; - } - } - - // Compute a style array (an array starting with a mode generation - // -- for invalidation -- followed by pairs of end positions and - // style strings), which is used to highlight the tokens on the - // line. - function highlightLine(cm, line, state, forceToEnd) { - // A styles array always starts with a number identifying the - // mode/overlays that it is based on (for easy invalidation). - var st = [cm.state.modeGen], lineClasses = {}; - // Compute the base array of styles - runMode(cm, line.text, cm.doc.mode, state, function(end, style) { - st.push(end, style); - }, lineClasses, forceToEnd); - - // Run overlays, adjust style array. - for (var o = 0; o < cm.state.overlays.length; ++o) { - var overlay = cm.state.overlays[o], i = 1, at = 0; - runMode(cm, line.text, overlay.mode, true, function(end, style) { - var start = i; - // Ensure there's a token end at the current position, and that i points at it - while (at < end) { - var i_end = st[i]; - if (i_end > end) - st.splice(i, 1, end, st[i+1], i_end); - i += 2; - at = Math.min(end, i_end); - } - if (!style) return; - if (overlay.opaque) { - st.splice(start, i - start, end, "cm-overlay " + style); - i = start + 2; - } else { - for (; start < i; start += 2) { - var cur = st[start+1]; - st[start+1] = (cur ? cur + " " : "") + "cm-overlay " + style; - } - } - }, lineClasses); - } - - return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}; - } - - function getLineStyles(cm, line, updateFrontier) { - if (!line.styles || line.styles[0] != cm.state.modeGen) { - var result = highlightLine(cm, line, line.stateAfter = getStateBefore(cm, lineNo(line))); - line.styles = result.styles; - if (result.classes) line.styleClasses = result.classes; - else if (line.styleClasses) line.styleClasses = null; - if (updateFrontier === cm.doc.frontier) cm.doc.frontier++; - } - return line.styles; - } - - // Lightweight form of highlight -- proceed over this line and - // update state, but don't save a style array. Used for lines that - // aren't currently visible. - function processLine(cm, text, state, startAt) { - var mode = cm.doc.mode; - var stream = new StringStream(text, cm.options.tabSize); - stream.start = stream.pos = startAt || 0; - if (text == "") callBlankLine(mode, state); - while (!stream.eol() && stream.pos <= cm.options.maxHighlightLength) { - readToken(mode, stream, state); - stream.start = stream.pos; - } - } - - // Convert a style as returned by a mode (either null, or a string - // containing one or more styles) to a CSS style. This is cached, - // and also looks for line-wide styles. - var styleToClassCache = {}, styleToClassCacheWithMode = {}; - function interpretTokenStyle(style, options) { - if (!style || /^\s*$/.test(style)) return null; - var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache; - return cache[style] || - (cache[style] = style.replace(/\S+/g, "cm-$&")); - } - - // Render the DOM representation of the text of a line. Also builds - // up a 'line map', which points at the DOM nodes that represent - // specific stretches of text, and is used by the measuring code. - // The returned object contains the DOM node, this map, and - // information about line-wide styles that were set by the mode. - function buildLineContent(cm, lineView) { - // The padding-right forces the element to have a 'border', which - // is needed on Webkit to be able to get line-level bounding - // rectangles for it (in measureChar). - var content = elt("span", null, null, webkit ? "padding-right: .1px" : null); - var builder = {pre: elt("pre", [content]), content: content, col: 0, pos: 0, cm: cm}; - lineView.measure = {}; - - // Iterate over the logical lines that make up this visual line. - for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { - var line = i ? lineView.rest[i - 1] : lineView.line, order; - builder.pos = 0; - builder.addToken = buildToken; - // Optionally wire in some hacks into the token-rendering - // algorithm, to deal with browser quirks. - if ((ie || webkit) && cm.getOption("lineWrapping")) - builder.addToken = buildTokenSplitSpaces(builder.addToken); - if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line))) - builder.addToken = buildTokenBadBidi(builder.addToken, order); - builder.map = []; - var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line); - insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate)); - if (line.styleClasses) { - if (line.styleClasses.bgClass) - builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || ""); - if (line.styleClasses.textClass) - builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || ""); - } - - // Ensure at least a single node is present, for measuring. - if (builder.map.length == 0) - builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); - - // Store the map and a cache object for the current logical line - if (i == 0) { - lineView.measure.map = builder.map; - lineView.measure.cache = {}; - } else { - (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map); - (lineView.measure.caches || (lineView.measure.caches = [])).push({}); - } - } - - // See issue #2901 - if (webkit && /\bcm-tab\b/.test(builder.content.lastChild.className)) - builder.content.className = "cm-tab-wrap-hack"; - - signal(cm, "renderLine", cm, lineView.line, builder.pre); - if (builder.pre.className) - builder.textClass = joinClasses(builder.pre.className, builder.textClass || ""); - - return builder; - } - - function defaultSpecialCharPlaceholder(ch) { - var token = elt("span", "\u2022", "cm-invalidchar"); - token.title = "\\u" + ch.charCodeAt(0).toString(16); - return token; - } - - // Build up the DOM representation for a single token, and add it to - // the line map. Takes care to render special characters separately. - function buildToken(builder, text, style, startStyle, endStyle, title) { - if (!text) return; - var special = builder.cm.options.specialChars, mustWrap = false; - if (!special.test(text)) { - builder.col += text.length; - var content = document.createTextNode(text); - builder.map.push(builder.pos, builder.pos + text.length, content); - if (ie && ie_version < 9) mustWrap = true; - builder.pos += text.length; - } else { - var content = document.createDocumentFragment(), pos = 0; - while (true) { - special.lastIndex = pos; - var m = special.exec(text); - var skipped = m ? m.index - pos : text.length - pos; - if (skipped) { - var txt = document.createTextNode(text.slice(pos, pos + skipped)); - if (ie && ie_version < 9) content.appendChild(elt("span", [txt])); - else content.appendChild(txt); - builder.map.push(builder.pos, builder.pos + skipped, txt); - builder.col += skipped; - builder.pos += skipped; - } - if (!m) break; - pos += skipped + 1; - if (m[0] == "\t") { - var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize; - var txt = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")); - builder.col += tabWidth; - } else { - var txt = builder.cm.options.specialCharPlaceholder(m[0]); - if (ie && ie_version < 9) content.appendChild(elt("span", [txt])); - else content.appendChild(txt); - builder.col += 1; - } - builder.map.push(builder.pos, builder.pos + 1, txt); - builder.pos++; - } - } - if (style || startStyle || endStyle || mustWrap) { - var fullStyle = style || ""; - if (startStyle) fullStyle += startStyle; - if (endStyle) fullStyle += endStyle; - var token = elt("span", [content], fullStyle); - if (title) token.title = title; - return builder.content.appendChild(token); - } - builder.content.appendChild(content); - } - - function buildTokenSplitSpaces(inner) { - function split(old) { - var out = " "; - for (var i = 0; i < old.length - 2; ++i) out += i % 2 ? " " : "\u00a0"; - out += " "; - return out; - } - return function(builder, text, style, startStyle, endStyle, title) { - inner(builder, text.replace(/ {3,}/g, split), style, startStyle, endStyle, title); - }; - } - - // Work around nonsense dimensions being reported for stretches of - // right-to-left text. - function buildTokenBadBidi(inner, order) { - return function(builder, text, style, startStyle, endStyle, title) { - style = style ? style + " cm-force-border" : "cm-force-border"; - var start = builder.pos, end = start + text.length; - for (;;) { - // Find the part that overlaps with the start of this text - for (var i = 0; i < order.length; i++) { - var part = order[i]; - if (part.to > start && part.from <= start) break; - } - if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, title); - inner(builder, text.slice(0, part.to - start), style, startStyle, null, title); - startStyle = null; - text = text.slice(part.to - start); - start = part.to; - } - }; - } - - function buildCollapsedSpan(builder, size, marker, ignoreWidget) { - var widget = !ignoreWidget && marker.widgetNode; - if (widget) { - builder.map.push(builder.pos, builder.pos + size, widget); - builder.content.appendChild(widget); - } - builder.pos += size; - } - - // Outputs a number of spans to make up a line, taking highlighting - // and marked text into account. - function insertLineContent(line, builder, styles) { - var spans = line.markedSpans, allText = line.text, at = 0; - if (!spans) { - for (var i = 1; i < styles.length; i+=2) - builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder.cm.options)); - return; - } - - var len = allText.length, pos = 0, i = 1, text = "", style; - var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed; - for (;;) { - if (nextChange == pos) { // Update current marker set - spanStyle = spanEndStyle = spanStartStyle = title = ""; - collapsed = null; nextChange = Infinity; - var foundBookmarks = []; - for (var j = 0; j < spans.length; ++j) { - var sp = spans[j], m = sp.marker; - if (sp.from <= pos && (sp.to == null || sp.to > pos)) { - if (sp.to != null && nextChange > sp.to) { nextChange = sp.to; spanEndStyle = ""; } - if (m.className) spanStyle += " " + m.className; - if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle; - if (m.endStyle && sp.to == nextChange) spanEndStyle += " " + m.endStyle; - if (m.title && !title) title = m.title; - if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) - collapsed = sp; - } else if (sp.from > pos && nextChange > sp.from) { - nextChange = sp.from; - } - if (m.type == "bookmark" && sp.from == pos && m.widgetNode) foundBookmarks.push(m); - } - if (collapsed && (collapsed.from || 0) == pos) { - buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, - collapsed.marker, collapsed.from == null); - if (collapsed.to == null) return; - } - if (!collapsed && foundBookmarks.length) for (var j = 0; j < foundBookmarks.length; ++j) - buildCollapsedSpan(builder, 0, foundBookmarks[j]); - } - if (pos >= len) break; - - var upto = Math.min(len, nextChange); - while (true) { - if (text) { - var end = pos + text.length; - if (!collapsed) { - var tokenText = end > upto ? text.slice(0, upto - pos) : text; - builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, - spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title); - } - if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;} - pos = end; - spanStartStyle = ""; - } - text = allText.slice(at, at = styles[i++]); - style = interpretTokenStyle(styles[i++], builder.cm.options); - } - } - } - - // DOCUMENT DATA STRUCTURE - - // By default, updates that start and end at the beginning of a line - // are treated specially, in order to make the association of line - // widgets and marker elements with the text behave more intuitive. - function isWholeLineUpdate(doc, change) { - return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && - (!doc.cm || doc.cm.options.wholeLineUpdateBefore); - } - - // Perform a change on the document data structure. - function updateDoc(doc, change, markedSpans, estimateHeight) { - function spansFor(n) {return markedSpans ? markedSpans[n] : null;} - function update(line, text, spans) { - updateLine(line, text, spans, estimateHeight); - signalLater(line, "change", line, change); - } - - var from = change.from, to = change.to, text = change.text; - var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line); - var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line; - - // Adjust the line structure - if (isWholeLineUpdate(doc, change)) { - // This is a whole-line replace. Treated specially to make - // sure line objects move the way they are supposed to. - for (var i = 0, added = []; i < text.length - 1; ++i) - added.push(new Line(text[i], spansFor(i), estimateHeight)); - update(lastLine, lastLine.text, lastSpans); - if (nlines) doc.remove(from.line, nlines); - if (added.length) doc.insert(from.line, added); - } else if (firstLine == lastLine) { - if (text.length == 1) { - update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans); - } else { - for (var added = [], i = 1; i < text.length - 1; ++i) - added.push(new Line(text[i], spansFor(i), estimateHeight)); - added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)); - update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); - doc.insert(from.line + 1, added); - } - } else if (text.length == 1) { - update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)); - doc.remove(from.line + 1, nlines); - } else { - update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); - update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans); - for (var i = 1, added = []; i < text.length - 1; ++i) - added.push(new Line(text[i], spansFor(i), estimateHeight)); - if (nlines > 1) doc.remove(from.line + 1, nlines - 1); - doc.insert(from.line + 1, added); - } - - signalLater(doc, "change", doc, change); - } - - // The document is represented as a BTree consisting of leaves, with - // chunk of lines in them, and branches, with up to ten leaves or - // other branch nodes below them. The top node is always a branch - // node, and is the document object itself (meaning it has - // additional methods and properties). - // - // All nodes have parent links. The tree is used both to go from - // line numbers to line objects, and to go from objects to numbers. - // It also indexes by height, and is used to convert between height - // and line object, and to find the total height of the document. - // - // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html - - function LeafChunk(lines) { - this.lines = lines; - this.parent = null; - for (var i = 0, height = 0; i < lines.length; ++i) { - lines[i].parent = this; - height += lines[i].height; - } - this.height = height; - } - - LeafChunk.prototype = { - chunkSize: function() { return this.lines.length; }, - // Remove the n lines at offset 'at'. - removeInner: function(at, n) { - for (var i = at, e = at + n; i < e; ++i) { - var line = this.lines[i]; - this.height -= line.height; - cleanUpLine(line); - signalLater(line, "delete"); - } - this.lines.splice(at, n); - }, - // Helper used to collapse a small branch into a single leaf. - collapse: function(lines) { - lines.push.apply(lines, this.lines); - }, - // Insert the given array of lines at offset 'at', count them as - // having the given height. - insertInner: function(at, lines, height) { - this.height += height; - this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); - for (var i = 0; i < lines.length; ++i) lines[i].parent = this; - }, - // Used to iterate over a part of the tree. - iterN: function(at, n, op) { - for (var e = at + n; at < e; ++at) - if (op(this.lines[at])) return true; - } - }; - - function BranchChunk(children) { - this.children = children; - var size = 0, height = 0; - for (var i = 0; i < children.length; ++i) { - var ch = children[i]; - size += ch.chunkSize(); height += ch.height; - ch.parent = this; - } - this.size = size; - this.height = height; - this.parent = null; - } - - BranchChunk.prototype = { - chunkSize: function() { return this.size; }, - removeInner: function(at, n) { - this.size -= n; - for (var i = 0; i < this.children.length; ++i) { - var child = this.children[i], sz = child.chunkSize(); - if (at < sz) { - var rm = Math.min(n, sz - at), oldHeight = child.height; - child.removeInner(at, rm); - this.height -= oldHeight - child.height; - if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } - if ((n -= rm) == 0) break; - at = 0; - } else at -= sz; - } - // If the result is smaller than 25 lines, ensure that it is a - // single leaf node. - if (this.size - n < 25 && - (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { - var lines = []; - this.collapse(lines); - this.children = [new LeafChunk(lines)]; - this.children[0].parent = this; - } - }, - collapse: function(lines) { - for (var i = 0; i < this.children.length; ++i) this.children[i].collapse(lines); - }, - insertInner: function(at, lines, height) { - this.size += lines.length; - this.height += height; - for (var i = 0; i < this.children.length; ++i) { - var child = this.children[i], sz = child.chunkSize(); - if (at <= sz) { - child.insertInner(at, lines, height); - if (child.lines && child.lines.length > 50) { - while (child.lines.length > 50) { - var spilled = child.lines.splice(child.lines.length - 25, 25); - var newleaf = new LeafChunk(spilled); - child.height -= newleaf.height; - this.children.splice(i + 1, 0, newleaf); - newleaf.parent = this; - } - this.maybeSpill(); - } - break; - } - at -= sz; - } - }, - // When a node has grown, check whether it should be split. - maybeSpill: function() { - if (this.children.length <= 10) return; - var me = this; - do { - var spilled = me.children.splice(me.children.length - 5, 5); - var sibling = new BranchChunk(spilled); - if (!me.parent) { // Become the parent node - var copy = new BranchChunk(me.children); - copy.parent = me; - me.children = [copy, sibling]; - me = copy; - } else { - me.size -= sibling.size; - me.height -= sibling.height; - var myIndex = indexOf(me.parent.children, me); - me.parent.children.splice(myIndex + 1, 0, sibling); - } - sibling.parent = me.parent; - } while (me.children.length > 10); - me.parent.maybeSpill(); - }, - iterN: function(at, n, op) { - for (var i = 0; i < this.children.length; ++i) { - var child = this.children[i], sz = child.chunkSize(); - if (at < sz) { - var used = Math.min(n, sz - at); - if (child.iterN(at, used, op)) return true; - if ((n -= used) == 0) break; - at = 0; - } else at -= sz; - } - } - }; - - var nextDocId = 0; - var Doc = CodeMirror.Doc = function(text, mode, firstLine) { - if (!(this instanceof Doc)) return new Doc(text, mode, firstLine); - if (firstLine == null) firstLine = 0; - - BranchChunk.call(this, [new LeafChunk([new Line("", null)])]); - this.first = firstLine; - this.scrollTop = this.scrollLeft = 0; - this.cantEdit = false; - this.cleanGeneration = 1; - this.frontier = firstLine; - var start = Pos(firstLine, 0); - this.sel = simpleSelection(start); - this.history = new History(null); - this.id = ++nextDocId; - this.modeOption = mode; - - if (typeof text == "string") text = splitLines(text); - updateDoc(this, {from: start, to: start, text: text}); - setSelection(this, simpleSelection(start), sel_dontScroll); - }; - - Doc.prototype = createObj(BranchChunk.prototype, { - constructor: Doc, - // Iterate over the document. Supports two forms -- with only one - // argument, it calls that for each line in the document. With - // three, it iterates over the range given by the first two (with - // the second being non-inclusive). - iter: function(from, to, op) { - if (op) this.iterN(from - this.first, to - from, op); - else this.iterN(this.first, this.first + this.size, from); - }, - - // Non-public interface for adding and removing lines. - insert: function(at, lines) { - var height = 0; - for (var i = 0; i < lines.length; ++i) height += lines[i].height; - this.insertInner(at - this.first, lines, height); - }, - remove: function(at, n) { this.removeInner(at - this.first, n); }, - - // From here, the methods are part of the public interface. Most - // are also available from CodeMirror (editor) instances. - - getValue: function(lineSep) { - var lines = getLines(this, this.first, this.first + this.size); - if (lineSep === false) return lines; - return lines.join(lineSep || "\n"); - }, - setValue: docMethodOp(function(code) { - var top = Pos(this.first, 0), last = this.first + this.size - 1; - makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), - text: splitLines(code), origin: "setValue"}, true); - setSelection(this, simpleSelection(top)); - }), - replaceRange: function(code, from, to, origin) { - from = clipPos(this, from); - to = to ? clipPos(this, to) : from; - replaceRange(this, code, from, to, origin); - }, - getRange: function(from, to, lineSep) { - var lines = getBetween(this, clipPos(this, from), clipPos(this, to)); - if (lineSep === false) return lines; - return lines.join(lineSep || "\n"); - }, - - getLine: function(line) {var l = this.getLineHandle(line); return l && l.text;}, - - getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line);}, - getLineNumber: function(line) {return lineNo(line);}, - - getLineHandleVisualStart: function(line) { - if (typeof line == "number") line = getLine(this, line); - return visualLine(line); - }, - - lineCount: function() {return this.size;}, - firstLine: function() {return this.first;}, - lastLine: function() {return this.first + this.size - 1;}, - - clipPos: function(pos) {return clipPos(this, pos);}, - - getCursor: function(start) { - var range = this.sel.primary(), pos; - if (start == null || start == "head") pos = range.head; - else if (start == "anchor") pos = range.anchor; - else if (start == "end" || start == "to" || start === false) pos = range.to(); - else pos = range.from(); - return pos; - }, - listSelections: function() { return this.sel.ranges; }, - somethingSelected: function() {return this.sel.somethingSelected();}, - - setCursor: docMethodOp(function(line, ch, options) { - setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options); - }), - setSelection: docMethodOp(function(anchor, head, options) { - setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options); - }), - extendSelection: docMethodOp(function(head, other, options) { - extendSelection(this, clipPos(this, head), other && clipPos(this, other), options); - }), - extendSelections: docMethodOp(function(heads, options) { - extendSelections(this, clipPosArray(this, heads, options)); - }), - extendSelectionsBy: docMethodOp(function(f, options) { - extendSelections(this, map(this.sel.ranges, f), options); - }), - setSelections: docMethodOp(function(ranges, primary, options) { - if (!ranges.length) return; - for (var i = 0, out = []; i < ranges.length; i++) - out[i] = new Range(clipPos(this, ranges[i].anchor), - clipPos(this, ranges[i].head)); - if (primary == null) primary = Math.min(ranges.length - 1, this.sel.primIndex); - setSelection(this, normalizeSelection(out, primary), options); - }), - addSelection: docMethodOp(function(anchor, head, options) { - var ranges = this.sel.ranges.slice(0); - ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))); - setSelection(this, normalizeSelection(ranges, ranges.length - 1), options); - }), - - getSelection: function(lineSep) { - var ranges = this.sel.ranges, lines; - for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this, ranges[i].from(), ranges[i].to()); - lines = lines ? lines.concat(sel) : sel; - } - if (lineSep === false) return lines; - else return lines.join(lineSep || "\n"); - }, - getSelections: function(lineSep) { - var parts = [], ranges = this.sel.ranges; - for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this, ranges[i].from(), ranges[i].to()); - if (lineSep !== false) sel = sel.join(lineSep || "\n"); - parts[i] = sel; - } - return parts; - }, - replaceSelection: function(code, collapse, origin) { - var dup = []; - for (var i = 0; i < this.sel.ranges.length; i++) - dup[i] = code; - this.replaceSelections(dup, collapse, origin || "+input"); - }, - replaceSelections: docMethodOp(function(code, collapse, origin) { - var changes = [], sel = this.sel; - for (var i = 0; i < sel.ranges.length; i++) { - var range = sel.ranges[i]; - changes[i] = {from: range.from(), to: range.to(), text: splitLines(code[i]), origin: origin}; - } - var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse); - for (var i = changes.length - 1; i >= 0; i--) - makeChange(this, changes[i]); - if (newSel) setSelectionReplaceHistory(this, newSel); - else if (this.cm) ensureCursorVisible(this.cm); - }), - undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}), - redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}), - undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}), - redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}), - - setExtending: function(val) {this.extend = val;}, - getExtending: function() {return this.extend;}, - - historySize: function() { - var hist = this.history, done = 0, undone = 0; - for (var i = 0; i < hist.done.length; i++) if (!hist.done[i].ranges) ++done; - for (var i = 0; i < hist.undone.length; i++) if (!hist.undone[i].ranges) ++undone; - return {undo: done, redo: undone}; - }, - clearHistory: function() {this.history = new History(this.history.maxGeneration);}, - - markClean: function() { - this.cleanGeneration = this.changeGeneration(true); - }, - changeGeneration: function(forceSplit) { - if (forceSplit) - this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; - return this.history.generation; - }, - isClean: function (gen) { - return this.history.generation == (gen || this.cleanGeneration); - }, - - getHistory: function() { - return {done: copyHistoryArray(this.history.done), - undone: copyHistoryArray(this.history.undone)}; - }, - setHistory: function(histData) { - var hist = this.history = new History(this.history.maxGeneration); - hist.done = copyHistoryArray(histData.done.slice(0), null, true); - hist.undone = copyHistoryArray(histData.undone.slice(0), null, true); - }, - - addLineClass: docMethodOp(function(handle, where, cls) { - return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function(line) { - var prop = where == "text" ? "textClass" - : where == "background" ? "bgClass" - : where == "gutter" ? "gutterClass" : "wrapClass"; - if (!line[prop]) line[prop] = cls; - else if (classTest(cls).test(line[prop])) return false; - else line[prop] += " " + cls; - return true; - }); - }), - removeLineClass: docMethodOp(function(handle, where, cls) { - return changeLine(this, handle, "class", function(line) { - var prop = where == "text" ? "textClass" - : where == "background" ? "bgClass" - : where == "gutter" ? "gutterClass" : "wrapClass"; - var cur = line[prop]; - if (!cur) return false; - else if (cls == null) line[prop] = null; - else { - var found = cur.match(classTest(cls)); - if (!found) return false; - var end = found.index + found[0].length; - line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null; - } - return true; - }); - }), - - markText: function(from, to, options) { - return markText(this, clipPos(this, from), clipPos(this, to), options, "range"); - }, - setBookmark: function(pos, options) { - var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), - insertLeft: options && options.insertLeft, - clearWhenEmpty: false, shared: options && options.shared}; - pos = clipPos(this, pos); - return markText(this, pos, pos, realOpts, "bookmark"); - }, - findMarksAt: function(pos) { - pos = clipPos(this, pos); - var markers = [], spans = getLine(this, pos.line).markedSpans; - if (spans) for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if ((span.from == null || span.from <= pos.ch) && - (span.to == null || span.to >= pos.ch)) - markers.push(span.marker.parent || span.marker); - } - return markers; - }, - findMarks: function(from, to, filter) { - from = clipPos(this, from); to = clipPos(this, to); - var found = [], lineNo = from.line; - this.iter(from.line, to.line + 1, function(line) { - var spans = line.markedSpans; - if (spans) for (var i = 0; i < spans.length; i++) { - var span = spans[i]; - if (!(lineNo == from.line && from.ch > span.to || - span.from == null && lineNo != from.line|| - lineNo == to.line && span.from > to.ch) && - (!filter || filter(span.marker))) - found.push(span.marker.parent || span.marker); - } - ++lineNo; - }); - return found; - }, - getAllMarks: function() { - var markers = []; - this.iter(function(line) { - var sps = line.markedSpans; - if (sps) for (var i = 0; i < sps.length; ++i) - if (sps[i].from != null) markers.push(sps[i].marker); - }); - return markers; - }, - - posFromIndex: function(off) { - var ch, lineNo = this.first; - this.iter(function(line) { - var sz = line.text.length + 1; - if (sz > off) { ch = off; return true; } - off -= sz; - ++lineNo; - }); - return clipPos(this, Pos(lineNo, ch)); - }, - indexFromPos: function (coords) { - coords = clipPos(this, coords); - var index = coords.ch; - if (coords.line < this.first || coords.ch < 0) return 0; - this.iter(this.first, coords.line, function (line) { - index += line.text.length + 1; - }); - return index; - }, - - copy: function(copyHistory) { - var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first); - doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft; - doc.sel = this.sel; - doc.extend = false; - if (copyHistory) { - doc.history.undoDepth = this.history.undoDepth; - doc.setHistory(this.getHistory()); - } - return doc; - }, - - linkedDoc: function(options) { - if (!options) options = {}; - var from = this.first, to = this.first + this.size; - if (options.from != null && options.from > from) from = options.from; - if (options.to != null && options.to < to) to = options.to; - var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from); - if (options.sharedHist) copy.history = this.history; - (this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}); - copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}]; - copySharedMarkers(copy, findSharedMarkers(this)); - return copy; - }, - unlinkDoc: function(other) { - if (other instanceof CodeMirror) other = other.doc; - if (this.linked) for (var i = 0; i < this.linked.length; ++i) { - var link = this.linked[i]; - if (link.doc != other) continue; - this.linked.splice(i, 1); - other.unlinkDoc(this); - detachSharedMarkers(findSharedMarkers(this)); - break; - } - // If the histories were shared, split them again - if (other.history == this.history) { - var splitIds = [other.id]; - linkedDocs(other, function(doc) {splitIds.push(doc.id);}, true); - other.history = new History(null); - other.history.done = copyHistoryArray(this.history.done, splitIds); - other.history.undone = copyHistoryArray(this.history.undone, splitIds); - } - }, - iterLinkedDocs: function(f) {linkedDocs(this, f);}, - - getMode: function() {return this.mode;}, - getEditor: function() {return this.cm;} - }); - - // Public alias. - Doc.prototype.eachLine = Doc.prototype.iter; - - // Set up methods on CodeMirror's prototype to redirect to the editor's document. - var dontDelegate = "iter insert remove copy getEditor".split(" "); - for (var prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) - CodeMirror.prototype[prop] = (function(method) { - return function() {return method.apply(this.doc, arguments);}; - })(Doc.prototype[prop]); - - eventMixin(Doc); - - // Call f for all linked documents. - function linkedDocs(doc, f, sharedHistOnly) { - function propagate(doc, skip, sharedHist) { - if (doc.linked) for (var i = 0; i < doc.linked.length; ++i) { - var rel = doc.linked[i]; - if (rel.doc == skip) continue; - var shared = sharedHist && rel.sharedHist; - if (sharedHistOnly && !shared) continue; - f(rel.doc, shared); - propagate(rel.doc, doc, shared); - } - } - propagate(doc, null, true); - } - - // Attach a document to an editor. - function attachDoc(cm, doc) { - if (doc.cm) throw new Error("This document is already in use."); - cm.doc = doc; - doc.cm = cm; - estimateLineHeights(cm); - loadMode(cm); - if (!cm.options.lineWrapping) findMaxLine(cm); - cm.options.mode = doc.modeOption; - regChange(cm); - } - - // LINE UTILITIES - - // Find the line object corresponding to the given line number. - function getLine(doc, n) { - n -= doc.first; - if (n < 0 || n >= doc.size) throw new Error("There is no line " + (n + doc.first) + " in the document."); - for (var chunk = doc; !chunk.lines;) { - for (var i = 0;; ++i) { - var child = chunk.children[i], sz = child.chunkSize(); - if (n < sz) { chunk = child; break; } - n -= sz; - } - } - return chunk.lines[n]; - } - - // Get the part of a document between two positions, as an array of - // strings. - function getBetween(doc, start, end) { - var out = [], n = start.line; - doc.iter(start.line, end.line + 1, function(line) { - var text = line.text; - if (n == end.line) text = text.slice(0, end.ch); - if (n == start.line) text = text.slice(start.ch); - out.push(text); - ++n; - }); - return out; - } - // Get the lines between from and to, as array of strings. - function getLines(doc, from, to) { - var out = []; - doc.iter(from, to, function(line) { out.push(line.text); }); - return out; - } - - // Update the height of a line, propagating the height change - // upwards to parent nodes. - function updateLineHeight(line, height) { - var diff = height - line.height; - if (diff) for (var n = line; n; n = n.parent) n.height += diff; - } - - // Given a line object, find its line number by walking up through - // its parent links. - function lineNo(line) { - if (line.parent == null) return null; - var cur = line.parent, no = indexOf(cur.lines, line); - for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { - for (var i = 0;; ++i) { - if (chunk.children[i] == cur) break; - no += chunk.children[i].chunkSize(); - } - } - return no + cur.first; - } - - // Find the line at the given vertical position, using the height - // information in the document tree. - function lineAtHeight(chunk, h) { - var n = chunk.first; - outer: do { - for (var i = 0; i < chunk.children.length; ++i) { - var child = chunk.children[i], ch = child.height; - if (h < ch) { chunk = child; continue outer; } - h -= ch; - n += child.chunkSize(); - } - return n; - } while (!chunk.lines); - for (var i = 0; i < chunk.lines.length; ++i) { - var line = chunk.lines[i], lh = line.height; - if (h < lh) break; - h -= lh; - } - return n + i; - } - - - // Find the height above the given line. - function heightAtLine(lineObj) { - lineObj = visualLine(lineObj); - - var h = 0, chunk = lineObj.parent; - for (var i = 0; i < chunk.lines.length; ++i) { - var line = chunk.lines[i]; - if (line == lineObj) break; - else h += line.height; - } - for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { - for (var i = 0; i < p.children.length; ++i) { - var cur = p.children[i]; - if (cur == chunk) break; - else h += cur.height; - } - } - return h; - } - - // Get the bidi ordering for the given line (and cache it). Returns - // false for lines that are fully left-to-right, and an array of - // BidiSpan objects otherwise. - function getOrder(line) { - var order = line.order; - if (order == null) order = line.order = bidiOrdering(line.text); - return order; - } - - // HISTORY - - function History(startGen) { - // Arrays of change events and selections. Doing something adds an - // event to done and clears undo. Undoing moves events from done - // to undone, redoing moves them in the other direction. - this.done = []; this.undone = []; - this.undoDepth = Infinity; - // Used to track when changes can be merged into a single undo - // event - this.lastModTime = this.lastSelTime = 0; - this.lastOp = this.lastSelOp = null; - this.lastOrigin = this.lastSelOrigin = null; - // Used by the isClean() method - this.generation = this.maxGeneration = startGen || 1; - } - - // Create a history change event from an updateDoc-style change - // object. - function historyChangeFromChange(doc, change) { - var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}; - attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); - linkedDocs(doc, function(doc) {attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);}, true); - return histChange; - } - - // Pop all selection events off the end of a history array. Stop at - // a change event. - function clearSelectionEvents(array) { - while (array.length) { - var last = lst(array); - if (last.ranges) array.pop(); - else break; - } - } - - // Find the top change event in the history. Pop off selection - // events that are in the way. - function lastChangeEvent(hist, force) { - if (force) { - clearSelectionEvents(hist.done); - return lst(hist.done); - } else if (hist.done.length && !lst(hist.done).ranges) { - return lst(hist.done); - } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { - hist.done.pop(); - return lst(hist.done); - } - } - - // Register a change in the history. Merges changes that are within - // a single operation, ore are close together with an origin that - // allows merging (starting with "+") into a single event. - function addChangeToHistory(doc, change, selAfter, opId) { - var hist = doc.history; - hist.undone.length = 0; - var time = +new Date, cur; - - if ((hist.lastOp == opId || - hist.lastOrigin == change.origin && change.origin && - ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) || - change.origin.charAt(0) == "*")) && - (cur = lastChangeEvent(hist, hist.lastOp == opId))) { - // Merge this change into the last event - var last = lst(cur.changes); - if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { - // Optimized case for simple insertion -- don't want to add - // new changesets for every character typed - last.to = changeEnd(change); - } else { - // Add new sub-event - cur.changes.push(historyChangeFromChange(doc, change)); - } - } else { - // Can not be merged, start a new event. - var before = lst(hist.done); - if (!before || !before.ranges) - pushSelectionToHistory(doc.sel, hist.done); - cur = {changes: [historyChangeFromChange(doc, change)], - generation: hist.generation}; - hist.done.push(cur); - while (hist.done.length > hist.undoDepth) { - hist.done.shift(); - if (!hist.done[0].ranges) hist.done.shift(); - } - } - hist.done.push(selAfter); - hist.generation = ++hist.maxGeneration; - hist.lastModTime = hist.lastSelTime = time; - hist.lastOp = hist.lastSelOp = opId; - hist.lastOrigin = hist.lastSelOrigin = change.origin; - - if (!last) signal(doc, "historyAdded"); - } - - function selectionEventCanBeMerged(doc, origin, prev, sel) { - var ch = origin.charAt(0); - return ch == "*" || - ch == "+" && - prev.ranges.length == sel.ranges.length && - prev.somethingSelected() == sel.somethingSelected() && - new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500); - } - - // Called whenever the selection changes, sets the new selection as - // the pending selection in the history, and pushes the old pending - // selection into the 'done' array when it was significantly - // different (in number of selected ranges, emptiness, or time). - function addSelectionToHistory(doc, sel, opId, options) { - var hist = doc.history, origin = options && options.origin; - - // A new event is started when the previous origin does not match - // the current, or the origins don't allow matching. Origins - // starting with * are always merged, those starting with + are - // merged when similar and close together in time. - if (opId == hist.lastSelOp || - (origin && hist.lastSelOrigin == origin && - (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || - selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) - hist.done[hist.done.length - 1] = sel; - else - pushSelectionToHistory(sel, hist.done); - - hist.lastSelTime = +new Date; - hist.lastSelOrigin = origin; - hist.lastSelOp = opId; - if (options && options.clearRedo !== false) - clearSelectionEvents(hist.undone); - } - - function pushSelectionToHistory(sel, dest) { - var top = lst(dest); - if (!(top && top.ranges && top.equals(sel))) - dest.push(sel); - } - - // Used to store marked span information in the history. - function attachLocalSpans(doc, change, from, to) { - var existing = change["spans_" + doc.id], n = 0; - doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) { - if (line.markedSpans) - (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans; - ++n; - }); - } - - // When un/re-doing restores text containing marked spans, those - // that have been explicitly cleared should not be restored. - function removeClearedSpans(spans) { - if (!spans) return null; - for (var i = 0, out; i < spans.length; ++i) { - if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i); } - else if (out) out.push(spans[i]); - } - return !out ? spans : out.length ? out : null; - } - - // Retrieve and filter the old marked spans stored in a change event. - function getOldSpans(doc, change) { - var found = change["spans_" + doc.id]; - if (!found) return null; - for (var i = 0, nw = []; i < change.text.length; ++i) - nw.push(removeClearedSpans(found[i])); - return nw; - } - - // Used both to provide a JSON-safe object in .getHistory, and, when - // detaching a document, to split the history in two - function copyHistoryArray(events, newGroup, instantiateSel) { - for (var i = 0, copy = []; i < events.length; ++i) { - var event = events[i]; - if (event.ranges) { - copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event); - continue; - } - var changes = event.changes, newChanges = []; - copy.push({changes: newChanges}); - for (var j = 0; j < changes.length; ++j) { - var change = changes[j], m; - newChanges.push({from: change.from, to: change.to, text: change.text}); - if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\d+)$/)) { - if (indexOf(newGroup, Number(m[1])) > -1) { - lst(newChanges)[prop] = change[prop]; - delete change[prop]; - } - } - } - } - return copy; - } - - // Rebasing/resetting history to deal with externally-sourced changes - - function rebaseHistSelSingle(pos, from, to, diff) { - if (to < pos.line) { - pos.line += diff; - } else if (from < pos.line) { - pos.line = from; - pos.ch = 0; - } - } - - // Tries to rebase an array of history events given a change in the - // document. If the change touches the same lines as the event, the - // event, and everything 'behind' it, is discarded. If the change is - // before the event, the event's positions are updated. Uses a - // copy-on-write scheme for the positions, to avoid having to - // reallocate them all on every rebase, but also avoid problems with - // shared position objects being unsafely updated. - function rebaseHistArray(array, from, to, diff) { - for (var i = 0; i < array.length; ++i) { - var sub = array[i], ok = true; - if (sub.ranges) { - if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; } - for (var j = 0; j < sub.ranges.length; j++) { - rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff); - rebaseHistSelSingle(sub.ranges[j].head, from, to, diff); - } - continue; - } - for (var j = 0; j < sub.changes.length; ++j) { - var cur = sub.changes[j]; - if (to < cur.from.line) { - cur.from = Pos(cur.from.line + diff, cur.from.ch); - cur.to = Pos(cur.to.line + diff, cur.to.ch); - } else if (from <= cur.to.line) { - ok = false; - break; - } - } - if (!ok) { - array.splice(0, i + 1); - i = 0; - } - } - } - - function rebaseHist(hist, change) { - var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1; - rebaseHistArray(hist.done, from, to, diff); - rebaseHistArray(hist.undone, from, to, diff); - } - - // EVENT UTILITIES - - // Due to the fact that we still support jurassic IE versions, some - // compatibility wrappers are needed. - - var e_preventDefault = CodeMirror.e_preventDefault = function(e) { - if (e.preventDefault) e.preventDefault(); - else e.returnValue = false; - }; - var e_stopPropagation = CodeMirror.e_stopPropagation = function(e) { - if (e.stopPropagation) e.stopPropagation(); - else e.cancelBubble = true; - }; - function e_defaultPrevented(e) { - return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false; - } - var e_stop = CodeMirror.e_stop = function(e) {e_preventDefault(e); e_stopPropagation(e);}; - - function e_target(e) {return e.target || e.srcElement;} - function e_button(e) { - var b = e.which; - if (b == null) { - if (e.button & 1) b = 1; - else if (e.button & 2) b = 3; - else if (e.button & 4) b = 2; - } - if (mac && e.ctrlKey && b == 1) b = 3; - return b; - } - - // EVENT HANDLING - - // Lightweight event framework. on/off also work on DOM nodes, - // registering native DOM handlers. - - var on = CodeMirror.on = function(emitter, type, f) { - if (emitter.addEventListener) - emitter.addEventListener(type, f, false); - else if (emitter.attachEvent) - emitter.attachEvent("on" + type, f); - else { - var map = emitter._handlers || (emitter._handlers = {}); - var arr = map[type] || (map[type] = []); - arr.push(f); - } - }; - - var off = CodeMirror.off = function(emitter, type, f) { - if (emitter.removeEventListener) - emitter.removeEventListener(type, f, false); - else if (emitter.detachEvent) - emitter.detachEvent("on" + type, f); - else { - var arr = emitter._handlers && emitter._handlers[type]; - if (!arr) return; - for (var i = 0; i < arr.length; ++i) - if (arr[i] == f) { arr.splice(i, 1); break; } - } - }; - - var signal = CodeMirror.signal = function(emitter, type /*, values...*/) { - var arr = emitter._handlers && emitter._handlers[type]; - if (!arr) return; - var args = Array.prototype.slice.call(arguments, 2); - for (var i = 0; i < arr.length; ++i) arr[i].apply(null, args); - }; - - var orphanDelayedCallbacks = null; - - // Often, we want to signal events at a point where we are in the - // middle of some work, but don't want the handler to start calling - // other methods on the editor, which might be in an inconsistent - // state or simply not expect any other events to happen. - // signalLater looks whether there are any handlers, and schedules - // them to be executed when the last operation ends, or, if no - // operation is active, when a timeout fires. - function signalLater(emitter, type /*, values...*/) { - var arr = emitter._handlers && emitter._handlers[type]; - if (!arr) return; - var args = Array.prototype.slice.call(arguments, 2), list; - if (operationGroup) { - list = operationGroup.delayedCallbacks; - } else if (orphanDelayedCallbacks) { - list = orphanDelayedCallbacks; - } else { - list = orphanDelayedCallbacks = []; - setTimeout(fireOrphanDelayed, 0); - } - function bnd(f) {return function(){f.apply(null, args);};}; - for (var i = 0; i < arr.length; ++i) - list.push(bnd(arr[i])); - } - - function fireOrphanDelayed() { - var delayed = orphanDelayedCallbacks; - orphanDelayedCallbacks = null; - for (var i = 0; i < delayed.length; ++i) delayed[i](); - } - - // The DOM events that CodeMirror handles can be overridden by - // registering a (non-DOM) handler on the editor for the event name, - // and preventDefault-ing the event in that handler. - function signalDOMEvent(cm, e, override) { - if (typeof e == "string") - e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; - signal(cm, override || e.type, cm, e); - return e_defaultPrevented(e) || e.codemirrorIgnore; - } - - function signalCursorActivity(cm) { - var arr = cm._handlers && cm._handlers.cursorActivity; - if (!arr) return; - var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []); - for (var i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1) - set.push(arr[i]); - } - - function hasHandler(emitter, type) { - var arr = emitter._handlers && emitter._handlers[type]; - return arr && arr.length > 0; - } - - // Add on and off methods to a constructor's prototype, to make - // registering events on such objects more convenient. - function eventMixin(ctor) { - ctor.prototype.on = function(type, f) {on(this, type, f);}; - ctor.prototype.off = function(type, f) {off(this, type, f);}; - } - - // MISC UTILITIES - - // Number of pixels added to scroller and sizer to hide scrollbar - var scrollerCutOff = 30; - - // Returned or thrown by various protocols to signal 'I'm not - // handling this'. - var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}}; - - // Reused option objects for setSelection & friends - var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"}; - - function Delayed() {this.id = null;} - Delayed.prototype.set = function(ms, f) { - clearTimeout(this.id); - this.id = setTimeout(f, ms); - }; - - // Counts the column offset in a string, taking tabs into account. - // Used mostly to find indentation. - var countColumn = CodeMirror.countColumn = function(string, end, tabSize, startIndex, startValue) { - if (end == null) { - end = string.search(/[^\s\u00a0]/); - if (end == -1) end = string.length; - } - for (var i = startIndex || 0, n = startValue || 0;;) { - var nextTab = string.indexOf("\t", i); - if (nextTab < 0 || nextTab >= end) - return n + (end - i); - n += nextTab - i; - n += tabSize - (n % tabSize); - i = nextTab + 1; - } - }; - - // The inverse of countColumn -- find the offset that corresponds to - // a particular column. - function findColumn(string, goal, tabSize) { - for (var pos = 0, col = 0;;) { - var nextTab = string.indexOf("\t", pos); - if (nextTab == -1) nextTab = string.length; - var skipped = nextTab - pos; - if (nextTab == string.length || col + skipped >= goal) - return pos + Math.min(skipped, goal - col); - col += nextTab - pos; - col += tabSize - (col % tabSize); - pos = nextTab + 1; - if (col >= goal) return pos; - } - } - - var spaceStrs = [""]; - function spaceStr(n) { - while (spaceStrs.length <= n) - spaceStrs.push(lst(spaceStrs) + " "); - return spaceStrs[n]; - } - - function lst(arr) { return arr[arr.length-1]; } - - var selectInput = function(node) { node.select(); }; - if (ios) // Mobile Safari apparently has a bug where select() is broken. - selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; - else if (ie) // Suppress mysterious IE10 errors - selectInput = function(node) { try { node.select(); } catch(_e) {} }; - - function indexOf(array, elt) { - for (var i = 0; i < array.length; ++i) - if (array[i] == elt) return i; - return -1; - } - if ([].indexOf) indexOf = function(array, elt) { return array.indexOf(elt); }; - function map(array, f) { - var out = []; - for (var i = 0; i < array.length; i++) out[i] = f(array[i], i); - return out; - } - if ([].map) map = function(array, f) { return array.map(f); }; - - function createObj(base, props) { - var inst; - if (Object.create) { - inst = Object.create(base); - } else { - var ctor = function() {}; - ctor.prototype = base; - inst = new ctor(); - } - if (props) copyObj(props, inst); - return inst; - }; - - function copyObj(obj, target, overwrite) { - if (!target) target = {}; - for (var prop in obj) - if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) - target[prop] = obj[prop]; - return target; - } - - function bind(f) { - var args = Array.prototype.slice.call(arguments, 1); - return function(){return f.apply(null, args);}; - } - - var nonASCIISingleCaseWordChar = /[\u00df\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; - var isWordCharBasic = CodeMirror.isWordChar = function(ch) { - return /\w/.test(ch) || ch > "\x80" && - (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)); - }; - function isWordChar(ch, helper) { - if (!helper) return isWordCharBasic(ch); - if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) return true; - return helper.test(ch); - } - - function isEmpty(obj) { - for (var n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false; - return true; - } - - // Extending unicode characters. A series of a non-extending char + - // any number of extending chars is treated as a single unit as far - // as editing and measuring is concerned. This is not fully correct, - // since some scripts/fonts/browsers also treat other configurations - // of code points as a group. - var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; - function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); } - - // DOM UTILITIES - - function elt(tag, content, className, style) { - var e = document.createElement(tag); - if (className) e.className = className; - if (style) e.style.cssText = style; - if (typeof content == "string") e.appendChild(document.createTextNode(content)); - else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]); - return e; - } - - var range; - if (document.createRange) range = function(node, start, end) { - var r = document.createRange(); - r.setEnd(node, end); - r.setStart(node, start); - return r; - }; - else range = function(node, start, end) { - var r = document.body.createTextRange(); - try { r.moveToElementText(node.parentNode); } - catch(e) { return r; } - r.collapse(true); - r.moveEnd("character", end); - r.moveStart("character", start); - return r; - }; - - function removeChildren(e) { - for (var count = e.childNodes.length; count > 0; --count) - e.removeChild(e.firstChild); - return e; - } - - function removeChildrenAndAdd(parent, e) { - return removeChildren(parent).appendChild(e); - } - - function contains(parent, child) { - if (parent.contains) - return parent.contains(child); - while (child = child.parentNode) - if (child == parent) return true; - } - - function activeElt() { return document.activeElement; } - // Older versions of IE throws unspecified error when touching - // document.activeElement in some cases (during loading, in iframe) - if (ie && ie_version < 11) activeElt = function() { - try { return document.activeElement; } - catch(e) { return document.body; } - }; - - function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*"); } - var rmClass = CodeMirror.rmClass = function(node, cls) { - var current = node.className; - var match = classTest(cls).exec(current); - if (match) { - var after = current.slice(match.index + match[0].length); - node.className = current.slice(0, match.index) + (after ? match[1] + after : ""); - } - }; - var addClass = CodeMirror.addClass = function(node, cls) { - var current = node.className; - if (!classTest(cls).test(current)) node.className += (current ? " " : "") + cls; - }; - function joinClasses(a, b) { - var as = a.split(" "); - for (var i = 0; i < as.length; i++) - if (as[i] && !classTest(as[i]).test(b)) b += " " + as[i]; - return b; - } - - // WINDOW-WIDE EVENTS - - // These must be handled carefully, because naively registering a - // handler for each editor will cause the editors to never be - // garbage collected. - - function forEachCodeMirror(f) { - if (!document.body.getElementsByClassName) return; - var byClass = document.body.getElementsByClassName("CodeMirror"); - for (var i = 0; i < byClass.length; i++) { - var cm = byClass[i].CodeMirror; - if (cm) f(cm); - } - } - - var globalsRegistered = false; - function ensureGlobalHandlers() { - if (globalsRegistered) return; - registerGlobalHandlers(); - globalsRegistered = true; - } - function registerGlobalHandlers() { - // When the window resizes, we need to refresh active editors. - var resizeTimer; - on(window, "resize", function() { - if (resizeTimer == null) resizeTimer = setTimeout(function() { - resizeTimer = null; - knownScrollbarWidth = null; - forEachCodeMirror(onResize); - }, 100); - }); - // When the window loses focus, we want to show the editor as blurred - on(window, "blur", function() { - forEachCodeMirror(onBlur); - }); - } - - // FEATURE DETECTION - - // Detect drag-and-drop - var dragAndDrop = function() { - // There is *some* kind of drag-and-drop support in IE6-8, but I - // couldn't get it to work yet. - if (ie && ie_version < 9) return false; - var div = elt('div'); - return "draggable" in div || "dragDrop" in div; - }(); - - var knownScrollbarWidth; - function scrollbarWidth(measure) { - if (knownScrollbarWidth != null) return knownScrollbarWidth; - var test = elt("div", null, null, "width: 50px; height: 50px; overflow-x: scroll"); - removeChildrenAndAdd(measure, test); - if (test.offsetWidth) - knownScrollbarWidth = test.offsetHeight - test.clientHeight; - return knownScrollbarWidth || 0; - } - - var zwspSupported; - function zeroWidthElement(measure) { - if (zwspSupported == null) { - var test = elt("span", "\u200b"); - removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])); - if (measure.firstChild.offsetHeight != 0) - zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); - } - if (zwspSupported) return elt("span", "\u200b"); - else return elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px"); - } - - // Feature-detect IE's crummy client rect reporting for bidi text - var badBidiRects; - function hasBadBidiRects(measure) { - if (badBidiRects != null) return badBidiRects; - var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")); - var r0 = range(txt, 0, 1).getBoundingClientRect(); - if (!r0 || r0.left == r0.right) return false; // Safari returns null in some cases (#2780) - var r1 = range(txt, 1, 2).getBoundingClientRect(); - return badBidiRects = (r1.right - r0.right < 3); - } - - // See if "".split is the broken IE version, if so, provide an - // alternative way to split lines. - var splitLines = CodeMirror.splitLines = "\n\nb".split(/\n/).length != 3 ? function(string) { - var pos = 0, result = [], l = string.length; - while (pos <= l) { - var nl = string.indexOf("\n", pos); - if (nl == -1) nl = string.length; - var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); - var rt = line.indexOf("\r"); - if (rt != -1) { - result.push(line.slice(0, rt)); - pos += rt + 1; - } else { - result.push(line); - pos = nl + 1; - } - } - return result; - } : function(string){return string.split(/\r\n?|\n/);}; - - var hasSelection = window.getSelection ? function(te) { - try { return te.selectionStart != te.selectionEnd; } - catch(e) { return false; } - } : function(te) { - try {var range = te.ownerDocument.selection.createRange();} - catch(e) {} - if (!range || range.parentElement() != te) return false; - return range.compareEndPoints("StartToEnd", range) != 0; - }; - - var hasCopyEvent = (function() { - var e = elt("div"); - if ("oncopy" in e) return true; - e.setAttribute("oncopy", "return;"); - return typeof e.oncopy == "function"; - })(); - - var badZoomedRects = null; - function hasBadZoomedRects(measure) { - if (badZoomedRects != null) return badZoomedRects; - var node = removeChildrenAndAdd(measure, elt("span", "x")); - var normal = node.getBoundingClientRect(); - var fromRange = range(node, 0, 1).getBoundingClientRect(); - return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1; - } - - // KEY NAMES - - var keyNames = {3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", - 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", - 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", - 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", 107: "=", 109: "-", 127: "Delete", - 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", - 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", - 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert"}; - CodeMirror.keyNames = keyNames; - (function() { - // Number keys - for (var i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i); - // Alphabetic keys - for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i); - // Function keys - for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i; - })(); - - // BIDI HELPERS - - function iterateBidiSections(order, from, to, f) { - if (!order) return f(from, to, "ltr"); - var found = false; - for (var i = 0; i < order.length; ++i) { - var part = order[i]; - if (part.from < to && part.to > from || from == to && part.to == from) { - f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr"); - found = true; - } - } - if (!found) f(from, to, "ltr"); - } - - function bidiLeft(part) { return part.level % 2 ? part.to : part.from; } - function bidiRight(part) { return part.level % 2 ? part.from : part.to; } - - function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0; } - function lineRight(line) { - var order = getOrder(line); - if (!order) return line.text.length; - return bidiRight(lst(order)); - } - - function lineStart(cm, lineN) { - var line = getLine(cm.doc, lineN); - var visual = visualLine(line); - if (visual != line) lineN = lineNo(visual); - var order = getOrder(visual); - var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual); - return Pos(lineN, ch); - } - function lineEnd(cm, lineN) { - var merged, line = getLine(cm.doc, lineN); - while (merged = collapsedSpanAtEnd(line)) { - line = merged.find(1, true).line; - lineN = null; - } - var order = getOrder(line); - var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line); - return Pos(lineN == null ? lineNo(line) : lineN, ch); - } - function lineStartSmart(cm, pos) { - var start = lineStart(cm, pos.line); - var line = getLine(cm.doc, start.line); - var order = getOrder(line); - if (!order || order[0].level == 0) { - var firstNonWS = Math.max(0, line.text.search(/\S/)); - var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch; - return Pos(start.line, inWS ? 0 : firstNonWS); - } - return start; - } - - function compareBidiLevel(order, a, b) { - var linedir = order[0].level; - if (a == linedir) return true; - if (b == linedir) return false; - return a < b; - } - var bidiOther; - function getBidiPartAt(order, pos) { - bidiOther = null; - for (var i = 0, found; i < order.length; ++i) { - var cur = order[i]; - if (cur.from < pos && cur.to > pos) return i; - if ((cur.from == pos || cur.to == pos)) { - if (found == null) { - found = i; - } else if (compareBidiLevel(order, cur.level, order[found].level)) { - if (cur.from != cur.to) bidiOther = found; - return i; - } else { - if (cur.from != cur.to) bidiOther = i; - return found; - } - } - } - return found; - } - - function moveInLine(line, pos, dir, byUnit) { - if (!byUnit) return pos + dir; - do pos += dir; - while (pos > 0 && isExtendingChar(line.text.charAt(pos))); - return pos; - } - - // This is needed in order to move 'visually' through bi-directional - // text -- i.e., pressing left should make the cursor go left, even - // when in RTL text. The tricky part is the 'jumps', where RTL and - // LTR text touch each other. This often requires the cursor offset - // to move more than one unit, in order to visually move one unit. - function moveVisually(line, start, dir, byUnit) { - var bidi = getOrder(line); - if (!bidi) return moveLogically(line, start, dir, byUnit); - var pos = getBidiPartAt(bidi, start), part = bidi[pos]; - var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit); - - for (;;) { - if (target > part.from && target < part.to) return target; - if (target == part.from || target == part.to) { - if (getBidiPartAt(bidi, target) == pos) return target; - part = bidi[pos += dir]; - return (dir > 0) == part.level % 2 ? part.to : part.from; - } else { - part = bidi[pos += dir]; - if (!part) return null; - if ((dir > 0) == part.level % 2) - target = moveInLine(line, part.to, -1, byUnit); - else - target = moveInLine(line, part.from, 1, byUnit); - } - } - } - - function moveLogically(line, start, dir, byUnit) { - var target = start + dir; - if (byUnit) while (target > 0 && isExtendingChar(line.text.charAt(target))) target += dir; - return target < 0 || target > line.text.length ? null : target; - } - - // Bidirectional ordering algorithm - // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm - // that this (partially) implements. - - // One-char codes used for character types: - // L (L): Left-to-Right - // R (R): Right-to-Left - // r (AL): Right-to-Left Arabic - // 1 (EN): European Number - // + (ES): European Number Separator - // % (ET): European Number Terminator - // n (AN): Arabic Number - // , (CS): Common Number Separator - // m (NSM): Non-Spacing Mark - // b (BN): Boundary Neutral - // s (B): Paragraph Separator - // t (S): Segment Separator - // w (WS): Whitespace - // N (ON): Other Neutrals - - // Returns null if characters are ordered as they appear - // (left-to-right), or an array of sections ({from, to, level} - // objects) in the order in which they occur visually. - var bidiOrdering = (function() { - // Character types for codepoints 0 to 0xff - var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"; - // Character types for codepoints 0x600 to 0x6ff - var arabicTypes = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm"; - function charType(code) { - if (code <= 0xf7) return lowTypes.charAt(code); - else if (0x590 <= code && code <= 0x5f4) return "R"; - else if (0x600 <= code && code <= 0x6ed) return arabicTypes.charAt(code - 0x600); - else if (0x6ee <= code && code <= 0x8ac) return "r"; - else if (0x2000 <= code && code <= 0x200b) return "w"; - else if (code == 0x200c) return "b"; - else return "L"; - } - - var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; - var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; - // Browsers seem to always treat the boundaries of block elements as being L. - var outerType = "L"; - - function BidiSpan(level, from, to) { - this.level = level; - this.from = from; this.to = to; - } - - return function(str) { - if (!bidiRE.test(str)) return false; - var len = str.length, types = []; - for (var i = 0, type; i < len; ++i) - types.push(type = charType(str.charCodeAt(i))); - - // W1. Examine each non-spacing mark (NSM) in the level run, and - // change the type of the NSM to the type of the previous - // character. If the NSM is at the start of the level run, it will - // get the type of sor. - for (var i = 0, prev = outerType; i < len; ++i) { - var type = types[i]; - if (type == "m") types[i] = prev; - else prev = type; - } - - // W2. Search backwards from each instance of a European number - // until the first strong type (R, L, AL, or sor) is found. If an - // AL is found, change the type of the European number to Arabic - // number. - // W3. Change all ALs to R. - for (var i = 0, cur = outerType; i < len; ++i) { - var type = types[i]; - if (type == "1" && cur == "r") types[i] = "n"; - else if (isStrong.test(type)) { cur = type; if (type == "r") types[i] = "R"; } - } - - // W4. A single European separator between two European numbers - // changes to a European number. A single common separator between - // two numbers of the same type changes to that type. - for (var i = 1, prev = types[0]; i < len - 1; ++i) { - var type = types[i]; - if (type == "+" && prev == "1" && types[i+1] == "1") types[i] = "1"; - else if (type == "," && prev == types[i+1] && - (prev == "1" || prev == "n")) types[i] = prev; - prev = type; - } - - // W5. A sequence of European terminators adjacent to European - // numbers changes to all European numbers. - // W6. Otherwise, separators and terminators change to Other - // Neutral. - for (var i = 0; i < len; ++i) { - var type = types[i]; - if (type == ",") types[i] = "N"; - else if (type == "%") { - for (var end = i + 1; end < len && types[end] == "%"; ++end) {} - var replace = (i && types[i-1] == "!") || (end < len && types[end] == "1") ? "1" : "N"; - for (var j = i; j < end; ++j) types[j] = replace; - i = end - 1; - } - } - - // W7. Search backwards from each instance of a European number - // until the first strong type (R, L, or sor) is found. If an L is - // found, then change the type of the European number to L. - for (var i = 0, cur = outerType; i < len; ++i) { - var type = types[i]; - if (cur == "L" && type == "1") types[i] = "L"; - else if (isStrong.test(type)) cur = type; - } - - // N1. A sequence of neutrals takes the direction of the - // surrounding strong text if the text on both sides has the same - // direction. European and Arabic numbers act as if they were R in - // terms of their influence on neutrals. Start-of-level-run (sor) - // and end-of-level-run (eor) are used at level run boundaries. - // N2. Any remaining neutrals take the embedding direction. - for (var i = 0; i < len; ++i) { - if (isNeutral.test(types[i])) { - for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {} - var before = (i ? types[i-1] : outerType) == "L"; - var after = (end < len ? types[end] : outerType) == "L"; - var replace = before || after ? "L" : "R"; - for (var j = i; j < end; ++j) types[j] = replace; - i = end - 1; - } - } - - // Here we depart from the documented algorithm, in order to avoid - // building up an actual levels array. Since there are only three - // levels (0, 1, 2) in an implementation that doesn't take - // explicit embedding into account, we can build up the order on - // the fly, without following the level-based algorithm. - var order = [], m; - for (var i = 0; i < len;) { - if (countsAsLeft.test(types[i])) { - var start = i; - for (++i; i < len && countsAsLeft.test(types[i]); ++i) {} - order.push(new BidiSpan(0, start, i)); - } else { - var pos = i, at = order.length; - for (++i; i < len && types[i] != "L"; ++i) {} - for (var j = pos; j < i;) { - if (countsAsNum.test(types[j])) { - if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j)); - var nstart = j; - for (++j; j < i && countsAsNum.test(types[j]); ++j) {} - order.splice(at, 0, new BidiSpan(2, nstart, j)); - pos = j; - } else ++j; - } - if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i)); - } - } - if (order[0].level == 1 && (m = str.match(/^\s+/))) { - order[0].from = m[0].length; - order.unshift(new BidiSpan(0, 0, m[0].length)); - } - if (lst(order).level == 1 && (m = str.match(/\s+$/))) { - lst(order).to -= m[0].length; - order.push(new BidiSpan(0, len - m[0].length, len)); - } - if (order[0].level != lst(order).level) - order.push(new BidiSpan(order[0].level, len, len)); - - return order; - }; - })(); - - // THE END - - CodeMirror.version = "4.8.0"; - - return CodeMirror; -}); diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/css/css.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/css/css.js deleted file mode 100644 index 55082bf..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/css/css.js +++ /dev/null @@ -1,717 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("css", function(config, parserConfig) { - if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css"); - - var indentUnit = config.indentUnit, - tokenHooks = parserConfig.tokenHooks, - mediaTypes = parserConfig.mediaTypes || {}, - mediaFeatures = parserConfig.mediaFeatures || {}, - propertyKeywords = parserConfig.propertyKeywords || {}, - nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {}, - colorKeywords = parserConfig.colorKeywords || {}, - valueKeywords = parserConfig.valueKeywords || {}, - fontProperties = parserConfig.fontProperties || {}, - allowNested = parserConfig.allowNested; - - var type, override; - function ret(style, tp) { type = tp; return style; } - - // Tokenizers - - function tokenBase(stream, state) { - var ch = stream.next(); - if (tokenHooks[ch]) { - var result = tokenHooks[ch](stream, state); - if (result !== false) return result; - } - if (ch == "@") { - stream.eatWhile(/[\w\\\-]/); - return ret("def", stream.current()); - } else if (ch == "=" || (ch == "~" || ch == "|") && stream.eat("=")) { - return ret(null, "compare"); - } else if (ch == "\"" || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (ch == "#") { - stream.eatWhile(/[\w\\\-]/); - return ret("atom", "hash"); - } else if (ch == "!") { - stream.match(/^\s*\w*/); - return ret("keyword", "important"); - } else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) { - stream.eatWhile(/[\w.%]/); - return ret("number", "unit"); - } else if (ch === "-") { - if (/[\d.]/.test(stream.peek())) { - stream.eatWhile(/[\w.%]/); - return ret("number", "unit"); - } else if (stream.match(/^\w+-/)) { - return ret("meta", "meta"); - } - } else if (/[,+>*\/]/.test(ch)) { - return ret(null, "select-op"); - } else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) { - return ret("qualifier", "qualifier"); - } else if (/[:;{}\[\]\(\)]/.test(ch)) { - return ret(null, ch); - } else if (ch == "u" && stream.match("rl(")) { - stream.backUp(1); - state.tokenize = tokenParenthesized; - return ret("property", "word"); - } else if (/[\w\\\-]/.test(ch)) { - stream.eatWhile(/[\w\\\-]/); - return ret("property", "word"); - } else { - return ret(null, null); - } - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - if (quote == ")") stream.backUp(1); - break; - } - escaped = !escaped && ch == "\\"; - } - if (ch == quote || !escaped && quote != ")") state.tokenize = null; - return ret("string", "string"); - }; - } - - function tokenParenthesized(stream, state) { - stream.next(); // Must be '(' - if (!stream.match(/\s*[\"\')]/, false)) - state.tokenize = tokenString(")"); - else - state.tokenize = null; - return ret(null, "("); - } - - // Context management - - function Context(type, indent, prev) { - this.type = type; - this.indent = indent; - this.prev = prev; - } - - function pushContext(state, stream, type) { - state.context = new Context(type, stream.indentation() + indentUnit, state.context); - return type; - } - - function popContext(state) { - state.context = state.context.prev; - return state.context.type; - } - - function pass(type, stream, state) { - return states[state.context.type](type, stream, state); - } - function popAndPass(type, stream, state, n) { - for (var i = n || 1; i > 0; i--) - state.context = state.context.prev; - return pass(type, stream, state); - } - - // Parser - - function wordAsValue(stream) { - var word = stream.current().toLowerCase(); - if (valueKeywords.hasOwnProperty(word)) - override = "atom"; - else if (colorKeywords.hasOwnProperty(word)) - override = "keyword"; - else - override = "variable"; - } - - var states = {}; - - states.top = function(type, stream, state) { - if (type == "{") { - return pushContext(state, stream, "block"); - } else if (type == "}" && state.context.prev) { - return popContext(state); - } else if (type == "@media") { - return pushContext(state, stream, "media"); - } else if (type == "@font-face") { - return "font_face_before"; - } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) { - return "keyframes"; - } else if (type && type.charAt(0) == "@") { - return pushContext(state, stream, "at"); - } else if (type == "hash") { - override = "builtin"; - } else if (type == "word") { - override = "tag"; - } else if (type == "variable-definition") { - return "maybeprop"; - } else if (type == "interpolation") { - return pushContext(state, stream, "interpolation"); - } else if (type == ":") { - return "pseudo"; - } else if (allowNested && type == "(") { - return pushContext(state, stream, "parens"); - } - return state.context.type; - }; - - states.block = function(type, stream, state) { - if (type == "word") { - var word = stream.current().toLowerCase(); - if (propertyKeywords.hasOwnProperty(word)) { - override = "property"; - return "maybeprop"; - } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) { - override = "string-2"; - return "maybeprop"; - } else if (allowNested) { - override = stream.match(/^\s*:(?:\s|$)/, false) ? "property" : "tag"; - return "block"; - } else { - override += " error"; - return "maybeprop"; - } - } else if (type == "meta") { - return "block"; - } else if (!allowNested && (type == "hash" || type == "qualifier")) { - override = "error"; - return "block"; - } else { - return states.top(type, stream, state); - } - }; - - states.maybeprop = function(type, stream, state) { - if (type == ":") return pushContext(state, stream, "prop"); - return pass(type, stream, state); - }; - - states.prop = function(type, stream, state) { - if (type == ";") return popContext(state); - if (type == "{" && allowNested) return pushContext(state, stream, "propBlock"); - if (type == "}" || type == "{") return popAndPass(type, stream, state); - if (type == "(") return pushContext(state, stream, "parens"); - - if (type == "hash" && !/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(stream.current())) { - override += " error"; - } else if (type == "word") { - wordAsValue(stream); - } else if (type == "interpolation") { - return pushContext(state, stream, "interpolation"); - } - return "prop"; - }; - - states.propBlock = function(type, _stream, state) { - if (type == "}") return popContext(state); - if (type == "word") { override = "property"; return "maybeprop"; } - return state.context.type; - }; - - states.parens = function(type, stream, state) { - if (type == "{" || type == "}") return popAndPass(type, stream, state); - if (type == ")") return popContext(state); - if (type == "(") return pushContext(state, stream, "parens"); - if (type == "word") wordAsValue(stream); - return "parens"; - }; - - states.pseudo = function(type, stream, state) { - if (type == "word") { - override = "variable-3"; - return state.context.type; - } - return pass(type, stream, state); - }; - - states.media = function(type, stream, state) { - if (type == "(") return pushContext(state, stream, "media_parens"); - if (type == "}") return popAndPass(type, stream, state); - if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top"); - - if (type == "word") { - var word = stream.current().toLowerCase(); - if (word == "only" || word == "not" || word == "and") - override = "keyword"; - else if (mediaTypes.hasOwnProperty(word)) - override = "attribute"; - else if (mediaFeatures.hasOwnProperty(word)) - override = "property"; - else - override = "error"; - } - return state.context.type; - }; - - states.media_parens = function(type, stream, state) { - if (type == ")") return popContext(state); - if (type == "{" || type == "}") return popAndPass(type, stream, state, 2); - return states.media(type, stream, state); - }; - - states.font_face_before = function(type, stream, state) { - if (type == "{") - return pushContext(state, stream, "font_face"); - return pass(type, stream, state); - }; - - states.font_face = function(type, stream, state) { - if (type == "}") return popContext(state); - if (type == "word") { - if (!fontProperties.hasOwnProperty(stream.current().toLowerCase())) - override = "error"; - else - override = "property"; - return "maybeprop"; - } - return "font_face"; - }; - - states.keyframes = function(type, stream, state) { - if (type == "word") { override = "variable"; return "keyframes"; } - if (type == "{") return pushContext(state, stream, "top"); - return pass(type, stream, state); - }; - - states.at = function(type, stream, state) { - if (type == ";") return popContext(state); - if (type == "{" || type == "}") return popAndPass(type, stream, state); - if (type == "word") override = "tag"; - else if (type == "hash") override = "builtin"; - return "at"; - }; - - states.interpolation = function(type, stream, state) { - if (type == "}") return popContext(state); - if (type == "{" || type == ";") return popAndPass(type, stream, state); - if (type != "variable") override = "error"; - return "interpolation"; - }; - - return { - startState: function(base) { - return {tokenize: null, - state: "top", - context: new Context("top", base || 0, null)}; - }, - - token: function(stream, state) { - if (!state.tokenize && stream.eatSpace()) return null; - var style = (state.tokenize || tokenBase)(stream, state); - if (style && typeof style == "object") { - type = style[1]; - style = style[0]; - } - override = style; - state.state = states[state.state](type, stream, state); - return override; - }, - - indent: function(state, textAfter) { - var cx = state.context, ch = textAfter && textAfter.charAt(0); - var indent = cx.indent; - if (cx.type == "prop" && (ch == "}" || ch == ")")) cx = cx.prev; - if (cx.prev && - (ch == "}" && (cx.type == "block" || cx.type == "top" || cx.type == "interpolation" || cx.type == "font_face") || - ch == ")" && (cx.type == "parens" || cx.type == "media_parens") || - ch == "{" && (cx.type == "at" || cx.type == "media"))) { - indent = cx.indent - indentUnit; - cx = cx.prev; - } - return indent; - }, - - electricChars: "}", - blockCommentStart: "/*", - blockCommentEnd: "*/", - fold: "brace" - }; -}); - - function keySet(array) { - var keys = {}; - for (var i = 0; i < array.length; ++i) { - keys[array[i]] = true; - } - return keys; - } - - var mediaTypes_ = [ - "all", "aural", "braille", "handheld", "print", "projection", "screen", - "tty", "tv", "embossed" - ], mediaTypes = keySet(mediaTypes_); - - var mediaFeatures_ = [ - "width", "min-width", "max-width", "height", "min-height", "max-height", - "device-width", "min-device-width", "max-device-width", "device-height", - "min-device-height", "max-device-height", "aspect-ratio", - "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio", - "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color", - "max-color", "color-index", "min-color-index", "max-color-index", - "monochrome", "min-monochrome", "max-monochrome", "resolution", - "min-resolution", "max-resolution", "scan", "grid" - ], mediaFeatures = keySet(mediaFeatures_); - - var propertyKeywords_ = [ - "align-content", "align-items", "align-self", "alignment-adjust", - "alignment-baseline", "anchor-point", "animation", "animation-delay", - "animation-direction", "animation-duration", "animation-fill-mode", - "animation-iteration-count", "animation-name", "animation-play-state", - "animation-timing-function", "appearance", "azimuth", "backface-visibility", - "background", "background-attachment", "background-clip", "background-color", - "background-image", "background-origin", "background-position", - "background-repeat", "background-size", "baseline-shift", "binding", - "bleed", "bookmark-label", "bookmark-level", "bookmark-state", - "bookmark-target", "border", "border-bottom", "border-bottom-color", - "border-bottom-left-radius", "border-bottom-right-radius", - "border-bottom-style", "border-bottom-width", "border-collapse", - "border-color", "border-image", "border-image-outset", - "border-image-repeat", "border-image-slice", "border-image-source", - "border-image-width", "border-left", "border-left-color", - "border-left-style", "border-left-width", "border-radius", "border-right", - "border-right-color", "border-right-style", "border-right-width", - "border-spacing", "border-style", "border-top", "border-top-color", - "border-top-left-radius", "border-top-right-radius", "border-top-style", - "border-top-width", "border-width", "bottom", "box-decoration-break", - "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", - "caption-side", "clear", "clip", "color", "color-profile", "column-count", - "column-fill", "column-gap", "column-rule", "column-rule-color", - "column-rule-style", "column-rule-width", "column-span", "column-width", - "columns", "content", "counter-increment", "counter-reset", "crop", "cue", - "cue-after", "cue-before", "cursor", "direction", "display", - "dominant-baseline", "drop-initial-after-adjust", - "drop-initial-after-align", "drop-initial-before-adjust", - "drop-initial-before-align", "drop-initial-size", "drop-initial-value", - "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis", - "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", - "float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings", - "font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust", - "font-stretch", "font-style", "font-synthesis", "font-variant", - "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", - "font-variant-ligatures", "font-variant-numeric", "font-variant-position", - "font-weight", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow", - "grid-auto-position", "grid-auto-rows", "grid-column", "grid-column-end", - "grid-column-start", "grid-row", "grid-row-end", "grid-row-start", - "grid-template", "grid-template-areas", "grid-template-columns", - "grid-template-rows", "hanging-punctuation", "height", "hyphens", - "icon", "image-orientation", "image-rendering", "image-resolution", - "inline-box-align", "justify-content", "left", "letter-spacing", - "line-break", "line-height", "line-stacking", "line-stacking-ruby", - "line-stacking-shift", "line-stacking-strategy", "list-style", - "list-style-image", "list-style-position", "list-style-type", "margin", - "margin-bottom", "margin-left", "margin-right", "margin-top", - "marker-offset", "marks", "marquee-direction", "marquee-loop", - "marquee-play-count", "marquee-speed", "marquee-style", "max-height", - "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index", - "nav-left", "nav-right", "nav-up", "object-fit", "object-position", - "opacity", "order", "orphans", "outline", - "outline-color", "outline-offset", "outline-style", "outline-width", - "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y", - "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", - "page", "page-break-after", "page-break-before", "page-break-inside", - "page-policy", "pause", "pause-after", "pause-before", "perspective", - "perspective-origin", "pitch", "pitch-range", "play-during", "position", - "presentation-level", "punctuation-trim", "quotes", "region-break-after", - "region-break-before", "region-break-inside", "region-fragment", - "rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness", - "right", "rotation", "rotation-point", "ruby-align", "ruby-overhang", - "ruby-position", "ruby-span", "shape-image-threshold", "shape-inside", "shape-margin", - "shape-outside", "size", "speak", "speak-as", "speak-header", - "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", - "tab-size", "table-layout", "target", "target-name", "target-new", - "target-position", "text-align", "text-align-last", "text-decoration", - "text-decoration-color", "text-decoration-line", "text-decoration-skip", - "text-decoration-style", "text-emphasis", "text-emphasis-color", - "text-emphasis-position", "text-emphasis-style", "text-height", - "text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow", - "text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position", - "text-wrap", "top", "transform", "transform-origin", "transform-style", - "transition", "transition-delay", "transition-duration", - "transition-property", "transition-timing-function", "unicode-bidi", - "vertical-align", "visibility", "voice-balance", "voice-duration", - "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", - "voice-volume", "volume", "white-space", "widows", "width", "word-break", - "word-spacing", "word-wrap", "z-index", - // SVG-specific - "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color", - "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events", - "color-interpolation", "color-interpolation-filters", - "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering", - "marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke", - "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", - "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering", - "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal", - "glyph-orientation-vertical", "text-anchor", "writing-mode" - ], propertyKeywords = keySet(propertyKeywords_); - - var nonStandardPropertyKeywords_ = [ - "scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color", - "scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color", - "scrollbar-3d-light-color", "scrollbar-track-color", "shape-inside", - "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", - "searchfield-results-decoration", "zoom" - ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_); - - var colorKeywords_ = [ - "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", - "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", - "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", - "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", - "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", - "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", - "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", - "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", - "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", - "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", - "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", - "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", - "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink", - "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", - "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", - "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", - "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", - "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", - "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", - "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", - "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", - "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", - "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", - "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", - "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", - "whitesmoke", "yellow", "yellowgreen" - ], colorKeywords = keySet(colorKeywords_); - - var valueKeywords_ = [ - "above", "absolute", "activeborder", "activecaption", "afar", - "after-white-space", "ahead", "alias", "all", "all-scroll", "alternate", - "always", "amharic", "amharic-abegede", "antialiased", "appworkspace", - "arabic-indic", "armenian", "asterisks", "auto", "avoid", "avoid-column", "avoid-page", - "avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary", - "bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", - "both", "bottom", "break", "break-all", "break-word", "button", "button-bevel", - "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "cambodian", - "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", - "cell", "center", "checkbox", "circle", "cjk-earthly-branch", - "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote", - "col-resize", "collapse", "column", "compact", "condensed", "contain", "content", - "content-box", "context-menu", "continuous", "copy", "cover", "crop", - "cross", "crosshair", "currentcolor", "cursive", "dashed", "decimal", - "decimal-leading-zero", "default", "default-button", "destination-atop", - "destination-in", "destination-out", "destination-over", "devanagari", - "disc", "discard", "document", "dot-dash", "dot-dot-dash", "dotted", - "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", - "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede", - "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er", - "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", - "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et", - "ethiopic-halehame-gez", "ethiopic-halehame-om-et", - "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et", - "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", - "ethiopic-halehame-tig", "ew-resize", "expanded", "extra-condensed", - "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "footnotes", - "forwards", "from", "geometricPrecision", "georgian", "graytext", "groove", - "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hebrew", - "help", "hidden", "hide", "higher", "highlight", "highlighttext", - "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "icon", "ignore", - "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", - "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", - "inline-block", "inline-table", "inset", "inside", "intrinsic", "invert", - "italic", "justify", "kannada", "katakana", "katakana-iroha", "keep-all", "khmer", - "landscape", "lao", "large", "larger", "left", "level", "lighter", - "line-through", "linear", "lines", "list-item", "listbox", "listitem", - "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", - "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian", - "lower-roman", "lowercase", "ltr", "malayalam", "match", - "media-controls-background", "media-current-time-display", - "media-fullscreen-button", "media-mute-button", "media-play-button", - "media-return-to-realtime-button", "media-rewind-button", - "media-seek-back-button", "media-seek-forward-button", "media-slider", - "media-sliderthumb", "media-time-remaining-display", "media-volume-slider", - "media-volume-slider-container", "media-volume-sliderthumb", "medium", - "menu", "menulist", "menulist-button", "menulist-text", - "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", - "mix", "mongolian", "monospace", "move", "multiple", "myanmar", "n-resize", - "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", - "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", - "ns-resize", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote", - "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset", - "outside", "outside-shape", "overlay", "overline", "padding", "padding-box", - "painted", "page", "paused", "persian", "plus-darker", "plus-lighter", "pointer", - "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button", - "radio", "read-only", "read-write", "read-write-plaintext-only", "rectangle", "region", - "relative", "repeat", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba", - "ridge", "right", "round", "row-resize", "rtl", "run-in", "running", - "s-resize", "sans-serif", "scroll", "scrollbar", "se-resize", "searchfield", - "searchfield-cancel-button", "searchfield-decoration", - "searchfield-results-button", "searchfield-results-decoration", - "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama", - "single", "skip-white-space", "slide", "slider-horizontal", - "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", - "small", "small-caps", "small-caption", "smaller", "solid", "somali", - "source-atop", "source-in", "source-out", "source-over", "space", "square", - "square-button", "start", "static", "status-bar", "stretch", "stroke", - "sub", "subpixel-antialiased", "super", "sw-resize", "table", - "table-caption", "table-cell", "table-column", "table-column-group", - "table-footer-group", "table-header-group", "table-row", "table-row-group", - "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", - "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", - "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", - "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top", - "transparent", "ultra-condensed", "ultra-expanded", "underline", "up", - "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal", - "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", - "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted", - "visibleStroke", "visual", "w-resize", "wait", "wave", "wider", - "window", "windowframe", "windowtext", "x-large", "x-small", "xor", - "xx-large", "xx-small" - ], valueKeywords = keySet(valueKeywords_); - - var fontProperties_ = [ - "font-family", "src", "unicode-range", "font-variant", "font-feature-settings", - "font-stretch", "font-weight", "font-style" - ], fontProperties = keySet(fontProperties_); - - var allWords = mediaTypes_.concat(mediaFeatures_).concat(propertyKeywords_) - .concat(nonStandardPropertyKeywords_).concat(colorKeywords_).concat(valueKeywords_); - CodeMirror.registerHelper("hintWords", "css", allWords); - - function tokenCComment(stream, state) { - var maybeEnd = false, ch; - while ((ch = stream.next()) != null) { - if (maybeEnd && ch == "/") { - state.tokenize = null; - break; - } - maybeEnd = (ch == "*"); - } - return ["comment", "comment"]; - } - - function tokenSGMLComment(stream, state) { - if (stream.skipTo("-->")) { - stream.match("-->"); - state.tokenize = null; - } else { - stream.skipToEnd(); - } - return ["comment", "comment"]; - } - - CodeMirror.defineMIME("text/css", { - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - fontProperties: fontProperties, - tokenHooks: { - "<": function(stream, state) { - if (!stream.match("!--")) return false; - state.tokenize = tokenSGMLComment; - return tokenSGMLComment(stream, state); - }, - "/": function(stream, state) { - if (!stream.eat("*")) return false; - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } - }, - name: "css" - }); - - CodeMirror.defineMIME("text/x-scss", { - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - fontProperties: fontProperties, - allowNested: true, - tokenHooks: { - "/": function(stream, state) { - if (stream.eat("/")) { - stream.skipToEnd(); - return ["comment", "comment"]; - } else if (stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } else { - return ["operator", "operator"]; - } - }, - ":": function(stream) { - if (stream.match(/\s*\{/)) - return [null, "{"]; - return false; - }, - "$": function(stream) { - stream.match(/^[\w-]+/); - if (stream.match(/^\s*:/, false)) - return ["variable-2", "variable-definition"]; - return ["variable-2", "variable"]; - }, - "#": function(stream) { - if (!stream.eat("{")) return false; - return [null, "interpolation"]; - } - }, - name: "css", - helperType: "scss" - }); - - CodeMirror.defineMIME("text/x-less", { - mediaTypes: mediaTypes, - mediaFeatures: mediaFeatures, - propertyKeywords: propertyKeywords, - nonStandardPropertyKeywords: nonStandardPropertyKeywords, - colorKeywords: colorKeywords, - valueKeywords: valueKeywords, - fontProperties: fontProperties, - allowNested: true, - tokenHooks: { - "/": function(stream, state) { - if (stream.eat("/")) { - stream.skipToEnd(); - return ["comment", "comment"]; - } else if (stream.eat("*")) { - state.tokenize = tokenCComment; - return tokenCComment(stream, state); - } else { - return ["operator", "operator"]; - } - }, - "@": function(stream) { - if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/, false)) return false; - stream.eatWhile(/[\w\\\-]/); - if (stream.match(/^\s*:/, false)) - return ["variable-2", "variable-definition"]; - return ["variable-2", "variable"]; - }, - "&": function() { - return ["atom", "atom"]; - } - }, - name: "css", - helperType: "less" - }); - -}); diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/gfm/gfm.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/gfm/gfm.js deleted file mode 100644 index 80a8e2c..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/gfm/gfm.js +++ /dev/null @@ -1,123 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../markdown/markdown"), require("../../addon/mode/overlay")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../markdown/markdown", "../../addon/mode/overlay"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("gfm", function(config, modeConfig) { - var codeDepth = 0; - function blankLine(state) { - state.code = false; - return null; - } - var gfmOverlay = { - startState: function() { - return { - code: false, - codeBlock: false, - ateSpace: false - }; - }, - copyState: function(s) { - return { - code: s.code, - codeBlock: s.codeBlock, - ateSpace: s.ateSpace - }; - }, - token: function(stream, state) { - state.combineTokens = null; - - // Hack to prevent formatting override inside code blocks (block and inline) - if (state.codeBlock) { - if (stream.match(/^```/)) { - state.codeBlock = false; - return null; - } - stream.skipToEnd(); - return null; - } - if (stream.sol()) { - state.code = false; - } - if (stream.sol() && stream.match(/^```/)) { - stream.skipToEnd(); - state.codeBlock = true; - return null; - } - // If this block is changed, it may need to be updated in Markdown mode - if (stream.peek() === '`') { - stream.next(); - var before = stream.pos; - stream.eatWhile('`'); - var difference = 1 + stream.pos - before; - if (!state.code) { - codeDepth = difference; - state.code = true; - } else { - if (difference === codeDepth) { // Must be exact - state.code = false; - } - } - return null; - } else if (state.code) { - stream.next(); - return null; - } - // Check if space. If so, links can be formatted later on - if (stream.eatSpace()) { - state.ateSpace = true; - return null; - } - if (stream.sol() || state.ateSpace) { - state.ateSpace = false; - if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/)) { - // User/Project@SHA - // User@SHA - // SHA - state.combineTokens = true; - return "link"; - } else if (stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) { - // User/Project#Num - // User#Num - // #Num - state.combineTokens = true; - return "link"; - } - } - if (stream.match(/^((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i) && - stream.string.slice(stream.start - 2, stream.start) != "](") { - // URLs - // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls - // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine - state.combineTokens = true; - return "link"; - } - stream.next(); - return null; - }, - blankLine: blankLine - }; - - var markdownConfig = { - underscoresBreakWords: false, - taskLists: true, - fencedCodeBlocks: true, - strikethrough: true - }; - for (var attr in modeConfig) { - markdownConfig[attr] = modeConfig[attr]; - } - markdownConfig.name = "markdown"; - CodeMirror.defineMIME("gfmBase", markdownConfig); - return CodeMirror.overlayMode(CodeMirror.getMode(config, "gfmBase"), gfmOverlay); -}, "markdown"); - -}); diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/htmlmixed/htmlmixed.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/htmlmixed/htmlmixed.js deleted file mode 100644 index 1cc438f..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/htmlmixed/htmlmixed.js +++ /dev/null @@ -1,121 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript"), require("../css/css")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript", "../css/css"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("htmlmixed", function(config, parserConfig) { - var htmlMode = CodeMirror.getMode(config, {name: "xml", - htmlMode: true, - multilineTagIndentFactor: parserConfig.multilineTagIndentFactor, - multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag}); - var cssMode = CodeMirror.getMode(config, "css"); - - var scriptTypes = [], scriptTypesConf = parserConfig && parserConfig.scriptTypes; - scriptTypes.push({matches: /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i, - mode: CodeMirror.getMode(config, "javascript")}); - if (scriptTypesConf) for (var i = 0; i < scriptTypesConf.length; ++i) { - var conf = scriptTypesConf[i]; - scriptTypes.push({matches: conf.matches, mode: conf.mode && CodeMirror.getMode(config, conf.mode)}); - } - scriptTypes.push({matches: /./, - mode: CodeMirror.getMode(config, "text/plain")}); - - function html(stream, state) { - var tagName = state.htmlState.tagName; - if (tagName) tagName = tagName.toLowerCase(); - var style = htmlMode.token(stream, state.htmlState); - if (tagName == "script" && /\btag\b/.test(style) && stream.current() == ">") { - // Script block: mode to change to depends on type attribute - var scriptType = stream.string.slice(Math.max(0, stream.pos - 100), stream.pos).match(/\btype\s*=\s*("[^"]+"|'[^']+'|\S+)[^<]*$/i); - scriptType = scriptType ? scriptType[1] : ""; - if (scriptType && /[\"\']/.test(scriptType.charAt(0))) scriptType = scriptType.slice(1, scriptType.length - 1); - for (var i = 0; i < scriptTypes.length; ++i) { - var tp = scriptTypes[i]; - if (typeof tp.matches == "string" ? scriptType == tp.matches : tp.matches.test(scriptType)) { - if (tp.mode) { - state.token = script; - state.localMode = tp.mode; - state.localState = tp.mode.startState && tp.mode.startState(htmlMode.indent(state.htmlState, "")); - } - break; - } - } - } else if (tagName == "style" && /\btag\b/.test(style) && stream.current() == ">") { - state.token = css; - state.localMode = cssMode; - state.localState = cssMode.startState(htmlMode.indent(state.htmlState, "")); - } - return style; - } - function maybeBackup(stream, pat, style) { - var cur = stream.current(); - var close = cur.search(pat), m; - if (close > -1) stream.backUp(cur.length - close); - else if (m = cur.match(/<\/?$/)) { - stream.backUp(cur.length); - if (!stream.match(pat, false)) stream.match(cur); - } - return style; - } - function script(stream, state) { - if (stream.match(/^<\/\s*script\s*>/i, false)) { - state.token = html; - state.localState = state.localMode = null; - return null; - } - return maybeBackup(stream, /<\/\s*script\s*>/, - state.localMode.token(stream, state.localState)); - } - function css(stream, state) { - if (stream.match(/^<\/\s*style\s*>/i, false)) { - state.token = html; - state.localState = state.localMode = null; - return null; - } - return maybeBackup(stream, /<\/\s*style\s*>/, - cssMode.token(stream, state.localState)); - } - - return { - startState: function() { - var state = htmlMode.startState(); - return {token: html, localMode: null, localState: null, htmlState: state}; - }, - - copyState: function(state) { - if (state.localState) - var local = CodeMirror.copyState(state.localMode, state.localState); - return {token: state.token, localMode: state.localMode, localState: local, - htmlState: CodeMirror.copyState(htmlMode, state.htmlState)}; - }, - - token: function(stream, state) { - return state.token(stream, state); - }, - - indent: function(state, textAfter) { - if (!state.localMode || /^\s*<\//.test(textAfter)) - return htmlMode.indent(state.htmlState, textAfter); - else if (state.localMode.indent) - return state.localMode.indent(state.localState, textAfter); - else - return CodeMirror.Pass; - }, - - innerMode: function(state) { - return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode}; - } - }; -}, "xml", "javascript", "css"); - -CodeMirror.defineMIME("text/html", "htmlmixed"); - -}); diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/javascript/javascript.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/javascript/javascript.js deleted file mode 100644 index b0ba8d0..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/javascript/javascript.js +++ /dev/null @@ -1,684 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// TODO actually recognize syntax of TypeScript constructs - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("javascript", function(config, parserConfig) { - var indentUnit = config.indentUnit; - var statementIndent = parserConfig.statementIndent; - var jsonldMode = parserConfig.jsonld; - var jsonMode = parserConfig.json || jsonldMode; - var isTS = parserConfig.typescript; - var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/; - - // Tokenizer - - var keywords = function(){ - function kw(type) {return {type: type, style: "keyword"};} - var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); - var operator = kw("operator"), atom = {type: "atom", style: "atom"}; - - var jsKeywords = { - "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, - "return": C, "break": C, "continue": C, "new": C, "delete": C, "throw": C, "debugger": C, - "var": kw("var"), "const": kw("var"), "let": kw("var"), - "function": kw("function"), "catch": kw("catch"), - "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), - "in": operator, "typeof": operator, "instanceof": operator, - "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, - "this": kw("this"), "module": kw("module"), "class": kw("class"), "super": kw("atom"), - "yield": C, "export": kw("export"), "import": kw("import"), "extends": C - }; - - // Extend the 'normal' keywords with the TypeScript language extensions - if (isTS) { - var type = {type: "variable", style: "variable-3"}; - var tsKeywords = { - // object-like things - "interface": kw("interface"), - "extends": kw("extends"), - "constructor": kw("constructor"), - - // scope modifiers - "public": kw("public"), - "private": kw("private"), - "protected": kw("protected"), - "static": kw("static"), - - // types - "string": type, "number": type, "bool": type, "any": type - }; - - for (var attr in tsKeywords) { - jsKeywords[attr] = tsKeywords[attr]; - } - } - - return jsKeywords; - }(); - - var isOperatorChar = /[+\-*&%=<>!?|~^]/; - var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; - - function readRegexp(stream) { - var escaped = false, next, inSet = false; - while ((next = stream.next()) != null) { - if (!escaped) { - if (next == "/" && !inSet) return; - if (next == "[") inSet = true; - else if (inSet && next == "]") inSet = false; - } - escaped = !escaped && next == "\\"; - } - } - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - function ret(tp, style, cont) { - type = tp; content = cont; - return style; - } - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) { - return ret("number", "number"); - } else if (ch == "." && stream.match("..")) { - return ret("spread", "meta"); - } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - return ret(ch); - } else if (ch == "=" && stream.eat(">")) { - return ret("=>", "operator"); - } else if (ch == "0" && stream.eat(/x/i)) { - stream.eatWhile(/[\da-f]/i); - return ret("number", "number"); - } else if (/\d/.test(ch)) { - stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/); - return ret("number", "number"); - } else if (ch == "/") { - if (stream.eat("*")) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } else if (stream.eat("/")) { - stream.skipToEnd(); - return ret("comment", "comment"); - } else if (state.lastType == "operator" || state.lastType == "keyword c" || - state.lastType == "sof" || /^[\[{}\(,;:]$/.test(state.lastType)) { - readRegexp(stream); - stream.eatWhile(/[gimy]/); // 'y' is "sticky" option in Mozilla - return ret("regexp", "string-2"); - } else { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator", stream.current()); - } - } else if (ch == "`") { - state.tokenize = tokenQuasi; - return tokenQuasi(stream, state); - } else if (ch == "#") { - stream.skipToEnd(); - return ret("error", "error"); - } else if (isOperatorChar.test(ch)) { - stream.eatWhile(isOperatorChar); - return ret("operator", "operator", stream.current()); - } else if (wordRE.test(ch)) { - stream.eatWhile(wordRE); - var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; - return (known && state.lastType != ".") ? ret(known.type, known.style, word) : - ret("variable", "variable", word); - } - } - - function tokenString(quote) { - return function(stream, state) { - var escaped = false, next; - if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){ - state.tokenize = tokenBase; - return ret("jsonld-keyword", "meta"); - } - while ((next = stream.next()) != null) { - if (next == quote && !escaped) break; - escaped = !escaped && next == "\\"; - } - if (!escaped) state.tokenize = tokenBase; - return ret("string", "string"); - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, ch; - while (ch = stream.next()) { - if (ch == "/" && maybeEnd) { - state.tokenize = tokenBase; - break; - } - maybeEnd = (ch == "*"); - } - return ret("comment", "comment"); - } - - function tokenQuasi(stream, state) { - var escaped = false, next; - while ((next = stream.next()) != null) { - if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) { - state.tokenize = tokenBase; - break; - } - escaped = !escaped && next == "\\"; - } - return ret("quasi", "string-2", stream.current()); - } - - var brackets = "([{}])"; - // This is a crude lookahead trick to try and notice that we're - // parsing the argument patterns for a fat-arrow function before we - // actually hit the arrow token. It only works if the arrow is on - // the same line as the arguments and there's no strange noise - // (comments) in between. Fallback is to only notice when we hit the - // arrow, and not declare the arguments as locals for the arrow - // body. - function findFatArrow(stream, state) { - if (state.fatArrowAt) state.fatArrowAt = null; - var arrow = stream.string.indexOf("=>", stream.start); - if (arrow < 0) return; - - var depth = 0, sawSomething = false; - for (var pos = arrow - 1; pos >= 0; --pos) { - var ch = stream.string.charAt(pos); - var bracket = brackets.indexOf(ch); - if (bracket >= 0 && bracket < 3) { - if (!depth) { ++pos; break; } - if (--depth == 0) break; - } else if (bracket >= 3 && bracket < 6) { - ++depth; - } else if (wordRE.test(ch)) { - sawSomething = true; - } else if (sawSomething && !depth) { - ++pos; - break; - } - } - if (sawSomething && !depth) state.fatArrowAt = pos; - } - - // Parser - - var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true}; - - function JSLexical(indented, column, type, align, prev, info) { - this.indented = indented; - this.column = column; - this.type = type; - this.prev = prev; - this.info = info; - if (align != null) this.align = align; - } - - function inScope(state, varname) { - for (var v = state.localVars; v; v = v.next) - if (v.name == varname) return true; - for (var cx = state.context; cx; cx = cx.prev) { - for (var v = cx.vars; v; v = v.next) - if (v.name == varname) return true; - } - } - - function parseJS(state, style, type, content, stream) { - var cc = state.cc; - // Communicate our context to the combinators. - // (Less wasteful than consing up a hundred closures on every call.) - cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style; - - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = true; - - while(true) { - var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; - if (combinator(type, content)) { - while(cc.length && cc[cc.length - 1].lex) - cc.pop()(); - if (cx.marked) return cx.marked; - if (type == "variable" && inScope(state, content)) return "variable-2"; - return style; - } - } - } - - // Combinator utils - - var cx = {state: null, column: null, marked: null, cc: null}; - function pass() { - for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - function register(varname) { - function inList(list) { - for (var v = list; v; v = v.next) - if (v.name == varname) return true; - return false; - } - var state = cx.state; - if (state.context) { - cx.marked = "def"; - if (inList(state.localVars)) return; - state.localVars = {name: varname, next: state.localVars}; - } else { - if (inList(state.globalVars)) return; - if (parserConfig.globalVars) - state.globalVars = {name: varname, next: state.globalVars}; - } - } - - // Combinators - - var defaultVars = {name: "this", next: {name: "arguments"}}; - function pushcontext() { - cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; - cx.state.localVars = defaultVars; - } - function popcontext() { - cx.state.localVars = cx.state.context.vars; - cx.state.context = cx.state.context.prev; - } - function pushlex(type, info) { - var result = function() { - var state = cx.state, indent = state.indented; - if (state.lexical.type == "stat") indent = state.lexical.indented; - else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev) - indent = outer.indented; - state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info); - }; - result.lex = true; - return result; - } - function poplex() { - var state = cx.state; - if (state.lexical.prev) { - if (state.lexical.type == ")") - state.indented = state.lexical.indented; - state.lexical = state.lexical.prev; - } - } - poplex.lex = true; - - function expect(wanted) { - function exp(type) { - if (type == wanted) return cont(); - else if (wanted == ";") return pass(); - else return cont(exp); - }; - return exp; - } - - function statement(type, value) { - if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex); - if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); - if (type == "keyword b") return cont(pushlex("form"), statement, poplex); - if (type == "{") return cont(pushlex("}"), block, poplex); - if (type == ";") return cont(); - if (type == "if") { - if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex) - cx.state.cc.pop()(); - return cont(pushlex("form"), expression, statement, poplex, maybeelse); - } - if (type == "function") return cont(functiondef); - if (type == "for") return cont(pushlex("form"), forspec, statement, poplex); - if (type == "variable") return cont(pushlex("stat"), maybelabel); - if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), - block, poplex, poplex); - if (type == "case") return cont(expression, expect(":")); - if (type == "default") return cont(expect(":")); - if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), - statement, poplex, popcontext); - if (type == "module") return cont(pushlex("form"), pushcontext, afterModule, popcontext, poplex); - if (type == "class") return cont(pushlex("form"), className, poplex); - if (type == "export") return cont(pushlex("form"), afterExport, poplex); - if (type == "import") return cont(pushlex("form"), afterImport, poplex); - return pass(pushlex("stat"), expression, expect(";"), poplex); - } - function expression(type) { - return expressionInner(type, false); - } - function expressionNoComma(type) { - return expressionInner(type, true); - } - function expressionInner(type, noComma) { - if (cx.state.fatArrowAt == cx.stream.start) { - var body = noComma ? arrowBodyNoComma : arrowBody; - if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext); - else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext); - } - - var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; - if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); - if (type == "function") return cont(functiondef, maybeop); - if (type == "keyword c") return cont(noComma ? maybeexpressionNoComma : maybeexpression); - if (type == "(") return cont(pushlex(")"), maybeexpression, comprehension, expect(")"), poplex, maybeop); - if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression); - if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop); - if (type == "{") return contCommasep(objprop, "}", null, maybeop); - if (type == "quasi") { return pass(quasi, maybeop); } - return cont(); - } - function maybeexpression(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expression); - } - function maybeexpressionNoComma(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expressionNoComma); - } - - function maybeoperatorComma(type, value) { - if (type == ",") return cont(expression); - return maybeoperatorNoComma(type, value, false); - } - function maybeoperatorNoComma(type, value, noComma) { - var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; - var expr = noComma == false ? expression : expressionNoComma; - if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext); - if (type == "operator") { - if (/\+\+|--/.test(value)) return cont(me); - if (value == "?") return cont(expression, expect(":"), expr); - return cont(expr); - } - if (type == "quasi") { return pass(quasi, me); } - if (type == ";") return; - if (type == "(") return contCommasep(expressionNoComma, ")", "call", me); - if (type == ".") return cont(property, me); - if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me); - } - function quasi(type, value) { - if (type != "quasi") return pass(); - if (value.slice(value.length - 2) != "${") return cont(quasi); - return cont(expression, continueQuasi); - } - function continueQuasi(type) { - if (type == "}") { - cx.marked = "string-2"; - cx.state.tokenize = tokenQuasi; - return cont(quasi); - } - } - function arrowBody(type) { - findFatArrow(cx.stream, cx.state); - return pass(type == "{" ? statement : expression); - } - function arrowBodyNoComma(type) { - findFatArrow(cx.stream, cx.state); - return pass(type == "{" ? statement : expressionNoComma); - } - function maybelabel(type) { - if (type == ":") return cont(poplex, statement); - return pass(maybeoperatorComma, expect(";"), poplex); - } - function property(type) { - if (type == "variable") {cx.marked = "property"; return cont();} - } - function objprop(type, value) { - if (type == "variable" || cx.style == "keyword") { - cx.marked = "property"; - if (value == "get" || value == "set") return cont(getterSetter); - return cont(afterprop); - } else if (type == "number" || type == "string") { - cx.marked = jsonldMode ? "property" : (cx.style + " property"); - return cont(afterprop); - } else if (type == "jsonld-keyword") { - return cont(afterprop); - } else if (type == "[") { - return cont(expression, expect("]"), afterprop); - } - } - function getterSetter(type) { - if (type != "variable") return pass(afterprop); - cx.marked = "property"; - return cont(functiondef); - } - function afterprop(type) { - if (type == ":") return cont(expressionNoComma); - if (type == "(") return pass(functiondef); - } - function commasep(what, end) { - function proceed(type) { - if (type == ",") { - var lex = cx.state.lexical; - if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; - return cont(what, proceed); - } - if (type == end) return cont(); - return cont(expect(end)); - } - return function(type) { - if (type == end) return cont(); - return pass(what, proceed); - }; - } - function contCommasep(what, end, info) { - for (var i = 3; i < arguments.length; i++) - cx.cc.push(arguments[i]); - return cont(pushlex(end, info), commasep(what, end), poplex); - } - function block(type) { - if (type == "}") return cont(); - return pass(statement, block); - } - function maybetype(type) { - if (isTS && type == ":") return cont(typedef); - } - function typedef(type) { - if (type == "variable"){cx.marked = "variable-3"; return cont();} - } - function vardef() { - return pass(pattern, maybetype, maybeAssign, vardefCont); - } - function pattern(type, value) { - if (type == "variable") { register(value); return cont(); } - if (type == "[") return contCommasep(pattern, "]"); - if (type == "{") return contCommasep(proppattern, "}"); - } - function proppattern(type, value) { - if (type == "variable" && !cx.stream.match(/^\s*:/, false)) { - register(value); - return cont(maybeAssign); - } - if (type == "variable") cx.marked = "property"; - return cont(expect(":"), pattern, maybeAssign); - } - function maybeAssign(_type, value) { - if (value == "=") return cont(expressionNoComma); - } - function vardefCont(type) { - if (type == ",") return cont(vardef); - } - function maybeelse(type, value) { - if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex); - } - function forspec(type) { - if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex); - } - function forspec1(type) { - if (type == "var") return cont(vardef, expect(";"), forspec2); - if (type == ";") return cont(forspec2); - if (type == "variable") return cont(formaybeinof); - return pass(expression, expect(";"), forspec2); - } - function formaybeinof(_type, value) { - if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } - return cont(maybeoperatorComma, forspec2); - } - function forspec2(type, value) { - if (type == ";") return cont(forspec3); - if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } - return pass(expression, expect(";"), forspec3); - } - function forspec3(type) { - if (type != ")") cont(expression); - } - function functiondef(type, value) { - if (value == "*") {cx.marked = "keyword"; return cont(functiondef);} - if (type == "variable") {register(value); return cont(functiondef);} - if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, statement, popcontext); - } - function funarg(type) { - if (type == "spread") return cont(funarg); - return pass(pattern, maybetype); - } - function className(type, value) { - if (type == "variable") {register(value); return cont(classNameAfter);} - } - function classNameAfter(type, value) { - if (value == "extends") return cont(expression, classNameAfter); - if (type == "{") return cont(pushlex("}"), classBody, poplex); - } - function classBody(type, value) { - if (type == "variable" || cx.style == "keyword") { - cx.marked = "property"; - if (value == "get" || value == "set") return cont(classGetterSetter, functiondef, classBody); - return cont(functiondef, classBody); - } - if (value == "*") { - cx.marked = "keyword"; - return cont(classBody); - } - if (type == ";") return cont(classBody); - if (type == "}") return cont(); - } - function classGetterSetter(type) { - if (type != "variable") return pass(); - cx.marked = "property"; - return cont(); - } - function afterModule(type, value) { - if (type == "string") return cont(statement); - if (type == "variable") { register(value); return cont(maybeFrom); } - } - function afterExport(_type, value) { - if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); } - if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); } - return pass(statement); - } - function afterImport(type) { - if (type == "string") return cont(); - return pass(importSpec, maybeFrom); - } - function importSpec(type, value) { - if (type == "{") return contCommasep(importSpec, "}"); - if (type == "variable") register(value); - return cont(); - } - function maybeFrom(_type, value) { - if (value == "from") { cx.marked = "keyword"; return cont(expression); } - } - function arrayLiteral(type) { - if (type == "]") return cont(); - return pass(expressionNoComma, maybeArrayComprehension); - } - function maybeArrayComprehension(type) { - if (type == "for") return pass(comprehension, expect("]")); - if (type == ",") return cont(commasep(maybeexpressionNoComma, "]")); - return pass(commasep(expressionNoComma, "]")); - } - function comprehension(type) { - if (type == "for") return cont(forspec, comprehension); - if (type == "if") return cont(expression, comprehension); - } - - // Interface - - return { - startState: function(basecolumn) { - var state = { - tokenize: tokenBase, - lastType: "sof", - cc: [], - lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), - localVars: parserConfig.localVars, - context: parserConfig.localVars && {vars: parserConfig.localVars}, - indented: 0 - }; - if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") - state.globalVars = parserConfig.globalVars; - return state; - }, - - token: function(stream, state) { - if (stream.sol()) { - if (!state.lexical.hasOwnProperty("align")) - state.lexical.align = false; - state.indented = stream.indentation(); - findFatArrow(stream, state); - } - if (state.tokenize != tokenComment && stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (type == "comment") return style; - state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; - return parseJS(state, style, type, content, stream); - }, - - indent: function(state, textAfter) { - if (state.tokenize == tokenComment) return CodeMirror.Pass; - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; - // Kludge to prevent 'maybelse' from blocking lexical scope pops - if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) { - var c = state.cc[i]; - if (c == poplex) lexical = lexical.prev; - else if (c != maybeelse) break; - } - if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; - if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat") - lexical = lexical.prev; - var type = lexical.type, closing = firstChar == type; - - if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0); - else if (type == "form" && firstChar == "{") return lexical.indented; - else if (type == "form") return lexical.indented + indentUnit; - else if (type == "stat") - return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? statementIndent || indentUnit : 0); - else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false) - return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); - else if (lexical.align) return lexical.column + (closing ? 0 : 1); - else return lexical.indented + (closing ? 0 : indentUnit); - }, - - electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, - blockCommentStart: jsonMode ? null : "/*", - blockCommentEnd: jsonMode ? null : "*/", - lineComment: jsonMode ? null : "//", - fold: "brace", - - helperType: jsonMode ? "json" : "javascript", - jsonldMode: jsonldMode, - jsonMode: jsonMode - }; -}); - -CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/); - -CodeMirror.defineMIME("text/javascript", "javascript"); -CodeMirror.defineMIME("text/ecmascript", "javascript"); -CodeMirror.defineMIME("application/javascript", "javascript"); -CodeMirror.defineMIME("application/x-javascript", "javascript"); -CodeMirror.defineMIME("application/ecmascript", "javascript"); -CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); -CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true}); -CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true}); -CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); -CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); - -}); diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/markdown/markdown.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/markdown/markdown.js deleted file mode 100644 index 7c87984..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/markdown/markdown.js +++ /dev/null @@ -1,765 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror", require("../xml/xml"), require("../meta"))); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "../xml/xml", "../meta"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { - - var htmlFound = CodeMirror.modes.hasOwnProperty("xml"); - var htmlMode = CodeMirror.getMode(cmCfg, htmlFound ? {name: "xml", htmlMode: true} : "text/plain"); - - function getMode(name) { - if (CodeMirror.findModeByName) { - var found = CodeMirror.findModeByName(name); - if (found) name = found.mime || found.mimes[0]; - } - var mode = CodeMirror.getMode(cmCfg, name); - return mode.name == "null" ? null : mode; - } - - // Should characters that affect highlighting be highlighted separate? - // Does not include characters that will be output (such as `1.` and `-` for lists) - if (modeCfg.highlightFormatting === undefined) - modeCfg.highlightFormatting = false; - - // Maximum number of nested blockquotes. Set to 0 for infinite nesting. - // Excess `>` will emit `error` token. - if (modeCfg.maxBlockquoteDepth === undefined) - modeCfg.maxBlockquoteDepth = 0; - - // Should underscores in words open/close em/strong? - if (modeCfg.underscoresBreakWords === undefined) - modeCfg.underscoresBreakWords = true; - - // Turn on fenced code blocks? ("```" to start/end) - if (modeCfg.fencedCodeBlocks === undefined) modeCfg.fencedCodeBlocks = false; - - // Turn on task lists? ("- [ ] " and "- [x] ") - if (modeCfg.taskLists === undefined) modeCfg.taskLists = false; - - // Turn on strikethrough syntax - if (modeCfg.strikethrough === undefined) - modeCfg.strikethrough = false; - - var codeDepth = 0; - - var header = 'header' - , code = 'comment' - , quote = 'quote' - , list1 = 'variable-2' - , list2 = 'variable-3' - , list3 = 'keyword' - , hr = 'hr' - , image = 'tag' - , formatting = 'formatting' - , linkinline = 'link' - , linkemail = 'link' - , linktext = 'link' - , linkhref = 'string' - , em = 'em' - , strong = 'strong' - , strikethrough = 'strikethrough'; - - var hrRE = /^([*\-=_])(?:\s*\1){2,}\s*$/ - , ulRE = /^[*\-+]\s+/ - , olRE = /^[0-9]+\.\s+/ - , taskListRE = /^\[(x| )\](?=\s)/ // Must follow ulRE or olRE - , atxHeaderRE = /^#+/ - , setextHeaderRE = /^(?:\={1,}|-{1,})$/ - , textRE = /^[^#!\[\]*_\\<>` "'(~]+/; - - function switchInline(stream, state, f) { - state.f = state.inline = f; - return f(stream, state); - } - - function switchBlock(stream, state, f) { - state.f = state.block = f; - return f(stream, state); - } - - - // Blocks - - function blankLine(state) { - // Reset linkTitle state - state.linkTitle = false; - // Reset EM state - state.em = false; - // Reset STRONG state - state.strong = false; - // Reset strikethrough state - state.strikethrough = false; - // Reset state.quote - state.quote = 0; - if (!htmlFound && state.f == htmlBlock) { - state.f = inlineNormal; - state.block = blockNormal; - } - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - // Mark this line as blank - state.thisLineHasContent = false; - return null; - } - - function blockNormal(stream, state) { - - var sol = stream.sol(); - - var prevLineIsList = (state.list !== false); - if (state.list !== false && state.indentationDiff >= 0) { // Continued list - if (state.indentationDiff < 4) { // Only adjust indentation if *not* a code block - state.indentation -= state.indentationDiff; - } - state.list = null; - } else if (state.list !== false && state.indentation > 0) { - state.list = null; - state.listDepth = Math.floor(state.indentation / 4); - } else if (state.list !== false) { // No longer a list - state.list = false; - state.listDepth = 0; - } - - var match = null; - if (state.indentationDiff >= 4) { - state.indentation -= 4; - stream.skipToEnd(); - return code; - } else if (stream.eatSpace()) { - return null; - } else if (match = stream.match(atxHeaderRE)) { - state.header = match[0].length <= 6 ? match[0].length : 6; - if (modeCfg.highlightFormatting) state.formatting = "header"; - state.f = state.inline; - return getType(state); - } else if (state.prevLineHasContent && (match = stream.match(setextHeaderRE))) { - state.header = match[0].charAt(0) == '=' ? 1 : 2; - if (modeCfg.highlightFormatting) state.formatting = "header"; - state.f = state.inline; - return getType(state); - } else if (stream.eat('>')) { - state.indentation++; - state.quote = sol ? 1 : state.quote + 1; - if (modeCfg.highlightFormatting) state.formatting = "quote"; - stream.eatSpace(); - return getType(state); - } else if (stream.peek() === '[') { - return switchInline(stream, state, footnoteLink); - } else if (stream.match(hrRE, true)) { - return hr; - } else if ((!state.prevLineHasContent || prevLineIsList) && (stream.match(ulRE, false) || stream.match(olRE, false))) { - var listType = null; - if (stream.match(ulRE, true)) { - listType = 'ul'; - } else { - stream.match(olRE, true); - listType = 'ol'; - } - state.indentation += 4; - state.list = true; - state.listDepth++; - if (modeCfg.taskLists && stream.match(taskListRE, false)) { - state.taskList = true; - } - state.f = state.inline; - if (modeCfg.highlightFormatting) state.formatting = ["list", "list-" + listType]; - return getType(state); - } else if (modeCfg.fencedCodeBlocks && stream.match(/^```[ \t]*([\w+#]*)/, true)) { - // try switching mode - state.localMode = getMode(RegExp.$1); - if (state.localMode) state.localState = state.localMode.startState(); - state.f = state.block = local; - if (modeCfg.highlightFormatting) state.formatting = "code-block"; - state.code = true; - return getType(state); - } - - return switchInline(stream, state, state.inline); - } - - function htmlBlock(stream, state) { - var style = htmlMode.token(stream, state.htmlState); - if ((htmlFound && state.htmlState.tagStart === null && !state.htmlState.context) || - (state.md_inside && stream.current().indexOf(">") > -1)) { - state.f = inlineNormal; - state.block = blockNormal; - state.htmlState = null; - } - return style; - } - - function local(stream, state) { - if (stream.sol() && stream.match("```", false)) { - state.localMode = state.localState = null; - state.f = state.block = leavingLocal; - return null; - } else if (state.localMode) { - return state.localMode.token(stream, state.localState); - } else { - stream.skipToEnd(); - return code; - } - } - - function leavingLocal(stream, state) { - stream.match("```"); - state.block = blockNormal; - state.f = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = "code-block"; - state.code = true; - var returnType = getType(state); - state.code = false; - return returnType; - } - - // Inline - function getType(state) { - var styles = []; - - if (state.formatting) { - styles.push(formatting); - - if (typeof state.formatting === "string") state.formatting = [state.formatting]; - - for (var i = 0; i < state.formatting.length; i++) { - styles.push(formatting + "-" + state.formatting[i]); - - if (state.formatting[i] === "header") { - styles.push(formatting + "-" + state.formatting[i] + "-" + state.header); - } - - // Add `formatting-quote` and `formatting-quote-#` for blockquotes - // Add `error` instead if the maximum blockquote nesting depth is passed - if (state.formatting[i] === "quote") { - if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { - styles.push(formatting + "-" + state.formatting[i] + "-" + state.quote); - } else { - styles.push("error"); - } - } - } - } - - if (state.taskOpen) { - styles.push("meta"); - return styles.length ? styles.join(' ') : null; - } - if (state.taskClosed) { - styles.push("property"); - return styles.length ? styles.join(' ') : null; - } - - if (state.linkHref) { - styles.push(linkhref); - return styles.length ? styles.join(' ') : null; - } - - if (state.strong) { styles.push(strong); } - if (state.em) { styles.push(em); } - if (state.strikethrough) { styles.push(strikethrough); } - - if (state.linkText) { styles.push(linktext); } - - if (state.code) { styles.push(code); } - - if (state.header) { styles.push(header); styles.push(header + "-" + state.header); } - - if (state.quote) { - styles.push(quote); - - // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth - if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { - styles.push(quote + "-" + state.quote); - } else { - styles.push(quote + "-" + modeCfg.maxBlockquoteDepth); - } - } - - if (state.list !== false) { - var listMod = (state.listDepth - 1) % 3; - if (!listMod) { - styles.push(list1); - } else if (listMod === 1) { - styles.push(list2); - } else { - styles.push(list3); - } - } - - if (state.trailingSpaceNewLine) { - styles.push("trailing-space-new-line"); - } else if (state.trailingSpace) { - styles.push("trailing-space-" + (state.trailingSpace % 2 ? "a" : "b")); - } - - return styles.length ? styles.join(' ') : null; - } - - function handleText(stream, state) { - if (stream.match(textRE, true)) { - return getType(state); - } - return undefined; - } - - function inlineNormal(stream, state) { - var style = state.text(stream, state); - if (typeof style !== 'undefined') - return style; - - if (state.list) { // List marker (*, +, -, 1., etc) - state.list = null; - return getType(state); - } - - if (state.taskList) { - var taskOpen = stream.match(taskListRE, true)[1] !== "x"; - if (taskOpen) state.taskOpen = true; - else state.taskClosed = true; - if (modeCfg.highlightFormatting) state.formatting = "task"; - state.taskList = false; - return getType(state); - } - - state.taskOpen = false; - state.taskClosed = false; - - if (state.header && stream.match(/^#+$/, true)) { - if (modeCfg.highlightFormatting) state.formatting = "header"; - return getType(state); - } - - // Get sol() value now, before character is consumed - var sol = stream.sol(); - - var ch = stream.next(); - - if (ch === '\\') { - stream.next(); - if (modeCfg.highlightFormatting) { - var type = getType(state); - return type ? type + " formatting-escape" : "formatting-escape"; - } - } - - // Matches link titles present on next line - if (state.linkTitle) { - state.linkTitle = false; - var matchCh = ch; - if (ch === '(') { - matchCh = ')'; - } - matchCh = (matchCh+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); - var regex = '^\\s*(?:[^' + matchCh + '\\\\]+|\\\\\\\\|\\\\.)' + matchCh; - if (stream.match(new RegExp(regex), true)) { - return linkhref; - } - } - - // If this block is changed, it may need to be updated in GFM mode - if (ch === '`') { - var previousFormatting = state.formatting; - if (modeCfg.highlightFormatting) state.formatting = "code"; - var t = getType(state); - var before = stream.pos; - stream.eatWhile('`'); - var difference = 1 + stream.pos - before; - if (!state.code) { - codeDepth = difference; - state.code = true; - return getType(state); - } else { - if (difference === codeDepth) { // Must be exact - state.code = false; - return t; - } - state.formatting = previousFormatting; - return getType(state); - } - } else if (state.code) { - return getType(state); - } - - if (ch === '!' && stream.match(/\[[^\]]*\] ?(?:\(|\[)/, false)) { - stream.match(/\[[^\]]*\]/); - state.inline = state.f = linkHref; - return image; - } - - if (ch === '[' && stream.match(/.*\](\(| ?\[)/, false)) { - state.linkText = true; - if (modeCfg.highlightFormatting) state.formatting = "link"; - return getType(state); - } - - if (ch === ']' && state.linkText) { - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - state.linkText = false; - state.inline = state.f = linkHref; - return type; - } - - if (ch === '<' && stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false)) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + linkinline; - } - - if (ch === '<' && stream.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/, false)) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + linkemail; - } - - if (ch === '<' && stream.match(/^\w/, false)) { - if (stream.string.indexOf(">") != -1) { - var atts = stream.string.substring(1,stream.string.indexOf(">")); - if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) { - state.md_inside = true; - } - } - stream.backUp(1); - state.htmlState = CodeMirror.startState(htmlMode); - return switchBlock(stream, state, htmlBlock); - } - - if (ch === '<' && stream.match(/^\/\w*?>/)) { - state.md_inside = false; - return "tag"; - } - - var ignoreUnderscore = false; - if (!modeCfg.underscoresBreakWords) { - if (ch === '_' && stream.peek() !== '_' && stream.match(/(\w)/, false)) { - var prevPos = stream.pos - 2; - if (prevPos >= 0) { - var prevCh = stream.string.charAt(prevPos); - if (prevCh !== '_' && prevCh.match(/(\w)/, false)) { - ignoreUnderscore = true; - } - } - } - } - if (ch === '*' || (ch === '_' && !ignoreUnderscore)) { - if (sol && stream.peek() === ' ') { - // Do nothing, surrounded by newline and space - } else if (state.strong === ch && stream.eat(ch)) { // Remove STRONG - if (modeCfg.highlightFormatting) state.formatting = "strong"; - var t = getType(state); - state.strong = false; - return t; - } else if (!state.strong && stream.eat(ch)) { // Add STRONG - state.strong = ch; - if (modeCfg.highlightFormatting) state.formatting = "strong"; - return getType(state); - } else if (state.em === ch) { // Remove EM - if (modeCfg.highlightFormatting) state.formatting = "em"; - var t = getType(state); - state.em = false; - return t; - } else if (!state.em) { // Add EM - state.em = ch; - if (modeCfg.highlightFormatting) state.formatting = "em"; - return getType(state); - } - } else if (ch === ' ') { - if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces - if (stream.peek() === ' ') { // Surrounded by spaces, ignore - return getType(state); - } else { // Not surrounded by spaces, back up pointer - stream.backUp(1); - } - } - } - - if (modeCfg.strikethrough) { - if (ch === '~' && stream.eatWhile(ch)) { - if (state.strikethrough) {// Remove strikethrough - if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; - var t = getType(state); - state.strikethrough = false; - return t; - } else if (stream.match(/^[^\s]/, false)) {// Add strikethrough - state.strikethrough = true; - if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; - return getType(state); - } - } else if (ch === ' ') { - if (stream.match(/^~~/, true)) { // Probably surrounded by space - if (stream.peek() === ' ') { // Surrounded by spaces, ignore - return getType(state); - } else { // Not surrounded by spaces, back up pointer - stream.backUp(2); - } - } - } - } - - if (ch === ' ') { - if (stream.match(/ +$/, false)) { - state.trailingSpace++; - } else if (state.trailingSpace) { - state.trailingSpaceNewLine = true; - } - } - - return getType(state); - } - - function linkInline(stream, state) { - var ch = stream.next(); - - if (ch === ">") { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var type = getType(state); - if (type){ - type += " "; - } else { - type = ""; - } - return type + linkinline; - } - - stream.match(/^[^>]+/, true); - - return linkinline; - } - - function linkHref(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if(stream.eatSpace()){ - return null; - } - var ch = stream.next(); - if (ch === '(' || ch === '[') { - state.f = state.inline = getLinkHrefInside(ch === "(" ? ")" : "]"); - if (modeCfg.highlightFormatting) state.formatting = "link-string"; - state.linkHref = true; - return getType(state); - } - return 'error'; - } - - function getLinkHrefInside(endChar) { - return function(stream, state) { - var ch = stream.next(); - - if (ch === endChar) { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = "link-string"; - var returnState = getType(state); - state.linkHref = false; - return returnState; - } - - if (stream.match(inlineRE(endChar), true)) { - stream.backUp(1); - } - - state.linkHref = true; - return getType(state); - }; - } - - function footnoteLink(stream, state) { - if (stream.match(/^[^\]]*\]:/, false)) { - state.f = footnoteLinkInside; - stream.next(); // Consume [ - if (modeCfg.highlightFormatting) state.formatting = "link"; - state.linkText = true; - return getType(state); - } - return switchInline(stream, state, inlineNormal); - } - - function footnoteLinkInside(stream, state) { - if (stream.match(/^\]:/, true)) { - state.f = state.inline = footnoteUrl; - if (modeCfg.highlightFormatting) state.formatting = "link"; - var returnType = getType(state); - state.linkText = false; - return returnType; - } - - stream.match(/^[^\]]+/, true); - - return linktext; - } - - function footnoteUrl(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if(stream.eatSpace()){ - return null; - } - // Match URL - stream.match(/^[^\s]+/, true); - // Check for link title - if (stream.peek() === undefined) { // End of line, set flag to check next line - state.linkTitle = true; - } else { // More content on line, check if link title - stream.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/, true); - } - state.f = state.inline = inlineNormal; - return linkhref; - } - - var savedInlineRE = []; - function inlineRE(endChar) { - if (!savedInlineRE[endChar]) { - // Escape endChar for RegExp (taken from http://stackoverflow.com/a/494122/526741) - endChar = (endChar+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); - // Match any non-endChar, escaped character, as well as the closing - // endChar. - savedInlineRE[endChar] = new RegExp('^(?:[^\\\\]|\\\\.)*?(' + endChar + ')'); - } - return savedInlineRE[endChar]; - } - - var mode = { - startState: function() { - return { - f: blockNormal, - - prevLineHasContent: false, - thisLineHasContent: false, - - block: blockNormal, - htmlState: null, - indentation: 0, - - inline: inlineNormal, - text: handleText, - - formatting: false, - linkText: false, - linkHref: false, - linkTitle: false, - em: false, - strong: false, - header: 0, - taskList: false, - list: false, - listDepth: 0, - quote: 0, - trailingSpace: 0, - trailingSpaceNewLine: false, - strikethrough: false - }; - }, - - copyState: function(s) { - return { - f: s.f, - - prevLineHasContent: s.prevLineHasContent, - thisLineHasContent: s.thisLineHasContent, - - block: s.block, - htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState), - indentation: s.indentation, - - localMode: s.localMode, - localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null, - - inline: s.inline, - text: s.text, - formatting: false, - linkTitle: s.linkTitle, - em: s.em, - strong: s.strong, - strikethrough: s.strikethrough, - header: s.header, - taskList: s.taskList, - list: s.list, - listDepth: s.listDepth, - quote: s.quote, - trailingSpace: s.trailingSpace, - trailingSpaceNewLine: s.trailingSpaceNewLine, - md_inside: s.md_inside - }; - }, - - token: function(stream, state) { - - // Reset state.formatting - state.formatting = false; - - if (stream.sol()) { - var forceBlankLine = !!state.header; - - // Reset state.header - state.header = 0; - - if (stream.match(/^\s*$/, true) || forceBlankLine) { - state.prevLineHasContent = false; - blankLine(state); - return forceBlankLine ? this.token(stream, state) : null; - } else { - state.prevLineHasContent = state.thisLineHasContent; - state.thisLineHasContent = true; - } - - // Reset state.taskList - state.taskList = false; - - // Reset state.code - state.code = false; - - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - - state.f = state.block; - var indentation = stream.match(/^\s*/, true)[0].replace(/\t/g, ' ').length; - var difference = Math.floor((indentation - state.indentation) / 4) * 4; - if (difference > 4) difference = 4; - var adjustedIndentation = state.indentation + difference; - state.indentationDiff = adjustedIndentation - state.indentation; - state.indentation = adjustedIndentation; - if (indentation > 0) return null; - } - return state.f(stream, state); - }, - - innerMode: function(state) { - if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode}; - if (state.localState) return {state: state.localState, mode: state.localMode}; - return {state: state, mode: mode}; - }, - - blankLine: blankLine, - - getType: getType, - - fold: "markdown" - }; - return mode; -}, "xml"); - -CodeMirror.defineMIME("text/x-markdown", "markdown"); - -}); diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/xml/xml.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/xml/xml.js deleted file mode 100644 index 2f3b8f8..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/codemirror/mode/xml/xml.js +++ /dev/null @@ -1,384 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.defineMode("xml", function(config, parserConfig) { - var indentUnit = config.indentUnit; - var multilineTagIndentFactor = parserConfig.multilineTagIndentFactor || 1; - var multilineTagIndentPastTag = parserConfig.multilineTagIndentPastTag; - if (multilineTagIndentPastTag == null) multilineTagIndentPastTag = true; - - var Kludges = parserConfig.htmlMode ? { - autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true, - 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true, - 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true, - 'track': true, 'wbr': true, 'menuitem': true}, - implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true, - 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true, - 'th': true, 'tr': true}, - contextGrabbers: { - 'dd': {'dd': true, 'dt': true}, - 'dt': {'dd': true, 'dt': true}, - 'li': {'li': true}, - 'option': {'option': true, 'optgroup': true}, - 'optgroup': {'optgroup': true}, - 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true, - 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true, - 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true, - 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true, - 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true}, - 'rp': {'rp': true, 'rt': true}, - 'rt': {'rp': true, 'rt': true}, - 'tbody': {'tbody': true, 'tfoot': true}, - 'td': {'td': true, 'th': true}, - 'tfoot': {'tbody': true}, - 'th': {'td': true, 'th': true}, - 'thead': {'tbody': true, 'tfoot': true}, - 'tr': {'tr': true} - }, - doNotIndent: {"pre": true}, - allowUnquoted: true, - allowMissing: true, - caseFold: true - } : { - autoSelfClosers: {}, - implicitlyClosed: {}, - contextGrabbers: {}, - doNotIndent: {}, - allowUnquoted: false, - allowMissing: false, - caseFold: false - }; - var alignCDATA = parserConfig.alignCDATA; - - // Return variables for tokenizers - var type, setStyle; - - function inText(stream, state) { - function chain(parser) { - state.tokenize = parser; - return parser(stream, state); - } - - var ch = stream.next(); - if (ch == "<") { - if (stream.eat("!")) { - if (stream.eat("[")) { - if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>")); - else return null; - } else if (stream.match("--")) { - return chain(inBlock("comment", "-->")); - } else if (stream.match("DOCTYPE", true, true)) { - stream.eatWhile(/[\w\._\-]/); - return chain(doctype(1)); - } else { - return null; - } - } else if (stream.eat("?")) { - stream.eatWhile(/[\w\._\-]/); - state.tokenize = inBlock("meta", "?>"); - return "meta"; - } else { - type = stream.eat("/") ? "closeTag" : "openTag"; - state.tokenize = inTag; - return "tag bracket"; - } - } else if (ch == "&") { - var ok; - if (stream.eat("#")) { - if (stream.eat("x")) { - ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";"); - } else { - ok = stream.eatWhile(/[\d]/) && stream.eat(";"); - } - } else { - ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";"); - } - return ok ? "atom" : "error"; - } else { - stream.eatWhile(/[^&<]/); - return null; - } - } - - function inTag(stream, state) { - var ch = stream.next(); - if (ch == ">" || (ch == "/" && stream.eat(">"))) { - state.tokenize = inText; - type = ch == ">" ? "endTag" : "selfcloseTag"; - return "tag bracket"; - } else if (ch == "=") { - type = "equals"; - return null; - } else if (ch == "<") { - state.tokenize = inText; - state.state = baseState; - state.tagName = state.tagStart = null; - var next = state.tokenize(stream, state); - return next ? next + " tag error" : "tag error"; - } else if (/[\'\"]/.test(ch)) { - state.tokenize = inAttribute(ch); - state.stringStartCol = stream.column(); - return state.tokenize(stream, state); - } else { - stream.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/); - return "word"; - } - } - - function inAttribute(quote) { - var closure = function(stream, state) { - while (!stream.eol()) { - if (stream.next() == quote) { - state.tokenize = inTag; - break; - } - } - return "string"; - }; - closure.isInAttribute = true; - return closure; - } - - function inBlock(style, terminator) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = inText; - break; - } - stream.next(); - } - return style; - }; - } - function doctype(depth) { - return function(stream, state) { - var ch; - while ((ch = stream.next()) != null) { - if (ch == "<") { - state.tokenize = doctype(depth + 1); - return state.tokenize(stream, state); - } else if (ch == ">") { - if (depth == 1) { - state.tokenize = inText; - break; - } else { - state.tokenize = doctype(depth - 1); - return state.tokenize(stream, state); - } - } - } - return "meta"; - }; - } - - function Context(state, tagName, startOfLine) { - this.prev = state.context; - this.tagName = tagName; - this.indent = state.indented; - this.startOfLine = startOfLine; - if (Kludges.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent)) - this.noIndent = true; - } - function popContext(state) { - if (state.context) state.context = state.context.prev; - } - function maybePopContext(state, nextTagName) { - var parentTagName; - while (true) { - if (!state.context) { - return; - } - parentTagName = state.context.tagName; - if (!Kludges.contextGrabbers.hasOwnProperty(parentTagName) || - !Kludges.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) { - return; - } - popContext(state); - } - } - - function baseState(type, stream, state) { - if (type == "openTag") { - state.tagStart = stream.column(); - return tagNameState; - } else if (type == "closeTag") { - return closeTagNameState; - } else { - return baseState; - } - } - function tagNameState(type, stream, state) { - if (type == "word") { - state.tagName = stream.current(); - setStyle = "tag"; - return attrState; - } else { - setStyle = "error"; - return tagNameState; - } - } - function closeTagNameState(type, stream, state) { - if (type == "word") { - var tagName = stream.current(); - if (state.context && state.context.tagName != tagName && - Kludges.implicitlyClosed.hasOwnProperty(state.context.tagName)) - popContext(state); - if (state.context && state.context.tagName == tagName) { - setStyle = "tag"; - return closeState; - } else { - setStyle = "tag error"; - return closeStateErr; - } - } else { - setStyle = "error"; - return closeStateErr; - } - } - - function closeState(type, _stream, state) { - if (type != "endTag") { - setStyle = "error"; - return closeState; - } - popContext(state); - return baseState; - } - function closeStateErr(type, stream, state) { - setStyle = "error"; - return closeState(type, stream, state); - } - - function attrState(type, _stream, state) { - if (type == "word") { - setStyle = "attribute"; - return attrEqState; - } else if (type == "endTag" || type == "selfcloseTag") { - var tagName = state.tagName, tagStart = state.tagStart; - state.tagName = state.tagStart = null; - if (type == "selfcloseTag" || - Kludges.autoSelfClosers.hasOwnProperty(tagName)) { - maybePopContext(state, tagName); - } else { - maybePopContext(state, tagName); - state.context = new Context(state, tagName, tagStart == state.indented); - } - return baseState; - } - setStyle = "error"; - return attrState; - } - function attrEqState(type, stream, state) { - if (type == "equals") return attrValueState; - if (!Kludges.allowMissing) setStyle = "error"; - return attrState(type, stream, state); - } - function attrValueState(type, stream, state) { - if (type == "string") return attrContinuedState; - if (type == "word" && Kludges.allowUnquoted) {setStyle = "string"; return attrState;} - setStyle = "error"; - return attrState(type, stream, state); - } - function attrContinuedState(type, stream, state) { - if (type == "string") return attrContinuedState; - return attrState(type, stream, state); - } - - return { - startState: function() { - return {tokenize: inText, - state: baseState, - indented: 0, - tagName: null, tagStart: null, - context: null}; - }, - - token: function(stream, state) { - if (!state.tagName && stream.sol()) - state.indented = stream.indentation(); - - if (stream.eatSpace()) return null; - type = null; - var style = state.tokenize(stream, state); - if ((style || type) && style != "comment") { - setStyle = null; - state.state = state.state(type || style, stream, state); - if (setStyle) - style = setStyle == "error" ? style + " error" : setStyle; - } - return style; - }, - - indent: function(state, textAfter, fullLine) { - var context = state.context; - // Indent multi-line strings (e.g. css). - if (state.tokenize.isInAttribute) { - if (state.tagStart == state.indented) - return state.stringStartCol + 1; - else - return state.indented + indentUnit; - } - if (context && context.noIndent) return CodeMirror.Pass; - if (state.tokenize != inTag && state.tokenize != inText) - return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0; - // Indent the starts of attribute names. - if (state.tagName) { - if (multilineTagIndentPastTag) - return state.tagStart + state.tagName.length + 2; - else - return state.tagStart + indentUnit * multilineTagIndentFactor; - } - if (alignCDATA && /$/, - blockCommentStart: "", - - configuration: parserConfig.htmlMode ? "html" : "xml", - helperType: parserConfig.htmlMode ? "html" : "xml" - }; -}); - -CodeMirror.defineMIME("text/xml", "xml"); -CodeMirror.defineMIME("application/xml", "xml"); -if (!CodeMirror.mimeModes.hasOwnProperty("text/html")) - CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true}); - -}); diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/color-picker/dist/color-picker.min.css b/dzz/system/ueditor/dialogs/kityminder/bower_components/color-picker/dist/color-picker.min.css deleted file mode 100644 index 1f0161a..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/color-picker/dist/color-picker.min.css +++ /dev/null @@ -1 +0,0 @@ -.colorpicker-container,.colorpicker-container div,.colorpicker-container span{box-sizing:content-box}.colorpicker-container{border:1px solid #d3d3d3;background-color:#fff;box-shadow:0 6px 12px rgba(0,0,0,.175);z-index:9999;position:absolute;display:none}.colorpicker-container:active:focus,.colorpicker-container:focus{outline:0}.colorpicker-container .colorpicker-colors{margin:0;padding:0;font-size:0;line-height:0}.colorpicker-container .colorpicker-colors-line0{margin-bottom:3px}.colorpicker-container .colorpicker-colors-item{display:inline-block;margin:0 2px;width:13px;height:13px;border-style:solid;border-width:1px}.colorpicker-container .colorpicker-commoncolor,.colorpicker-container .colorpicker-latestcolor,.colorpicker-container .colorpicker-standardcolor{margin:4px 3px;white-space:nowrap}.colorpicker-toolbar{margin:8px 4px;height:27px;position:relative}.colorpicker-toolbar .colorpicker-preview{display:inline-block;height:25px;line-height:25px;width:115px;border:1px solid #d3d3d3}.colorpicker-toolbar .colorpicker-clear{display:inline-block;height:25px;line-height:25px;width:60px;border:1px solid #d3d3d3;font-size:12px;text-align:center;position:absolute;right:5px;cursor:pointer}.colorpicker-title{padding:2px 4px}.colorpicker-title,.colorpicker-toolbar{font-size:12px;color:#000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.colorpicker-morecolor label{width:100%;display:inline-block;height:20px;line-height:20px;margin:0;font-weight:400}.colorpicker-morecolor .native-color-picker{visibility:hidden;position:absolute;top:-9999px;right:-9999px}.colorpicker-morecolor:hover{background-color:#dedede}.colorpicker-morecolor:active{background-color:#999} \ No newline at end of file diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/color-picker/dist/color-picker.min.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/color-picker/dist/color-picker.min.js deleted file mode 100644 index c078a07..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/color-picker/dist/color-picker.min.js +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * ==================================================== - * angular colorpicker - v1.0.9 - 2016-06-10 - * https://github.com/zhangbobell/color-picker#readme - * GitHub: git+https://github.com/zhangbobell/color-picker.git - * Copyright (c) 2016 ; Licensed - * ==================================================== - */ - - -angular.module("ui.colorpicker",[]).directive("colorPicker",["$compile","localize",function(a,b){return{restrict:"EA",scope:{setColor:"&"},link:function(c,d,e){function f(){var a=s(d);y.css(a)}function g(){return angular.isDefined(e.disabled)?!e.disabled:!0}function h(a){c.$emit("colorPicked",a),c.hoveredColor=a,q(a),c.latestColor=p()}function i(a){h(a),k()}function j(a){c.hoveredColor=a}function k(){y.css("display","none")}function l(a){var b=g();if(b){a.stopPropagation();var c=s(d);y.css(c),y.css("display","block"),y[0].focus()}}function m(a){a.stopPropagation()}function n(){var a=document.createElement("input");return a.setAttribute("type","color"),"text"!==a.type}function o(){var a=window.localStorage.getItem("ui-color-picker");if(!a)return null;try{a=JSON.parse(a)}catch(b){return null}return a}function p(){var a=o();return a?a.latestColor:[]}function q(a){var b=o()||{},c=p();if(c&&c instanceof Array){var d=c.indexOf(a);-1!=d&&c.splice(d,1),c.unshift(a)}else c=[a];c.length>10&&(c=c.slice(0,10)),b.latestColor=c,window.localStorage.setItem("ui-color-picker",JSON.stringify(b))}function r(a,b){for(var c=0,d=0,e=0,f=0;a&&!isNaN(a.offsetLeft)&&!isNaN(a.offsetTop);)c+=a.offsetLeft,d+=a.offsetTop,b||"BODY"!==a.tagName?(e+=a.scrollLeft,f+=a.scrollTop):(e+=document.documentElement.scrollLeft||a.scrollLeft,f+=document.documentElement.scrollTop||a.scrollTop),a=a.offsetParent;return{top:d,left:c,scrollX:e,scrollY:f}}function s(a){var b,c=r(a[0]);return"top"===z?b={top:c.top-147,left:c.left}:"right"===z?b={top:c.top,left:c.left+126}:"bottom"===z?b={top:c.top+a[0].offsetHeight+2,left:c.left}:"left"===z&&(b={top:c.top,left:c.left-150}),{top:b.top+"px",left:b.left+"px"}}var t=c.setColor()||e.defaultColor||"#fff",u={clearText:b.get("default_color"),defaultColor:t,latestText:b.get("latest_used"),commonText:b.get("theme_color"),commonColor:[["#ffffff","#000000","#eeece1","#1f497d","#4f81bd","#c0504d","#9bbb59","#8064a2","#4bacc6","#f79646"],["#f2f2f2","#808080","#ddd8c2","#c6d9f1","#dbe5f1","#f2dbdb","#eaf1dd","#e5dfec","#daeef3","#fde9d9"],["#d9d9d9","#595959","#c4bc96","#8db3e2","#b8cce4","#e5b8b7","#d6e3bc","#ccc0d9","#b6dde8","#fbd4b4"],["#bfbfbf","#404040","#938953","#548dd4","#95b3d7","#d99594","#c2d69b","#b2a1c7","#92cddc","#fabf8f"],["#a6a6a6","#262626","#4a442a","#17365d","#365f91","#943634","#76923c","#5f497a","#31849b","#e36c0a"],["#7f7f7f","#0d0d0d","#1c1a10","#0f243e","#243f60","#622423","#4e6128","#3f3151","#205867","#974706"]],standardText:b.get("standard_color"),standardColor:["#c00000","#ff0000","#ffc000","#ffff00","#92d050","#00b050","#00b0f0","#0070c0","#002060","#7030a0"],moreText:b.get("more_color")},v=(1e6*+new Date+Math.floor(1e6*Math.random())).toString(36),w='
    ',x=angular.element,y=x(w),z=angular.isDefined(e.colorpickerPosition)?e.colorpickerPosition:"bottom";c.defaultOptions=u,c.isSupportNativeColorPicker=n(),c.latestColor=p(),c.selectColor=h,c.previewColor=j,c.selectColorAndClose=i,c.keepPickerOpen=m,c.hoveredColor=u.defaultColor,a(y)(c),x(document.body).append(y),d.on("click",l),x(document).on("click",k),c.$on("openColorPicker",l),c.$on("closeColorPicker",k),window.attachEvent?window.attachEvent("onresize",f):window.addEventListener&&window.addEventListener("resize",f)}}}]),angular.module("ui.colorpicker").provider("localize",function(){this.map={"zh-cn":{default_color:"默认颜色",latest_used:"最近使用",theme_color:"主题颜色",standard_color:"标准颜色",more_color:"更多颜色.."},"en-us":{default_color:"default",latest_used:"latest used",theme_color:"theme color",standard_color:"standard color",more_color:"more.."}},this.defaultLang="zh-cn",this.setDefaultLang=function(a){var b=Object.keys(this.map);return-1===b.indexOf(a)?void console.error("Unsupported language: ",a,", please choose in :",b.join(", ")):void(this.defaultLang=a)},this.$get=function(){var a=this;return{get:function(b){return a.map[a.defaultLang].hasOwnProperty(b)?a.map[a.defaultLang][b]:(console.warn("Missing lang pair for : ",b),"")}}}}); -//# sourceMappingURL=color-picker.min.map \ No newline at end of file diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/hotbox/hotbox.css b/dzz/system/ueditor/dialogs/kityminder/bower_components/hotbox/hotbox.css deleted file mode 100644 index a86b047..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/hotbox/hotbox.css +++ /dev/null @@ -1,163 +0,0 @@ -.hotbox { - font-family: Arial, "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; - position: absolute; - left: 0; - top: 0; - overflow: visible; -} -.hotbox .state { - position: absolute; - overflow: visible; - display: none; -} -.hotbox .state .center .button, -.hotbox .state .ring .button { - position: absolute; - width: 70px; - height: 70px; - margin-left: -35px; - margin-top: -35px; - border-radius: 100%; - box-shadow: 0 0 30px rgba(0, 0, 0, 0.3); -} -.hotbox .state .center .label, -.hotbox .state .ring .label, -.hotbox .state .center .key, -.hotbox .state .ring .key { - display: block; - text-align: center; - line-height: 1.4em; - vertical-align: middle; -} -.hotbox .state .center .label, -.hotbox .state .ring .label { - font-size: 16px; - margin-top: 17px; - color: black; - font-weight: normal; - line-height: 1em; -} -.hotbox .state .center .key, -.hotbox .state .ring .key { - font-size: 12px; - color: #999; -} -.hotbox .state .ring-shape { - position: absolute; - left: -25px; - top: -25px; - border: 25px solid rgba(0, 0, 0, 0.3); - border-radius: 100%; - box-sizing: content-box; -} -.hotbox .state .top, -.hotbox .state .bottom { - position: absolute; - white-space: nowrap; -} -.hotbox .state .top .button, -.hotbox .state .bottom .button { - display: inline-block; - padding: 8px 15px; - margin: 0 10px; - border-radius: 15px; - box-shadow: 0 0 30px rgba(0, 0, 0, 0.3); - position: relative; -} -.hotbox .state .top .button .label, -.hotbox .state .bottom .button .label { - font-size: 14px; - line-height: 14px; - vertical-align: middle; - color: black; - line-height: 1em; -} -.hotbox .state .top .button .key, -.hotbox .state .bottom .button .key { - font-size: 12px; - line-height: 12px; - vertical-align: middle; - color: #999; - margin-left: 3px; -} -.hotbox .state .top .button .key:before, -.hotbox .state .bottom .button .key:before { - content: '('; -} -.hotbox .state .top .button .key:after, -.hotbox .state .bottom .button .key:after { - content: ')'; -} -.hotbox .state .button { - background: #F9F9F9; - overflow: hidden; - cursor: default; -} -.hotbox .state .button .key, -.hotbox .state .button .label { - opacity: 0.3; -} -.hotbox .state .button.enabled { - background: white; -} -.hotbox .state .button.enabled .key, -.hotbox .state .button.enabled .label { - opacity: 1; -} -.hotbox .state .button.enabled:hover { - background: #e87372; -} -.hotbox .state .button.enabled:hover .label { - color: white; -} -.hotbox .state .button.enabled:hover .key { - color: #fadfdf; -} -.hotbox .state .button.enabled.selected { - -webkit-animation: selected .1s ease; - background: #e45d5c; -} -.hotbox .state .button.enabled.selected .label { - color: white; -} -.hotbox .state .button.enabled.selected .key { - color: #fadfdf; -} -.hotbox .state .button.enabled.pressed, -.hotbox .state .button.enabled:active { - background: #FF974D; -} -.hotbox .state .button.enabled.pressed .label, -.hotbox .state .button.enabled:active .label { - color: white; -} -.hotbox .state .button.enabled.pressed .key, -.hotbox .state .button.enabled:active .key { - color: #fff0e6; -} -.hotbox .state.active { - display: block; -} -@-webkit-keyframes selected { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - 50% { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} -.hotbox-key-receiver { - position: absolute; - left: -999999px; - top: -999999px; - width: 20px; - height: 20px; - outline: none; - margin: 0; -} diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/hotbox/hotbox.min.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/hotbox/hotbox.min.js deleted file mode 100644 index 50106e0..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/hotbox/hotbox.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * ==================================================== - * Hot Box UI - v1.0.14 - 2015-11-02 - * https://github.com/fex-team/hotbox - * GitHub: https://github.com/fex-team/hotbox.git - * Copyright (c) 2015 Baidu FEX; Licensed BSD - * ==================================================== - */ - -!function(){function a(a){b.r([c[a]])}var b={r:function(a){if(b[a].inited)return b[a].value;if("function"!=typeof b[a].value)return b[a].inited=!0,b[a].value;var c={exports:{}},d=b[a].value(null,c.exports,c);if(b[a].inited=!0,b[a].value=d,void 0!==d)return d;for(var e in c.exports)if(c.exports.hasOwnProperty(e))return b[a].inited=!0,b[a].value=c.exports,c.exports}};b[0]={value:function(a,c,d){d.exports=window.HotBox=b.r(1)}},b[1]={value:function(a,c,d){function e(a){return document.createElement(a)}function f(a,b){a.classList.add(b)}function g(a,b){a.classList.remove(b)}function h(a,b){a.appendChild(b)}function i(a,b){return"object"!=typeof b&&(b=[].slice.apply(arguments,1)),String(a).replace(/\{(\w+)\}/g,function(a,c){return b[c]||a})}function j(a){function b(a){return q?void q.active():(a=a||m,q=new a(v),q.active(),p.onmousedown=function(a){a.stopPropagation(),a.preventDefault()},v)}function c(b){var c=b.type.toLowerCase();if(b.keyHash=l.hash(b),b.isKey=function(a){if(!a)return!1;for(var c=a.split(/\s*\|\s*/);c.length;)if(b.keyHash==l.hash(c.shift()))return!0;return!1},b[c]=!0,b.keyup&&v.activeKey&&b.isKey(v.activeKey)&&t==n&&s)return void g("main",{x:a.clientWidth/2,y:a.clientHeight/2});var d=t==n?s:t;if(d){var e=d.handleKeyEvent(b);return"function"==typeof v.onkeyevent&&(b.handleResult=e,v.onkeyevent(b,e)),e}return null}function d(a){if(!a)return t;if(a==n)throw new Error("Can not define or use the `idle` state.");return r[a]=r[a]||new k(this,a),"main"==a&&(s=r[a]),r[a]}function g(a,b){if(v.position=b,a==n)t!=n&&(u.shift().deactive(),u=[]),t=n;else if("back"==a)t!=n&&(t.deactive(),u.shift(),t=u[0],t?t.active():t="idle");else{t!=n&&t.deactive();var c=r[a];u.unshift(c),"function"==typeof v.position&&(b=v.position(b)),c.active(b),t=c}}function i(a){v._parentFSM=a}function j(){return v._parentFSM}if("string"==typeof a&&(a=document.querySelector(a)),!(a&&a instanceof HTMLElement))throw new Error("No container or not invalid container for hot box");var p=e(o);f(p,"hotbox"),h(a,p),this.$element=p,this.$container=a,this.isIME=!1,this.browser={sg:/se[\s\S]+metasr/.test(navigator.userAgent.toLowerCase())},this._parentFSM={},this.position={};var q,r={},s=null,t=n,u=[],v=this;this.control=b,this.state=d,this.active=g,this.dispatch=c,this.setParentFSM=i,this.getParentFSM=j,this.activeKey="space",this.actionKey="space"}function k(a,b){function c(){function a(a){var b=B.ring,c=2*Math.PI/b.length;B.center&&(B.center.indexedPosition=[0,0]),y.style.marginLeft=y.style.marginTop=-a+"px",y.style.width=y.style.height=a+a+"px";for(var d,e,f,g,h=0;h2&&(g.push(d>0?"right":"left"),g.push(f+m(e))),m(e)>2&&(g.push(e>0?"down":"up"),g.push(f+m(d)));g.length;)h=g.shift(),j=g.shift(),(!i[h]||j{label}{key}',{label:b.label,key:b.key&&b.key.split("|")[0]})}function l(b){b=b||{x:a.$container.clientWidth/2,y:a.$container.clientHeight/2},b&&(v.style.left=b.x+"px",v.style.top=b.y+"px"),C.forEach(function(a){var b=a.$button;b&&b.classList[a.enable()?"add":"remove"]("enabled"),a.beforeShow&&a.beforeShow()}),f(v,u),G&&c(),D||q(B.center||B.ring[0]||B.top[0]||B.bottom[0]),F=!0}function m(){g(v,u),q(null),F=!1}function p(a){E&&E.$button&&g(E.$button,t),E=a,E&&E.$button&&f(E.$button,t)}function q(a){D&&D.$button&&D.$button&&g(D.$button,s),D=a,D&&D.$button&&f(D.$button,s)}function r(b){b&&((!b.enable||b.enable())&&(b.action&&b.action(b),a.active(b.next||n,a.position)),p(null),q(null))}var s="selected",t="pressed",u="active",v=e(o),w=e(o),x=e(o),y=e("div"),z=e(o),A=e(o);f(v,"state"),f(v,b),f(w,"center"),f(x,"ring"),f(y,"ring-shape"),f(z,"top"),f(A,"bottom"),h(a.$element,v),h(v,y),h(v,w),h(v,x),h(v,z),h(v,A),this.name=b;var B={center:null,ring:[],top:[],bottom:[],behind:[]},C=[],D=null,E=null,F=!1,G=!0;this.button=function(a){var b=j(a);"center"==a.position?B.center=b:B[a.position]&&B[a.position].push(b),C.push(b),G=!0},this.active=l,this.deactive=m,v.onmouseup=function(a){if(!a.button)for(var b=a.target;b&&b!=v;)b.classList.contains("button")&&C.forEach(function(a){a.$button==b&&r(a)}),b=b.parentNode},this.handleKeyEvent=function(c){var d=null;if(a.browser.sg&&c.isKey("esc"))return E?c.isKey(E.key)||p(null):a.active("back",a.position),"back";if(c.keydown||a.isIME&&c.keyup){if(C.forEach(function(e){if(e.enable()&&c.isKey(e.key)){if(F||a.hintDeactiveMainState){if(q(e),p(e),d="buttonpress",c.keyup)return r(e),d="execute"}else r(e),d="execute";c.preventDefault(),c.stopPropagation(),!F&&a.hintDeactiveMainState&&a.active(b,a.position)}}),F){if(c.isKey("esc"))return E?c.isKey(E.key)||p(null):a.active("back",a.position),"back";["up","down","left","right"].forEach(function(a){if(c.isKey(a)){if(!D)return void q(B.center||B.ring[0]||B.top[0]||B.bottom[0]);for(var b=D.neighbor[a];b&&!b.enable();)b=b.neighbor[a];b&&q(b),d="navigate"}}),c.isKey("space")&&c.keyup?(r(D),c.preventDefault(),c.stopPropagation(),d="execute"):c.isKey("space")&&D?(p(D),d="buttonpress"):E&&E!=D&&(p(null),d="selectcancel")}}else!c.keyup||!F&&a.hintDeactiveMainState||E&&(c.isKey("space")&&D==E||c.isKey(E.key))&&(r(E),c.preventDefault(),c.stopPropagation(),d="execute");return a.isIME=229==c.keyCode&&c.keydown,d}}var l=b.r(2),m=b.r(3),n=j.STATE_IDLE="idle",o="div";d.exports=j}},b[2]={value:function(a,c,d){function e(a){return"string"==typeof a?h(a):g(a)}function f(a,b){return a&&b&&e(a)==e(b)}function g(a){var b=0;return(a.ctrlKey||a.metaKey)&&(b|=j),a.altKey&&(b|=k),a.shiftKey&&(b|=l),-1==[16,17,18,91].indexOf(a.keyCode)&&(b|=a.keyCode),b}function h(a){var b=0;return a.toLowerCase().split(/\s*\+\s*/).forEach(function(a){switch(a){case"ctrl":case"cmd":b|=j;break;case"alt":b|=k;break;case"shift":b|=l;break;default:b|=i[a]}}),b}var i=b.r(4),j=4096,k=8192,l=16384;c.hash=e,c.is=f}},b[3]={value:function(a,c,d){function e(a){function b(){j=document.createElement("input"),j.classList.add(g),m.appendChild(j),l=!0}function c(){j.onkeyup=e,j.onkeypress=e,j.onkeydown=e,j.onfocus=h,j.onblur=i,l&&(j.oninput=function(a){j.value=null})}function d(){m.onmousedown=function(a){h(),a.preventDefault()}}function e(b){k&&a.dispatch(b)}function h(){j.select(),j.focus(),k=!0,m.classList.add(f)}function i(){j.blur(),k=!1,m.classList.remove(f)}var j,k=!0,l=!1,m=a.$container;b(),c(),d(),h(),this.handle=e,this.active=h,this.deactive=i}var f=(b.r(2),"hotbox-focus"),g="hotbox-key-receiver";d.exports=e}},b[4]={value:function(a,b,c){var d={Shift:16,Control:17,Alt:18,CapsLock:20,BackSpace:8,Tab:9,Enter:13,Esc:27,Space:32,PageUp:33,PageDown:34,End:35,Home:36,Insert:45,Left:37,Up:38,Right:39,Down:40,Direction:{37:1,38:1,39:1,40:1},Delete:46,NumLock:144,Cmd:91,CmdFF:224,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,"`":192,"=":187,"-":189,"/":191,".":190};for(var e in d)d.hasOwnProperty(e)&&(d[e.toLowerCase()]=d[e]);var f=65,g="a".charCodeAt(0);"abcdefghijklmnopqrstuvwxyz".split("").forEach(function(a){d[a]=f+(a.charCodeAt(0)-g)});var h=9;do d[h.toString()]=h+48;while(--h);c.exports=d}};var c={expose:0};a("expose")}(); \ No newline at end of file diff --git a/dzz/system/ueditor/dialogs/kityminder/bower_components/jquery/dist/jquery.min.js b/dzz/system/ueditor/dialogs/kityminder/bower_components/jquery/dist/jquery.min.js deleted file mode 100644 index 4c5be4c..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/bower_components/jquery/dist/jquery.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v3.1.1 | (c) jQuery Foundation | jquery.org/license */ -!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):C.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/[^\x20\t\r\n\f]+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R), -a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,ka=/^$|\/(?:java|ecma)script/i,la={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};la.optgroup=la.option,la.tbody=la.tfoot=la.colgroup=la.caption=la.thead,la.th=la.td;function ma(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function na(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=ma(l.appendChild(f),"script"),j&&na(g),c){k=0;while(f=g[k++])ka.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var qa=d.documentElement,ra=/^key/,sa=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ta=/^([^.]*)(?:\.(.+)|)/;function ua(){return!0}function va(){return!1}function wa(){try{return d.activeElement}catch(a){}}function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)xa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=va;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(qa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,za=/\s*$/g;function Da(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Ea(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Fa(a){var b=Ba.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ga(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Aa.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ia(f,b,c,d)});if(m&&(e=pa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(ma(e,"script"),Ea),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=ma(h),f=ma(a),d=0,e=f.length;d0&&na(g,!i&&ma(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ja(this,a,!0)},remove:function(a){return Ja(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.appendChild(a)}})},prepend:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(ma(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!za.test(a)&&!la[(ja.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function Ya(a,b,c,d,e){return new Ya.prototype.init(a,b,c,d,e)}r.Tween=Ya,Ya.prototype={constructor:Ya,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Ya.propHooks[this.prop];return a&&a.get?a.get(this):Ya.propHooks._default.get(this)},run:function(a){var b,c=Ya.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ya.propHooks._default.set(this),this}},Ya.prototype.init.prototype=Ya.prototype,Ya.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Ya.propHooks.scrollTop=Ya.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Ya.prototype.init,r.fx.step={};var Za,$a,_a=/^(?:toggle|show|hide)$/,ab=/queueHooks$/;function bb(){$a&&(a.requestAnimationFrame(bb),r.fx.tick())}function cb(){return a.setTimeout(function(){Za=void 0}),Za=r.now()}function db(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ba[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function eb(a,b,c){for(var d,e=(hb.tweeners[b]||[]).concat(hb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?ib:void 0)), -void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),ib={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=jb[b]||r.find.attr;jb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=jb[g],jb[g]=e,e=null!=c(a,b,d)?g:null,jb[g]=f),e}});var kb=/^(?:input|select|textarea|button)$/i,lb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):kb.test(a.nodeName)||lb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function mb(a){var b=a.match(K)||[];return b.join(" ")}function nb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,nb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,nb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,nb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=nb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(nb(c))+" ").indexOf(b)>-1)return!0;return!1}});var ob=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(ob,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:mb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ia.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,"$1"),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dzz/system/ueditor/dialogs/kityminder/dist/kityminder.editor.css b/dzz/system/ueditor/dialogs/kityminder/dist/kityminder.editor.css deleted file mode 100644 index 3a13276..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/dist/kityminder.editor.css +++ /dev/null @@ -1,1622 +0,0 @@ -.km-editor { - overflow: hidden; - z-index: 2; -} -.km-editor > .mask { - display: block; - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - background-color: transparent; -} -.km-editor > .receiver { - position: absolute; - background: white; - outline: none; - box-shadow: 0 0 20px rgba(0, 0, 0, 0.5); - left: 0; - top: 0; - padding: 3px 5px; - margin-left: -3px; - margin-top: -5px; - max-width: 300px; - width: auto; - font-size: 14px; - line-height: 1.4em; - min-height: 1.4em; - box-sizing: border-box; - overflow: hidden; - word-break: break-all; - word-wrap: break-word; - border: none; - -webkit-user-select: text; - pointer-events: none; - opacity: 0; - z-index: -1000; -} -.km-editor > .receiver.debug { - opacity: 1; - outline: 1px solid green; - background: none; - z-index: 0; -} -.km-editor > .receiver.input { - pointer-events: all; - opacity: 1; - z-index: 999; - background: white; - outline: none; -} -div.minder-editor-container { - position: absolute; - top: 40px; - bottom: 0; - left: 0; - right: 0; - font-family: Arial, "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; -} -.minder-editor { - position: absolute; - top: 92px; - left: 0; - right: 0; - bottom: 0; -} -.minder-viewer { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; -} -.control-panel { - position: absolute; - top: 0; - right: 0; - width: 250px; - bottom: 0; - border-left: 1px solid #CCC; -} -.minder-divider { - position: absolute; - top: 0; - right: 250px; - bottom: 0; - width: 2px; - background-color: #fbfbfb; - cursor: ew-resize; -} -.panel-body { - padding: 10px; -} -.upload-image { - width: 0.1px; - height: 0.1px; - opacity: 0; - overflow: hidden; - position: absolute; - z-index: -1; -} -.top-tab .nav-tabs { - background-color: #e1e1e1; - border: 0; - height: 32px; -} -.top-tab .nav-tabs li { - margin: 0; -} -.top-tab .nav-tabs li a { - margin: 0; - border: 0; - padding: 6px 15px; - border-radius: 0; - vertical-align: middle; -} -.top-tab .nav-tabs li a:hover, -.top-tab .nav-tabs li a:focus { - background: inherit; - border: 0; -} -.top-tab .nav-tabs li.active a { - border: 0; - background-color: #fff; -} -.top-tab .nav-tabs li.active a:hover, -.top-tab .nav-tabs li.active a:focus { - border: 0; -} -.top-tab .tab-content { - height: 60px; - background-color: #fff; - border-bottom: 1px solid #dbdbdb; -} -.top-tab .tab-pane { - font-size: 0; -} -.km-btn-group { - display: inline-block; - margin: 5px 0; - padding: 0 5px; - vertical-align: middle; - border-right: 1px dashed #eee; -} -.km-btn-item { - display: inline-block; - margin: 0 3px; - font-size: 0; - cursor: default; -} -.km-btn-item[disabled] { - opacity: 0.5; -} -.km-btn-item[disabled]:hover, -.km-btn-item[disabled]:active { - background-color: #fff; -} -.km-btn-item .km-btn-icon { - display: inline-block; - background: url(images/icons.png) no-repeat; - background-position: 0 20px; - width: 20px; - height: 20px; - padding: 2px; - margin: 1px; - vertical-align: middle; -} -.km-btn-item .km-btn-caption { - display: inline-block; - font-size: 12px; - vertical-align: middle; -} -.km-btn-item:hover { - background-color: #eff3fa; -} -.km-btn-item:active { - background-color: #c4d0ee; -} -.do-group { - width: 38px; -} -.undo .km-btn-icon { - background-position: 0 -1240px; -} -.redo .km-btn-icon { - background-position: 0 -1220px; -} -.append-group { - width: 212px; -} -.append-child-node .km-btn-icon { - background-position: 0 0; -} -.append-sibling-node .km-btn-icon { - background-position: 0 -20px; -} -.append-parent-node .km-btn-icon { - background-position: 0 -40px; -} -.arrange-group { - width: 64px; -} -.arrange-up .km-btn-icon { - background-position: 0 -280px; -} -.arrange-down .km-btn-icon { - background-position: 0 -300px; -} -.operation-group { - width: 64px; -} -.edit-node .km-btn-icon { - background-position: 0 -60px; -} -.remove-node .km-btn-icon { - background-position: 0 -80px; -} -.btn-group-vertical { - vertical-align: middle; - margin: 5px; -} -.btn-group-vertical .hyperlink, -.btn-group-vertical .hyperlink-caption { - width: 40px; - margin: 0; - padding: 0; - border: none!important; - border-radius: 0!important; -} -.btn-group-vertical .hyperlink:hover, -.btn-group-vertical .hyperlink-caption:hover { - background-color: #eff3fa; -} -.btn-group-vertical .hyperlink:active, -.btn-group-vertical .hyperlink-caption:active { - background-color: #c4d0ee; -} -.btn-group-vertical .hyperlink.active, -.btn-group-vertical .hyperlink-caption.active { - box-shadow: none; - background-color: #eff3fa; -} -.btn-group-vertical .hyperlink { - height: 25px; - background: url(images/icons.png) no-repeat center -100px; -} -.btn-group-vertical .hyperlink-caption { - height: 20px; -} -.btn-group-vertical .hyperlink-caption .caption { - font-size: 12px; -} -.open > .dropdown-toggle.btn-default { - background-color: #eff3fa; -} -.btn-group-vertical .image-btn, -.btn-group-vertical .image-btn-caption { - width: 40px; - margin: 0; - padding: 0; - border: none!important; - border-radius: 0!important; -} -.btn-group-vertical .image-btn:hover, -.btn-group-vertical .image-btn-caption:hover { - background-color: #eff3fa; -} -.btn-group-vertical .image-btn:active, -.btn-group-vertical .image-btn-caption:active { - background-color: #c4d0ee; -} -.btn-group-vertical .image-btn.active, -.btn-group-vertical .image-btn-caption.active { - box-shadow: none; - background-color: #eff3fa; -} -.btn-group-vertical .image-btn { - height: 25px; - background: url(images/icons.png) no-repeat center -125px; -} -.btn-group-vertical .image-btn-caption { - height: 20px; -} -.btn-group-vertical .image-btn-caption .caption { - font-size: 12px; -} -.image-preview { - display: block; - max-width: 50%; -} -.modal-body .tab-pane { - font-size: inherit; - padding-top: 15px; -} -.search-result { - margin-top: 15px; - height: 370px; - overflow: hidden; -} -.search-result ul { - margin: 0; - padding: 0; - list-style: none; - clear: both; - height: 100%; - overflow-x: hidden; - overflow-y: auto; -} -.search-result ul li { - list-style: none; - float: left; - display: block; - width: 130px; - height: 130px; - line-height: 130px; - margin: 6px; - padding: 0; - font-size: 12px; - position: relative; - vertical-align: top; - text-align: center; - overflow: hidden; - cursor: pointer; - border: 2px solid #fcfcfc; -} -.search-result ul li.selected { - border: 2px solid #fc8383; -} -.search-result ul li img { - max-width: 126px; - max-height: 130px; - vertical-align: middle; -} -.search-result ul li span { - display: block; - position: absolute; - bottom: 0; - height: 20px; - background: rgba(0, 0, 0, 0.5); - left: 0; - right: 0; - color: white; - line-height: 20px; - overflow: hidden; - text-overflow: ellipsis; - word-break: break-all; - white-space: nowrap; - opacity: 0; - -webkit-transform: translate(0, 20px); - -ms-transform: translate(0, 20px); - transform: translate(0, 20px); - -webkit-transition: all .2s ease; - transition: all .2s ease; -} -.search-result ul li:hover span { - opacity: 1; - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - transform: translate(0, 0); -} -@media (min-width: 768px) { - .form-inline .form-control { - width: 422px; - } -} -.btn-group-vertical { - vertical-align: top; - margin: 5px; -} -.btn-group-vertical.note-btn-group { - border-right: 1px dashed #eee; - padding-right: 5px; -} -.btn-group-vertical .note-btn, -.btn-group-vertical .note-btn-caption { - width: 40px; - margin: 0; - padding: 0; - border: none!important; - border-radius: 0!important; -} -.btn-group-vertical .note-btn:hover, -.btn-group-vertical .note-btn-caption:hover { - background-color: #eff3fa; -} -.btn-group-vertical .note-btn:active, -.btn-group-vertical .note-btn-caption:active { - background-color: #c4d0ee; -} -.btn-group-vertical .note-btn.active, -.btn-group-vertical .note-btn-caption.active { - box-shadow: none; - background-color: #eff3fa; -} -.btn-group-vertical .note-btn { - height: 25px; - background: url(images/icons.png) no-repeat center -1150px; -} -.btn-group-vertical .note-btn-caption { - height: 20px; -} -.btn-group-vertical .note-btn-caption .caption { - font-size: 12px; -} -.open > .dropdown-toggle.btn-default { - background-color: #eff3fa; -} -.gfm-render { - font-size: 12px; - -webkit-user-select: text; - color: #333; - line-height: 1.8em; -} -.gfm-render blockquote, -.gfm-render ul, -.gfm-render table, -.gfm-render p, -.gfm-render pre, -.gfm-render hr { - margin: 1em 0; - cursor: text; -} -.gfm-render blockquote:first-child:last-child, -.gfm-render ul:first-child:last-child, -.gfm-render table:first-child:last-child, -.gfm-render p:first-child:last-child, -.gfm-render pre:first-child:last-child, -.gfm-render hr:first-child:last-child { - margin: 0; -} -.gfm-render img { - max-width: 100%; -} -.gfm-render a { - color: blue; -} -.gfm-render a:hover { - color: red; -} -.gfm-render blockquote { - display: block; - border-left: 4px solid #E4AD91; - color: #da8e68; - padding-left: 10px; - font-style: italic; - margin-left: 2em; -} -.gfm-render ul, -.gfm-render ol { - padding-left: 3em; -} -.gfm-render table { - width: 100%; - border-collapse: collapse; - margin: 1em 0; -} -.gfm-render table th, -.gfm-render table td { - border: 1px solid #666; - padding: 2px 4px; -} -.gfm-render table th { - background: rgba(45, 141, 234, 0.2); -} -.gfm-render table tr:nth-child(even) td { - background: rgba(45, 141, 234, 0.03); -} -.gfm-render em { - color: red; -} -.gfm-render del { - color: #999; -} -.gfm-render pre { - background: rgba(45, 141, 234, 0.1); - padding: 5px; - border-radius: 5px; - word-break: break-all; - word-wrap: break-word; -} -.gfm-render code { - background: rgba(45, 141, 234, 0.1); - /* display: inline-block; */ - padding: 0 5px; - border-radius: 3px; -} -.gfm-render pre code { - background: none; -} -.gfm-render hr { - border: none; - border-top: 1px solid #CCC; -} -.gfm-render .highlight { - background: yellow; - color: red; -} -.km-note { - width: 300px; - border-left: 1px solid #babfcd; - padding: 5px 10px; - background: white; - position: absolute; - top: 92px; - right: 0; - bottom: 0; - left: auto; - z-index: 3; -} -.km-note.panel { - margin: 0; - padding: 0; -} -.km-note.panel .panel-heading h3 { - display: inline-block; -} -.km-note.panel .panel-heading .close-note-editor { - width: 15px; - height: 15px; - display: inline-block; - float: right; -} -.km-note.panel .panel-heading .close-note-editor:hover { - cursor: pointer; -} -.km-note.panel .panel-body { - padding: 0; -} -.km-note .CodeMirror { - position: absolute; - top: 41px; - bottom: 0; - height: auto; - cursor: text; - font-size: 14px; - line-height: 1.3em; - font-family: consolas; -} -.km-note-tips { - color: #ccc; - padding: 3px 8px; -} -#previewer-content { - position: absolute; - background: #FFD; - padding: 5px 15px; - border-radius: 5px; - max-width: 400px; - max-height: 200px; - overflow: auto; - z-index: 10; - box-shadow: 0 0 15px rgba(0, 0, 0, 0.5); - word-break: break-all; - font-size: 12px; - -webkit-user-select: text; - color: #333; - line-height: 1.8em; -} -#previewer-content blockquote, -#previewer-content ul, -#previewer-content table, -#previewer-content p, -#previewer-content pre, -#previewer-content hr { - margin: 1em 0; - cursor: text; -} -#previewer-content blockquote:first-child:last-child, -#previewer-content ul:first-child:last-child, -#previewer-content table:first-child:last-child, -#previewer-content p:first-child:last-child, -#previewer-content pre:first-child:last-child, -#previewer-content hr:first-child:last-child { - margin: 0; -} -#previewer-content img { - max-width: 100%; -} -#previewer-content a { - color: blue; -} -#previewer-content a:hover { - color: red; -} -#previewer-content blockquote { - display: block; - border-left: 4px solid #E4AD91; - color: #da8e68; - padding-left: 10px; - font-style: italic; - margin-left: 2em; -} -#previewer-content ul, -#previewer-content ol { - padding-left: 3em; -} -#previewer-content table { - width: 100%; - border-collapse: collapse; - margin: 1em 0; -} -#previewer-content table th, -#previewer-content table td { - border: 1px solid #666; - padding: 2px 4px; -} -#previewer-content table th { - background: rgba(45, 141, 234, 0.2); -} -#previewer-content table tr:nth-child(even) td { - background: rgba(45, 141, 234, 0.03); -} -#previewer-content em { - color: red; -} -#previewer-content del { - color: #999; -} -#previewer-content pre { - background: rgba(45, 141, 234, 0.1); - padding: 5px; - border-radius: 5px; - word-break: break-all; - word-wrap: break-word; -} -#previewer-content code { - background: rgba(45, 141, 234, 0.1); - /* display: inline-block; */ - padding: 0 5px; - border-radius: 3px; -} -#previewer-content pre code { - background: none; -} -#previewer-content hr { - border: none; - border-top: 1px solid #CCC; -} -#previewer-content .highlight { - background: yellow; - color: red; -} -#previewer-content.ng-hide { - display: block!important; - left: -99999px !important; - top: -99999px !important; -} -.panel-body { - padding: 10px; -} -.tab-content .km-priority { - vertical-align: middle; - font-size: inherit; - display: inline-block; - width: 140px; - margin: 5px; - border-right: 1px dashed #eee; -} -.tab-content .km-priority .km-priority-item { - margin: 0 1px; - padding: 1px; -} -.tab-content .km-priority .km-priority-item .km-priority-icon { - background: url(images/iconpriority.png) repeat-y; - background-color: transparent; -} -.tab-content .km-priority .km-priority-item .km-priority-icon.priority-0 { - background-position: 0 20px; -} -.tab-content .km-priority .km-priority-item .km-priority-icon.priority-1 { - background-position: 0 0px; -} -.tab-content .km-priority .km-priority-item .km-priority-icon.priority-2 { - background-position: 0 -20px; -} -.tab-content .km-priority .km-priority-item .km-priority-icon.priority-3 { - background-position: 0 -40px; -} -.tab-content .km-priority .km-priority-item .km-priority-icon.priority-4 { - background-position: 0 -60px; -} -.tab-content .km-priority .km-priority-item .km-priority-icon.priority-5 { - background-position: 0 -80px; -} -.tab-content .km-priority .km-priority-item .km-priority-icon.priority-6 { - background-position: 0 -100px; -} -.tab-content .km-priority .km-priority-item .km-priority-icon.priority-7 { - background-position: 0 -120px; -} -.tab-content .km-priority .km-priority-item .km-priority-icon.priority-8 { - background-position: 0 -140px; -} -.tab-content .km-priority .km-priority-item .km-priority-icon.priority-9 { - background-position: 0 -160px; -} -.tab-content .km-progress { - vertical-align: middle; - font-size: inherit; - display: inline-block; - width: 140px; - margin: 5px; - border-right: 1px dashed #eee; -} -.tab-content .km-progress .km-progress-item { - margin: 0 1px; - padding: 1px; -} -.tab-content .km-progress .km-progress-item .km-progress-icon { - background: url(images/iconprogress.png) repeat-y; - background-color: transparent; -} -.tab-content .km-progress .km-progress-item .km-progress-icon.progress-0 { - background-position: 0 20px; -} -.tab-content .km-progress .km-progress-item .km-progress-icon.progress-1 { - background-position: 0 0px; -} -.tab-content .km-progress .km-progress-item .km-progress-icon.progress-2 { - background-position: 0 -20px; -} -.tab-content .km-progress .km-progress-item .km-progress-icon.progress-3 { - background-position: 0 -40px; -} -.tab-content .km-progress .km-progress-item .km-progress-icon.progress-4 { - background-position: 0 -60px; -} -.tab-content .km-progress .km-progress-item .km-progress-icon.progress-5 { - background-position: 0 -80px; -} -.tab-content .km-progress .km-progress-item .km-progress-icon.progress-6 { - background-position: 0 -100px; -} -.tab-content .km-progress .km-progress-item .km-progress-icon.progress-7 { - background-position: 0 -120px; -} -.tab-content .km-progress .km-progress-item .km-progress-icon.progress-8 { - background-position: 0 -140px; -} -.tab-content .km-progress .km-progress-item .km-progress-icon.progress-9 { - background-position: 0 -160px; -} -.resource-editor { - vertical-align: middle; - display: inline-block; - margin: 5px; -} -.resource-editor .input-group, -.resource-editor .km-resource { - font-size: 12px; -} -.resource-editor .input-group { - height: 20px; - width: 168px; -} -.resource-editor .resource-dropdown { - position: relative; - width: 168px; - border: 1px solid #ccc; - margin-top: -1px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.resource-editor .resource-dropdown .km-resource { - position: absolute; - width: 154px; - margin-bottom: 3px; - padding: 0; - list-style-type: none; - overflow: scroll; - max-height: 500px; -} -.resource-editor .resource-dropdown .km-resource.open { - z-index: 3; - background-color: #fff; -} -.resource-editor .resource-dropdown .km-resource li { - display: inline-block; - padding: 1px 2px; - border-radius: 4px; - margin: 2px 3px; -} -.resource-editor .resource-dropdown .km-resource li[disabled] { - opacity: 0.5; -} -.resource-editor .resource-dropdown .resource-caret { - display: block; - float: right; - vertical-align: middle; - width: 12px; - height: 24px; - padding: 8px 1px; -} -.resource-editor .resource-dropdown .resource-caret:hover { - background-color: #eff3fa; -} -.resource-editor .resource-dropdown .resource-caret:active { - background-color: #c4d0ee; -} -.resource-editor input.form-control, -.resource-editor .btn { - font-size: 12px; -} -.resource-editor input.form-control { - padding: 2px 4px; - height: 24px; - border-bottom-left-radius: 0; -} -.resource-editor .input-group-btn { - line-height: 24px; -} -.resource-editor .input-group-btn .btn { - padding: 2px 4px; - height: 24px; - border-bottom-right-radius: 0; -} -.temp-panel { - margin: 5px 5px 5px 10px; - border-right: 1px dashed #eee; - display: inline-block; - vertical-align: middle; -} -.temp-list { - min-width: 124px; -} -.temp-item-wrap { - width: 50px; - height: 40px; - padding: 0 2px; - margin: 5px; - display: inline-block; -} -.temp-item { - display: inline-block; - width: 50px; - height: 40px; - background-image: url(images/template.png); - background-repeat: no-repeat; -} -.temp-item.default { - background-position: 0 0; -} -.temp-item.structure { - background-position: -50px 0; -} -.temp-item.filetree { - background-position: -100px 0; -} -.temp-item.right { - background-position: -150px 0; -} -.temp-item.fish-bone { - background-position: -200px 0; -} -.temp-item.tianpan { - background-position: -250px 0; -} -.current-temp-item { - width: 74px; - padding: 0 0 0 5px; - border: 1px solid #fff; -} -.current-temp-item:hover { - background-color: #eff3fa; -} -.current-temp-item[disabled] { - opacity: 0.5; -} -.current-temp-item .caret { - margin-left: 5px; -} -.temp-item-selected { - background-color: #87a9da; -} -.theme-panel { - height: 42px; - margin: 5px; - padding: 0 5px 0 0; - border-right: 1px dashed #eee; - display: inline-block; - vertical-align: middle; -} -.theme-list { - min-width: 162px; -} -div a.theme-item { - display: inline-block; - width: 70px; - height: 30px; - text-align: center; - line-height: 30px; - padding: 0 5px; - font-size: 12px; - cursor: pointer; - text-decoration: none; - color: #000; -} -.theme-item-selected { - width: 100px; - padding: 6px 7px; - border: 1px solid #fff; -} -.theme-item-selected:hover { - background-color: #eff3fa; -} -.theme-item-selected .caret { - margin-left: 5px; -} -.theme-item-selected[disabled] { - opacity: 0.5; -} -.theme-item-wrap { - display: inline-block; - width: 80px; - height: 40px; - padding: 5px; -} -.theme-item-wrap:hover { - background-color: #eff3fa; -} -.readjust-layout { - display: inline-block; - vertical-align: middle; - padding: 0 10px 0 5px; - border-right: 1px dashed #eee; -} -.btn-icon { - width: 25px; - height: 25px; - margin-left: 12px; - display: block; -} -.btn-label { - font-size: 12px; -} -.btn-wrap { - width: 50px; - height: 42px; - cursor: pointer; - display: inline-block; - text-decoration: none; -} -.btn-wrap[disabled] span { - opacity: 0.5; -} -.btn-wrap[disabled] { - cursor: default; -} -.btn-wrap[disabled]:hover { - background-color: transparent; -} -.btn-wrap[disabled]:active { - background-color: transparent; -} -.btn-wrap:link { - text-decoration: none; -} -.btn-wrap:visited { - text-decoration: none; -} -.btn-wrap:hover { - background-color: #eff3fa; - text-decoration: none; -} -.btn-wrap:active { - background-color: #c4d0ee; -} -.reset-layout-icon { - background: url(images/icons.png) no-repeat; - background-position: 0 -150px; -} -.style-operator { - display: inline-block; - vertical-align: middle; - padding: 0 5px; - border-right: 1px dashed #eee; -} -.style-operator .clear-style { - vertical-align: middle; -} -.clear-style-icon { - background: url(images/icons.png) no-repeat; - background-position: 0 -175px; -} -.s-btn-group-vertical { - display: inline-block; - vertical-align: middle; -} -.s-btn-icon { - width: 20px; - height: 20px; - margin-right: 3px; - display: inline-block; - vertical-align: middle; -} -.s-btn-label { - font-size: 12px; - vertical-align: middle; - display: inline-block; -} -.s-btn-wrap { - padding: 0 5px 0 3px; - display: inline-block; - text-decoration: none; - font-size: 0; -} -.s-btn-wrap[disabled] span { - opacity: 0.5; -} -.s-btn-wrap[disabled] { - cursor: default; -} -.s-btn-wrap[disabled]:hover { - background-color: transparent; -} -.s-btn-wrap[disabled]:active { - background-color: transparent; -} -.s-btn-wrap:hover { - background-color: #eff3fa; - text-decoration: none; -} -.s-btn-wrap:active { - background-color: #c4d0ee; -} -.copy-style-icon { - background: url(images/icons.png) no-repeat; - background-position: 0 -200px; -} -.paste-style-wrap { - display: block; -} -.paste-style-icon { - background: url(images/icons.png) no-repeat; - background-position: 0 -220px; -} -.font-operator { - width: 170px; - display: inline-block; - vertical-align: middle; - font-size: 12px; - padding: 0 5px; -} -.font-operator .font-size-list { - display: inline-block; - border: 1px solid #eee; - padding: 2px 4px; -} -.font-operator .font-family-list { - display: inline-block; - border: 1px solid #eee; - padding: 2px 4px; -} -.current-font-item a { - text-decoration: none; - display: inline-block; -} -.current-font-family { - width: 75px; - height: 18px; - overflow: hidden; - vertical-align: bottom; -} -.current-font-size { - width: 32px; - height: 18px; - overflow: hidden; - vertical-align: bottom; -} -.current-font-item[disabled] { - opacity: 0.5; -} -.font-item { - line-height: 1em; - text-align: left; -} -.font-item-selected { - background-color: #87a9da; -} -.font-bold, -.font-italics { - display: inline-block; - background: url(images/icons.png) no-repeat; - cursor: pointer; - margin: 0 3px; -} -.font-bold:hover, -.font-italics:hover { - background-color: #eff3fa; -} -.font-bold:active, -.font-italics:active { - background-color: #c4d0ee; -} -.font-bold[disabled], -.font-italics[disabled] { - opacity: 0.5; -} -.font-bold { - background-position: 0 -240px; -} -.font-italics { - background-position: 0 -260px; -} -.font-bold-selected, -.font-italics-selected { - background-color: #87a9da; -} -.font-color-wrap { - display: inline-block; - width: 30px; - height: 22px; - margin: 3px 3px 0 0; - border: 1px #efefef solid; - vertical-align: middle; - font-size: 0; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.font-color-wrap[disabled] { - opacity: 0.5; -} -.font-color-wrap .quick-font-color { - display: inline-block; - width: 20px; - height: 16px; - font-size: 14px; - line-height: 16px; - vertical-align: top; - text-align: center; - cursor: default; - color: #000; -} -.font-color-wrap .quick-font-color:hover { - background-color: #eff3fa; -} -.font-color-wrap .quick-font-color:active { - background-color: #c4d0ee; -} -.font-color-wrap .quick-font-color[disabled] { - opacity: 0.5; -} -.font-color-wrap .font-color-preview { - display: inline-block; - width: 12px; - height: 2px; - margin: 0 4px 0; - background-color: #000; -} -.font-color-wrap .font-color-preview[disabled] { - opacity: 0.5; -} -.font-color { - display: inline-block; - width: 8px; - height: 16px; -} -.font-color:hover { - background-color: #eff3fa; -} -.font-color:active { - background-color: #c4d0ee; -} -.font-color[disabled] { - opacity: 0.5; -} -.font-color .caret { - margin-left: -2px; - margin-top: 7px; -} -.bg-color-wrap { - display: inline-block; - width: 30px; - height: 22px; - margin: 3px 3px 0 0; - border: 1px #efefef solid; - vertical-align: middle; - font-size: 0; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.bg-color-wrap[disabled] { - opacity: 0.5; -} -.bg-color-wrap .quick-bg-color { - display: inline-block; - width: 20px; - height: 16px; - font-size: 14px; - line-height: 16px; - vertical-align: top; - text-align: center; - cursor: default; - color: #000; - background: url(images/icons.png) no-repeat center -1260px; -} -.bg-color-wrap .quick-bg-color:hover { - background-color: #eff3fa; -} -.bg-color-wrap .quick-bg-color:active { - background-color: #c4d0ee; -} -.bg-color-wrap .quick-bg-color[disabled] { - opacity: 0.5; -} -.bg-color-wrap .bg-color-preview { - display: inline-block; - width: 12px; - height: 2px; - margin: 0 4px 0; - background-color: #fff; -} -.bg-color-wrap .bg-color-preview[disabled] { - opacity: 0.5; -} -.bg-color { - display: inline-block; - width: 8px; - height: 16px; -} -.bg-color:hover { - background-color: #eff3fa; -} -.bg-color:active { - background-color: #c4d0ee; -} -.bg-color[disabled] { - opacity: 0.5; -} -.bg-color .caret { - margin-left: -2px; - margin-top: 7px; -} -.btn-group-vertical { - vertical-align: middle; - margin: 5px; -} -.btn-group-vertical .expand, -.btn-group-vertical .expand-caption { - width: 40px; - margin: 0; - padding: 0; - border: none!important; - border-radius: 0!important; -} -.btn-group-vertical .expand:hover, -.btn-group-vertical .expand-caption:hover { - background-color: #eff3fa; -} -.btn-group-vertical .expand:active, -.btn-group-vertical .expand-caption:active { - background-color: #c4d0ee; -} -.btn-group-vertical .expand.active, -.btn-group-vertical .expand-caption.active { - box-shadow: none; - background-color: #eff3fa; -} -.btn-group-vertical .expand { - height: 25px; - background: url(images/icons.png) no-repeat 0 -995px; - background-position-x: 50%; -} -.btn-group-vertical .expand-caption { - height: 20px; -} -.btn-group-vertical .expand-caption .caption { - font-size: 12px; -} -.btn-group-vertical { - vertical-align: middle; - margin: 5px; -} -.btn-group-vertical .select, -.btn-group-vertical .select-caption { - width: 40px; - margin: 0; - padding: 0; - border: none!important; - border-radius: 0!important; -} -.btn-group-vertical .select:hover, -.btn-group-vertical .select-caption:hover { - background-color: #eff3fa; -} -.btn-group-vertical .select:active, -.btn-group-vertical .select-caption:active { - background-color: #c4d0ee; -} -.btn-group-vertical .select.active, -.btn-group-vertical .select-caption.active { - box-shadow: none; - background-color: #eff3fa; -} -.btn-group-vertical .select { - height: 25px; - background: url(images/icons.png) no-repeat 7px -1175px; -} -.btn-group-vertical .select-caption { - height: 20px; -} -.btn-group-vertical .select-caption .caption { - font-size: 12px; -} -.btn-group-vertical { - vertical-align: middle; - margin: 5px; -} -.btn-group-vertical .search, -.btn-group-vertical .search-caption { - width: 40px; - margin: 0; - padding: 0; - border: none!important; - border-radius: 0!important; -} -.btn-group-vertical .search:hover, -.btn-group-vertical .search-caption:hover { - background-color: #eff3fa; -} -.btn-group-vertical .search:active, -.btn-group-vertical .search-caption:active { - background-color: #c4d0ee; -} -.btn-group-vertical .search.active, -.btn-group-vertical .search-caption.active { - box-shadow: none; - background-color: #eff3fa; -} -.btn-group-vertical .search { - height: 25px; - background: url(images/icons.png) no-repeat 0 -345px; - background-position-x: 50%; -} -.btn-group-vertical .search-caption { - height: 20px; -} -.btn-group-vertical .search-caption .caption { - font-size: 12px; -} -.btn-group-vertical { - vertical-align: middle; - margin: 5px; -} -.btn-group-vertical .help, -.btn-group-vertical .help-caption { - width: 40px; - margin: 0; - padding: 0; - border: none!important; - border-radius: 0!important; -} -.btn-group-vertical .help:hover, -.btn-group-vertical .help-caption:hover { - background-color: #eff3fa; -} -.btn-group-vertical .help:active, -.btn-group-vertical .help-caption:active { - background-color: #c4d0ee; -} -.btn-group-vertical .help.active, -.btn-group-vertical .help-caption.active { - box-shadow: none; - background-color: #eff3fa; -} -.btn-group-vertical .help { - height: 25px; - background: url(images/icons.png) no-repeat 0 -470px; - background-position-x: 50%; -} -.btn-group-vertical .help-caption { - height: 20px; -} -.btn-group-vertical .help-caption .caption { - font-size: 12px; -} -.search-box { - float: right; - background-color: #fff; - border: 1px solid #dbdbdb; - position: relative; - top: 0; - z-index: 3; - width: 360px; - height: 40px; - padding: 3px 6px; - opacity: 1; -} -.search-box .search-input-wrap, -.search-box .prev-and-next-btn { - float: left; -} -.search-box .close-search { - float: right; - height: 16px; - width: 16px; - padding: 1px; - border-radius: 100%; - margin-top: 6px; - margin-right: 10px; -} -.search-box .close-search .glyphicon { - top: -1px; -} -.search-box .close-search:hover { - background-color: #efefef; -} -.search-box .close-search:active { - background-color: #999; -} -.search-box .search-input-wrap { - width: 240px; -} -.search-box .prev-and-next-btn { - margin-left: 5px; -} -.search-box .prev-and-next-btn .btn:focus { - outline: none; -} -.search-box .search-addon { - background-color: #fff; -} -.tool-group { - padding: 0; -} -.tool-group[disabled] { - opacity: 0.5; -} -.tool-group .tool-group-item { - display: inline-block; - border-radius: 4px; -} -.tool-group .tool-group-item .tool-group-icon { - width: 20px; - height: 20px; - padding: 2px; - margin: 1px; -} -.tool-group .tool-group-item:hover { - background-color: #eff3fa; -} -.tool-group .tool-group-item:active { - background-color: #c4d0ee; -} -.tool-group .tool-group-item.active { - background-color: #c4d0ee; -} -.nav-bar { - position: absolute; - width: 35px; - height: 240px; - padding: 5px 0; - left: 10px; - bottom: 10px; - background: #fc8383; - color: #fff; - border-radius: 4px; - z-index: 10; - box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2); - transition: -webkit-transform 0.7s 0.1s ease; - transition: transform .7s 0.1s ease; -} -.nav-bar .nav-btn { - width: 35px; - height: 24px; - line-height: 24px; - text-align: center; -} -.nav-bar .nav-btn .icon { - background: url(images/icons.png); - width: 20px; - height: 20px; - margin: 2px auto; - display: block; -} -.nav-bar .nav-btn.active { - background-color: #5A6378; -} -.nav-bar .zoom-in .icon { - background-position: 0 -730px; -} -.nav-bar .zoom-out .icon { - background-position: 0 -750px; -} -.nav-bar .hand .icon { - background-position: 0 -770px; - width: 25px; - height: 25px; - margin: 0 auto; -} -.nav-bar .camera .icon { - background-position: 0 -870px; - width: 25px; - height: 25px; - margin: 0 auto; -} -.nav-bar .nav-trigger .icon { - background-position: 0 -845px; - width: 25px; - height: 25px; - margin: 0 auto; -} -.nav-bar .zoom-pan { - width: 2px; - height: 70px; - box-shadow: 0 1px #E50000; - position: relative; - background: white; - margin: 3px auto; - overflow: visible; -} -.nav-bar .zoom-pan .origin { - position: absolute; - width: 20px; - height: 8px; - left: -9px; - margin-top: -4px; - background: transparent; -} -.nav-bar .zoom-pan .origin:after { - content: ' '; - display: block; - width: 6px; - height: 2px; - background: white; - left: 7px; - top: 3px; - position: absolute; -} -.nav-bar .zoom-pan .indicator { - position: absolute; - width: 8px; - height: 8px; - left: -3px; - background: white; - border-radius: 100%; - margin-top: -4px; -} -.nav-previewer { - background: #fff; - width: 140px; - height: 120px; - position: absolute; - left: 45px; - bottom: 30px; - box-shadow: 0 0 8px rgba(0, 0, 0, 0.2); - border-radius: 0 2px 2px 0; - padding: 1px; - z-index: 9; - cursor: crosshair; - transition: -webkit-transform 0.7s 0.1s ease; - transition: transform .7s 0.1s ease; -} -.nav-previewer.grab { - cursor: move; - cursor: -webkit-grabbing; - cursor: -moz-grabbing; - cursor: grabbing; -} -/*# sourceMappingURL=kityminder.editor.css.map */ -body,header,html { -font-family:Arial,"Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif; -margin:0; -} -.shortcut-dialog { -height:400px; -overflow:scroll; --moz-user-select:none; --webkit-user-select:none; --ms-user-select:none; --khtml-user-select:none; -user-select:none; -} -.shortcut-dialog section { -min-width:300px; -margin:0 20px 20px 0; -} -.shortcut-dialog section h3 { -border-bottom:1px solid #EEE; -font-size:16px; -font-weight:700; -padding-bottom:5px; -margin-top:0; -} -.shortcut-dialog section div.shortcut-group { - margin: 5px auto; -} -.shortcut-dialog section div.shortcut-group span.shortcut { - display: inline-block; - width: 220px; - text-align: right; - margin-right: 10px; -} -.shortcut-dialog section div.shortcut-group span.shortcut .shortcut-key { - display: inline-block; - padding: 3px 8px 5px; - font-size: 12px; - font-weight: normal; - line-height: 14px; - color: #6e6e6e; - /* text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.25); */ - white-space: nowrap; - vertical-align: middle; - background-color: #fcfcfc; - border-radius: 3px; - border: 1px solid #cccccc; - text-transform: capitalize; - box-shadow: inset 0 -2px #ebebeb, inset 0 -3px #ffffff, 0 1px 2px rgba(255, 255, 255, 0.3); -} -.shortcut-dialog section div.shortcut-group span.shortcut .shortcut-key:active { - padding-top: 4px; - padding-bottom: 4px; - box-shadow: inset 0 -1px #ebebeb, inset 0 -2px #ffffff, 0 1px 1px rgba(255, 255, 255, 0.3); -} -.shortcut-dialog section div.shortcut-group span.shortcut .shortcut-key:active:after { - -webkit-transform: translate(0, 1px); - transform: translate(0, 1px); -} \ No newline at end of file diff --git a/dzz/system/ueditor/dialogs/kityminder/dist/kityminder.editor.js b/dzz/system/ueditor/dialogs/kityminder/dist/kityminder.editor.js deleted file mode 100644 index 00ed3f3..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/dist/kityminder.editor.js +++ /dev/null @@ -1,4670 +0,0 @@ -/*! - * ==================================================== - * kityminder-editor - v1.0.56 - 2016-12-22 - * https://github.com/fex-team/kityminder-editor - * GitHub: https://github.com/fex-team/kityminder-editor - * Copyright (c) 2016 ; Licensed - * ==================================================== - */ - -(function () { -var _p = { - r: function(index) { - if (_p[index].inited) { - return _p[index].value; - } - if (typeof _p[index].value === "function") { - var module = { - exports: {} - }, returnValue = _p[index].value(null, module.exports, module); - _p[index].inited = true; - _p[index].value = returnValue; - if (returnValue !== undefined) { - return returnValue; - } else { - for (var key in module.exports) { - if (module.exports.hasOwnProperty(key)) { - _p[index].inited = true; - _p[index].value = module.exports; - return module.exports; - } - } - } - } else { - _p[index].inited = true; - return _p[index].value; - } - } -}; - -//src/editor.js -_p[0] = { - value: function(require, exports, module) { - /** - * 运行时 - */ - var runtimes = []; - function assemble(runtime) { - runtimes.push(runtime); - } - function KMEditor(selector) { - this.selector = selector; - for (var i = 0; i < runtimes.length; i++) { - if (typeof runtimes[i] == "function") { - runtimes[i].call(this, this); - } - } - } - KMEditor.assemble = assemble; - assemble(_p.r(7)); - assemble(_p.r(9)); - assemble(_p.r(14)); - assemble(_p.r(18)); - assemble(_p.r(11)); - assemble(_p.r(12)); - assemble(_p.r(5)); - assemble(_p.r(6)); - assemble(_p.r(8)); - assemble(_p.r(15)); - assemble(_p.r(10)); - assemble(_p.r(13)); - assemble(_p.r(16)); - assemble(_p.r(17)); - return module.exports = KMEditor; - } -}; - -//src/expose-editor.js -/** - * @fileOverview - * - * 打包暴露 - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[1] = { - value: function(require, exports, module) { - return module.exports = kityminder.Editor = _p.r(0); - } -}; - -//src/hotbox.js -_p[2] = { - value: function(require, exports, module) { - return module.exports = window.HotBox; - } -}; - -//src/lang.js -_p[3] = { - value: function(require, exports, module) {} -}; - -//src/minder.js -_p[4] = { - value: function(require, exports, module) { - return module.exports = window.kityminder.Minder; - } -}; - -//src/runtime/clipboard-mimetype.js -/** - * @Desc: 新增一个用于处理系统ctrl+c ctrl+v等方式导入导出节点的MIMETYPE处理,如系统不支持clipboardEvent或者是FF则不初始化改class - * @Editor: Naixor - * @Date: 2015.9.21 - */ -_p[5] = { - value: function(require, exports, module) { - function MimeType() { - /** - * 私有变量 - */ - var SPLITOR = "\ufeff"; - var MIMETYPE = { - "application/km": "￿" - }; - var SIGN = { - "\ufeff": "SPLITOR", - "￿": "application/km" - }; - /** - * 用于将一段纯文本封装成符合其数据格式的文本 - * @method process private - * @param {MIMETYPE} mimetype 数据格式 - * @param {String} text 原始文本 - * @return {String} 符合该数据格式下的文本 - * @example - * var str = "123"; - * str = process('application/km', str); // 返回的内容再经过MimeType判断会读取出其数据格式为application/km - * process('text/plain', str); // 若接受到一个非纯文本信息,则会将其转换为新的数据格式 - */ - function process(mimetype, text) { - if (!this.isPureText(text)) { - var _mimetype = this.whichMimeType(text); - if (!_mimetype) { - throw new Error("unknow mimetype!"); - } - text = this.getPureText(text); - } - if (mimetype === false) { - return text; - } - return mimetype + SPLITOR + text; - } - /** - * 注册数据类型的标识 - * @method registMimeTypeProtocol public - * @param {String} type 数据类型 - * @param {String} sign 标识 - */ - this.registMimeTypeProtocol = function(type, sign) { - if (sign && SIGN[sign]) { - throw new Error("sing has registed!"); - } - if (type && !!MIMETYPE[type]) { - throw new Error("mimetype has registed!"); - } - SIGN[sign] = type; - MIMETYPE[type] = sign; - }; - /** - * 获取已注册数据类型的协议 - * @method getMimeTypeProtocol public - * @param {String} type 数据类型 - * @param {String} text|undefiend 文本内容或不传入 - * @return {String|Function} - * @example - * text若不传入则直接返回对应数据格式的处理(process)方法 - * 若传入文本则直接调用对应的process方法进行处理,此时返回处理后的内容 - * var m = new MimeType(); - * var kmprocess = m.getMimeTypeProtocol('application/km'); - * kmprocess("123") === m.getMimeTypeProtocol('application/km', "123"); - * - */ - this.getMimeTypeProtocol = function(type, text) { - var mimetype = MIMETYPE[type] || false; - if (text === undefined) { - return process.bind(this, mimetype); - } - return process(mimetype, text); - }; - this.getSpitor = function() { - return SPLITOR; - }; - this.getMimeType = function(sign) { - if (sign !== undefined) { - return SIGN[sign] || null; - } - return MIMETYPE; - }; - } - MimeType.prototype.isPureText = function(text) { - return !~text.indexOf(this.getSpitor()); - }; - MimeType.prototype.getPureText = function(text) { - if (this.isPureText(text)) { - return text; - } - return text.split(this.getSpitor())[1]; - }; - MimeType.prototype.whichMimeType = function(text) { - if (this.isPureText(text)) { - return null; - } - return this.getMimeType(text.split(this.getSpitor())[0]); - }; - function MimeTypeRuntime() { - if (this.minder.supportClipboardEvent && !kity.Browser.gecko) { - this.MimeType = new MimeType(); - } - } - return module.exports = MimeTypeRuntime; - } -}; - -//src/runtime/clipboard.js -/** - * @Desc: 处理editor的clipboard事件,只在支持ClipboardEvent并且不是FF的情况下工作 - * @Editor: Naixor - * @Date: 2015.9.21 - */ -_p[6] = { - value: function(require, exports, module) { - function ClipboardRuntime() { - var minder = this.minder; - var Data = window.kityminder.data; - if (!minder.supportClipboardEvent || kity.Browser.gecko) { - return; - } - var fsm = this.fsm; - var receiver = this.receiver; - var MimeType = this.MimeType; - var kmencode = MimeType.getMimeTypeProtocol("application/km"), decode = Data.getRegisterProtocol("json").decode; - var _selectedNodes = []; - /* - * 增加对多节点赋值粘贴的处理 - */ - function encode(nodes) { - var _nodes = []; - for (var i = 0, l = nodes.length; i < l; i++) { - _nodes.push(minder.exportNode(nodes[i])); - } - return kmencode(Data.getRegisterProtocol("json").encode(_nodes)); - } - var beforeCopy = function(e) { - if (document.activeElement == receiver.element) { - var clipBoardEvent = e; - var state = fsm.state(); - switch (state) { - case "input": - { - break; - } - - case "normal": - { - var nodes = [].concat(minder.getSelectedNodes()); - if (nodes.length) { - // 这里由于被粘贴复制的节点的id信息也都一样,故做此算法 - // 这里有个疑问,使用node.getParent()或者node.parent会离奇导致出现非选中节点被渲染成选中节点,因此使用isAncestorOf,而没有使用自行回溯的方式 - if (nodes.length > 1) { - var targetLevel; - nodes.sort(function(a, b) { - return a.getLevel() - b.getLevel(); - }); - targetLevel = nodes[0].getLevel(); - if (targetLevel !== nodes[nodes.length - 1].getLevel()) { - var plevel, pnode, idx = 0, l = nodes.length, pidx = l - 1; - pnode = nodes[pidx]; - while (pnode.getLevel() !== targetLevel) { - idx = 0; - while (idx < l && nodes[idx].getLevel() === targetLevel) { - if (nodes[idx].isAncestorOf(pnode)) { - nodes.splice(pidx, 1); - break; - } - idx++; - } - pidx--; - pnode = nodes[pidx]; - } - } - } - var str = encode(nodes); - clipBoardEvent.clipboardData.setData("text/plain", str); - } - e.preventDefault(); - break; - } - } - } - }; - var beforeCut = function(e) { - if (document.activeElement == receiver.element) { - if (minder.getStatus() !== "normal") { - e.preventDefault(); - return; - } - var clipBoardEvent = e; - var state = fsm.state(); - switch (state) { - case "input": - { - break; - } - - case "normal": - { - var nodes = minder.getSelectedNodes(); - if (nodes.length) { - clipBoardEvent.clipboardData.setData("text/plain", encode(nodes)); - minder.execCommand("removenode"); - } - e.preventDefault(); - break; - } - } - } - }; - var beforePaste = function(e) { - if (document.activeElement == receiver.element) { - if (minder.getStatus() !== "normal") { - e.preventDefault(); - return; - } - var clipBoardEvent = e; - var state = fsm.state(); - var textData = clipBoardEvent.clipboardData.getData("text/plain"); - switch (state) { - case "input": - { - // input状态下如果格式为application/km则不进行paste操作 - if (!MimeType.isPureText(textData)) { - e.preventDefault(); - return; - } - break; - } - - case "normal": - { - /* - * 针对normal状态下通过对选中节点粘贴导入子节点文本进行单独处理 - */ - var sNodes = minder.getSelectedNodes(); - if (MimeType.whichMimeType(textData) === "application/km") { - var nodes = decode(MimeType.getPureText(textData)); - var _node; - sNodes.forEach(function(node) { - // 由于粘贴逻辑中为了排除子节点重新排序导致逆序,因此复制的时候倒过来 - for (var i = nodes.length - 1; i >= 0; i--) { - _node = minder.createNode(null, node); - minder.importNode(_node, nodes[i]); - _selectedNodes.push(_node); - node.appendChild(_node); - } - }); - minder.select(_selectedNodes, true); - _selectedNodes = []; - minder.refresh(); - } else if (clipBoardEvent.clipboardData && clipBoardEvent.clipboardData.items[0].type.indexOf("image") > -1) { - var imageFile = clipBoardEvent.clipboardData.items[0].getAsFile(); - var serverService = angular.element(document.body).injector().get("server"); - return serverService.uploadImage(imageFile).then(function(json) { - var resp = json.data; - if (resp.errno === 0) { - minder.execCommand("image", resp.data.url); - } - }); - } else { - sNodes.forEach(function(node) { - minder.Text2Children(node, textData); - }); - } - e.preventDefault(); - break; - } - } - } - }; - /** - * 由editor的receiver统一处理全部事件,包括clipboard事件 - * @Editor: Naixor - * @Date: 2015.9.24 - */ - document.addEventListener("copy", beforeCopy); - document.addEventListener("cut", beforeCut); - document.addEventListener("paste", beforePaste); - } - return module.exports = ClipboardRuntime; - } -}; - -//src/runtime/container.js -/** - * @fileOverview - * - * 初始化编辑器的容器 - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[7] = { - value: function(require, exports, module) { - /** - * 最先执行的 Runtime,初始化编辑器容器 - */ - function ContainerRuntime() { - var container; - if (typeof this.selector == "string") { - container = document.querySelector(this.selector); - } else { - container = this.selector; - } - if (!container) throw new Error("Invalid selector: " + this.selector); - // 这个类名用于给编辑器添加样式 - container.classList.add("km-editor"); - // 暴露容器给其他运行时使用 - this.container = container; - } - return module.exports = ContainerRuntime; - } -}; - -//src/runtime/drag.js -/** - * @fileOverview - * - * 用于拖拽节点时屏蔽键盘事件 - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[8] = { - value: function(require, exports, module) { - var Hotbox = _p.r(2); - var Debug = _p.r(19); - var debug = new Debug("drag"); - function DragRuntime() { - var fsm = this.fsm; - var minder = this.minder; - var hotbox = this.hotbox; - var receiver = this.receiver; - var receiverElement = receiver.element; - // setup everything to go - setupFsm(); - // listen the fsm changes, make action. - function setupFsm() { - // when jumped to drag mode, enter - fsm.when("* -> drag", function() {}); - fsm.when("drag -> *", function(exit, enter, reason) { - if (reason == "drag-finish") {} - }); - } - var downX, downY; - var MOUSE_HAS_DOWN = 0; - var MOUSE_HAS_UP = 1; - var BOUND_CHECK = 20; - var flag = MOUSE_HAS_UP; - var maxX, maxY, osx, osy, containerY; - var freeHorizen = false, freeVirtical = false; - var frame; - function move(direction, speed) { - if (!direction) { - freeHorizen = freeVirtical = false; - frame && kity.releaseFrame(frame); - frame = null; - return; - } - if (!frame) { - frame = kity.requestFrame(function(direction, speed, minder) { - return function(frame) { - switch (direction) { - case "left": - minder._viewDragger.move({ - x: -speed, - y: 0 - }, 0); - break; - - case "top": - minder._viewDragger.move({ - x: 0, - y: -speed - }, 0); - break; - - case "right": - minder._viewDragger.move({ - x: speed, - y: 0 - }, 0); - break; - - case "bottom": - minder._viewDragger.move({ - x: 0, - y: speed - }, 0); - break; - - default: - return; - } - frame.next(); - }; - }(direction, speed, minder)); - } - } - minder.on("mousedown", function(e) { - flag = MOUSE_HAS_DOWN; - var rect = minder.getPaper().container.getBoundingClientRect(); - downX = e.originEvent.clientX; - downY = e.originEvent.clientY; - containerY = rect.top; - maxX = rect.width; - maxY = rect.height; - }); - minder.on("mousemove", function(e) { - if (fsm.state() === "drag" && flag == MOUSE_HAS_DOWN && minder.getSelectedNode() && (Math.abs(downX - e.originEvent.clientX) > BOUND_CHECK || Math.abs(downY - e.originEvent.clientY) > BOUND_CHECK)) { - osx = e.originEvent.clientX; - osy = e.originEvent.clientY - containerY; - if (osx < BOUND_CHECK) { - move("right", BOUND_CHECK - osx); - } else if (osx > maxX - BOUND_CHECK) { - move("left", BOUND_CHECK + osx - maxX); - } else { - freeHorizen = true; - } - if (osy < BOUND_CHECK) { - move("bottom", osy); - } else if (osy > maxY - BOUND_CHECK) { - move("top", BOUND_CHECK + osy - maxY); - } else { - freeVirtical = true; - } - if (freeHorizen && freeVirtical) { - move(false); - } - } - if (fsm.state() !== "drag" && flag === MOUSE_HAS_DOWN && minder.getSelectedNode() && (Math.abs(downX - e.originEvent.clientX) > BOUND_CHECK || Math.abs(downY - e.originEvent.clientY) > BOUND_CHECK)) { - if (fsm.state() === "hotbox") { - hotbox.active(Hotbox.STATE_IDLE); - } - return fsm.jump("drag", "user-drag"); - } - }); - window.addEventListener("mouseup", function() { - flag = MOUSE_HAS_UP; - if (fsm.state() === "drag") { - move(false); - return fsm.jump("normal", "drag-finish"); - } - }, false); - } - return module.exports = DragRuntime; - } -}; - -//src/runtime/fsm.js -/** - * @fileOverview - * - * 编辑器状态机 - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[9] = { - value: function(require, exports, module) { - var Debug = _p.r(19); - var debug = new Debug("fsm"); - function handlerConditionMatch(condition, when, exit, enter) { - if (condition.when != when) return false; - if (condition.enter != "*" && condition.enter != enter) return false; - if (condition.exit != "*" && condition.exit != exit) return; - return true; - } - function FSM(defaultState) { - var currentState = defaultState; - var BEFORE_ARROW = " - "; - var AFTER_ARROW = " -> "; - var handlers = []; - /** - * 状态跳转 - * - * 会通知所有的状态跳转监视器 - * - * @param {string} newState 新状态名称 - * @param {any} reason 跳转的原因,可以作为参数传递给跳转监视器 - */ - this.jump = function(newState, reason) { - if (!reason) throw new Error("Please tell fsm the reason to jump"); - var oldState = currentState; - var notify = [ oldState, newState ].concat([].slice.call(arguments, 1)); - var i, handler; - // 跳转前 - for (i = 0; i < handlers.length; i++) { - handler = handlers[i]; - if (handlerConditionMatch(handler.condition, "before", oldState, newState)) { - if (handler.apply(null, notify)) return; - } - } - currentState = newState; - debug.log("[{0}] {1} -> {2}", reason, oldState, newState); - // 跳转后 - for (i = 0; i < handlers.length; i++) { - handler = handlers[i]; - if (handlerConditionMatch(handler.condition, "after", oldState, newState)) { - handler.apply(null, notify); - } - } - return currentState; - }; - /** - * 返回当前状态 - * @return {string} - */ - this.state = function() { - return currentState; - }; - /** - * 添加状态跳转监视器 - * - * @param {string} condition - * 监视的时机 - * "* => *" (默认) - * - * @param {Function} handler - * 监视函数,当状态跳转的时候,会接收三个参数 - * * from - 跳转前的状态 - * * to - 跳转后的状态 - * * reason - 跳转的原因 - */ - this.when = function(condition, handler) { - if (arguments.length == 1) { - handler = condition; - condition = "* -> *"; - } - var when, resolved, exit, enter; - resolved = condition.split(BEFORE_ARROW); - if (resolved.length == 2) { - when = "before"; - } else { - resolved = condition.split(AFTER_ARROW); - if (resolved.length == 2) { - when = "after"; - } - } - if (!when) throw new Error("Illegal fsm condition: " + condition); - exit = resolved[0]; - enter = resolved[1]; - handler.condition = { - when: when, - exit: exit, - enter: enter - }; - handlers.push(handler); - }; - } - function FSMRumtime() { - this.fsm = new FSM("normal"); - } - return module.exports = FSMRumtime; - } -}; - -//src/runtime/history.js -/** - * @fileOverview - * - * 历史管理 - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[10] = { - value: function(require, exports, module) { - var jsonDiff = _p.r(22); - function HistoryRuntime() { - var minder = this.minder; - var hotbox = this.hotbox; - var MAX_HISTORY = 100; - var lastSnap; - var patchLock; - var undoDiffs; - var redoDiffs; - function reset() { - undoDiffs = []; - redoDiffs = []; - lastSnap = minder.exportJson(); - } - function makeUndoDiff() { - var headSnap = minder.exportJson(); - var diff = jsonDiff(headSnap, lastSnap); - if (diff.length) { - undoDiffs.push(diff); - while (undoDiffs.length > MAX_HISTORY) { - undoDiffs.shift(); - } - lastSnap = headSnap; - return true; - } - } - function makeRedoDiff() { - var revertSnap = minder.exportJson(); - redoDiffs.push(jsonDiff(revertSnap, lastSnap)); - lastSnap = revertSnap; - } - function undo() { - patchLock = true; - var undoDiff = undoDiffs.pop(); - if (undoDiff) { - minder.applyPatches(undoDiff); - makeRedoDiff(); - } - patchLock = false; - } - function redo() { - patchLock = true; - var redoDiff = redoDiffs.pop(); - if (redoDiff) { - minder.applyPatches(redoDiff); - makeUndoDiff(); - } - patchLock = false; - } - function changed() { - if (patchLock) return; - if (makeUndoDiff()) redoDiffs = []; - } - function hasUndo() { - return !!undoDiffs.length; - } - function hasRedo() { - return !!redoDiffs.length; - } - function updateSelection(e) { - if (!patchLock) return; - var patch = e.patch; - switch (patch.express) { - case "node.add": - minder.select(patch.node.getChild(patch.index), true); - break; - - case "node.remove": - case "data.replace": - case "data.remove": - case "data.add": - minder.select(patch.node, true); - break; - } - } - this.history = { - reset: reset, - undo: undo, - redo: redo, - hasUndo: hasUndo, - hasRedo: hasRedo - }; - reset(); - minder.on("contentchange", changed); - minder.on("import", reset); - minder.on("patch", updateSelection); - var main = hotbox.state("main"); - main.button({ - position: "top", - label: "撤销", - key: "Ctrl + Z", - enable: hasUndo, - action: undo, - next: "idle" - }); - main.button({ - position: "top", - label: "重做", - key: "Ctrl + Y", - enable: hasRedo, - action: redo, - next: "idle" - }); - } - window.diff = jsonDiff; - return module.exports = HistoryRuntime; - } -}; - -//src/runtime/hotbox.js -/** - * @fileOverview - * - * 热盒 Runtime - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[11] = { - value: function(require, exports, module) { - var Hotbox = _p.r(2); - function HotboxRuntime() { - var fsm = this.fsm; - var minder = this.minder; - var receiver = this.receiver; - var container = this.container; - var hotbox = new Hotbox(container); - hotbox.setParentFSM(fsm); - fsm.when("normal -> hotbox", function(exit, enter, reason) { - var node = minder.getSelectedNode(); - var position; - if (node) { - var box = node.getRenderBox(); - position = { - x: box.cx, - y: box.cy - }; - } - hotbox.active("main", position); - }); - fsm.when("normal -> normal", function(exit, enter, reason, e) { - if (reason == "shortcut-handle") { - var handleResult = hotbox.dispatch(e); - if (handleResult) { - e.preventDefault(); - } else { - minder.dispatchKeyEvent(e); - } - } - }); - fsm.when("modal -> normal", function(exit, enter, reason, e) { - if (reason == "import-text-finish") { - receiver.element.focus(); - } - }); - this.hotbox = hotbox; - } - return module.exports = HotboxRuntime; - } -}; - -//src/runtime/input.js -/** - * @fileOverview - * - * 文本输入支持 - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[12] = { - value: function(require, exports, module) { - _p.r(21); - var Debug = _p.r(19); - var debug = new Debug("input"); - function InputRuntime() { - var fsm = this.fsm; - var minder = this.minder; - var hotbox = this.hotbox; - var receiver = this.receiver; - var receiverElement = receiver.element; - var isGecko = window.kity.Browser.gecko; - // setup everything to go - setupReciverElement(); - setupFsm(); - setupHotbox(); - // expose editText() - this.editText = editText; - // listen the fsm changes, make action. - function setupFsm() { - // when jumped to input mode, enter - fsm.when("* -> input", enterInputMode); - // when exited, commit or exit depends on the exit reason - fsm.when("input -> *", function(exit, enter, reason) { - switch (reason) { - case "input-cancel": - return exitInputMode(); - - case "input-commit": - default: - return commitInputResult(); - } - }); - // lost focus to commit - receiver.onblur(function(e) { - if (fsm.state() == "input") { - fsm.jump("normal", "input-commit"); - } - }); - minder.on("beforemousedown", function() { - if (fsm.state() == "input") { - fsm.jump("normal", "input-commit"); - } - }); - minder.on("dblclick", function() { - if (minder.getSelectedNode()) { - editText(); - } - }); - } - // let the receiver follow the current selected node position - function setupReciverElement() { - if (debug.flaged) { - receiverElement.classList.add("debug"); - } - receiverElement.onmousedown = function(e) { - e.stopPropagation(); - }; - minder.on("layoutallfinish viewchange viewchanged selectionchange", function(e) { - // viewchange event is too frequenced, lazy it - if (e.type == "viewchange" && fsm.state() != "input") return; - updatePosition(); - }); - updatePosition(); - } - // edit entrance in hotbox - function setupHotbox() { - hotbox.state("main").button({ - position: "center", - label: "编辑", - key: "F2", - enable: function() { - return minder.queryCommandState("text") != -1; - }, - action: editText - }); - } - /** - * 增加对字体的鉴别,以保证用户在编辑状态ctrl/cmd + b/i所触发的加粗斜体与显示一致 - * @editor Naixor - * @Date 2015-12-2 - */ - // edit for the selected node - function editText() { - var node = minder.getSelectedNode(); - if (!node) { - return; - } - var textContainer = receiverElement; - receiverElement.innerText = ""; - if (node.getData("font-weight") === "bold") { - var b = document.createElement("b"); - textContainer.appendChild(b); - textContainer = b; - } - if (node.getData("font-style") === "italic") { - var i = document.createElement("i"); - textContainer.appendChild(i); - textContainer = i; - } - textContainer.innerText = minder.queryCommandValue("text"); - if (isGecko) { - receiver.fixFFCaretDisappeared(); - } - fsm.jump("input", "input-request"); - receiver.selectAll(); - } - /** - * 增加对字体的鉴别,以保证用户在编辑状态ctrl/cmd + b/i所触发的加粗斜体与显示一致 - * @editor Naixor - * @Date 2015-12-2 - */ - function enterInputMode() { - var node = minder.getSelectedNode(); - if (node) { - var fontSize = node.getData("font-size") || node.getStyle("font-size"); - receiverElement.style.fontSize = fontSize + "px"; - receiverElement.style.minWidth = 0; - receiverElement.style.minWidth = receiverElement.clientWidth + "px"; - receiverElement.style.fontWeight = node.getData("font-weight") || ""; - receiverElement.style.fontStyle = node.getData("font-style") || ""; - receiverElement.classList.add("input"); - receiverElement.focus(); - } - } - /** - * 按照文本提交操作处理 - * @Desc: 从其他节点复制文字到另一个节点时部分浏览器(chrome)会自动包裹一个span标签,这样试用一下逻辑出来的就不是text节点二是span节点因此导致undefined的情况发生 - * @Warning: 下方代码使用[].slice.call来将HTMLDomCollection处理成为Array,ie8及以下会有问题 - * @Editor: Naixor - * @Date: 2015.9.16 - */ - function commitInputText(textNodes) { - var text = ""; - var TAB_CHAR = " ", ENTER_CHAR = "\n", STR_CHECK = /\S/, SPACE_CHAR = " ", // 针对FF,SG,BD,LB,IE等浏览器下SPACE的charCode存在为32和160的情况做处理 - SPACE_CHAR_REGEXP = new RegExp("( |" + String.fromCharCode(160) + ")"), BR = document.createElement("br"); - var isBold = false, isItalic = false; - for (var str, _divChildNodes, space_l, space_num, tab_num, i = 0, l = textNodes.length; i < l; i++) { - str = textNodes[i]; - switch (Object.prototype.toString.call(str)) { - // 正常情况处理 - case "[object HTMLBRElement]": - { - text += ENTER_CHAR; - break; - } - - case "[object Text]": - { - // SG下会莫名其妙的加上 影响后续判断,干掉! - /** - * FF下的wholeText会导致如下问题: - * |123| -> 在一个节点中输入一段字符,此时TextNode为[#Text 123] - * 提交并重新编辑,在后面追加几个字符 - * |123abc| -> 此时123为一个TextNode为[#Text 123, #Text abc],但是对这两个任意取值wholeText均为全部内容123abc - * 上述BUG仅存在在FF中,故将wholeText更改为textContent - */ - str = str.textContent.replace(" ", " "); - if (!STR_CHECK.test(str)) { - space_l = str.length; - while (space_l--) { - if (SPACE_CHAR_REGEXP.test(str[space_l])) { - text += SPACE_CHAR; - } else if (str[space_l] === TAB_CHAR) { - text += TAB_CHAR; - } - } - } else { - text += str; - } - break; - } - - // ctrl + b/i 会给字体加上/标签来实现黑体和斜体 - case "[object HTMLElement]": - { - switch (str.nodeName) { - case "B": - { - isBold = true; - break; - } - - case "I": - { - isItalic = true; - break; - } - - default: - {} - } - [].splice.apply(textNodes, [ i, 1 ].concat([].slice.call(str.childNodes))); - l = textNodes.length; - i--; - break; - } - - // 被增加span标签的情况会被处理成正常情况并会推交给上面处理 - case "[object HTMLSpanElement]": - { - [].splice.apply(textNodes, [ i, 1 ].concat([].slice.call(str.childNodes))); - l = textNodes.length; - i--; - break; - } - - // 若标签为image标签,则判断是否为合法url,是将其加载进来 - case "[object HTMLImageElement]": - { - if (str.src) { - if (/http(|s):\/\//.test(str.src)) { - minder.execCommand("Image", str.src, str.alt); - } else {} - } - break; - } - - // 被增加div标签的情况会被处理成正常情况并会推交给上面处理 - case "[object HTMLDivElement]": - { - _divChildNodes = []; - for (var di = 0, l = str.childNodes.length; di < l; di++) { - _divChildNodes.push(str.childNodes[di]); - } - _divChildNodes.push(BR); - [].splice.apply(textNodes, [ i, 1 ].concat(_divChildNodes)); - l = textNodes.length; - i--; - break; - } - - default: - { - if (str && str.childNodes.length) { - _divChildNodes = []; - for (var di = 0, l = str.childNodes.length; di < l; di++) { - _divChildNodes.push(str.childNodes[di]); - } - _divChildNodes.push(BR); - [].splice.apply(textNodes, [ i, 1 ].concat(_divChildNodes)); - l = textNodes.length; - i--; - } else { - if (str && str.textContent !== undefined) { - text += str.textContent; - } else { - text += ""; - } - } - } - } - } - text = text.replace(/^\n*|\n*$/g, ""); - text = text.replace(new RegExp("(\n|\r|\n\r)( |" + String.fromCharCode(160) + "){4}", "g"), "$1 "); - minder.getSelectedNode().setText(text); - if (isBold) { - minder.queryCommandState("bold") || minder.execCommand("bold"); - } else { - minder.queryCommandState("bold") && minder.execCommand("bold"); - } - if (isItalic) { - minder.queryCommandState("italic") || minder.execCommand("italic"); - } else { - minder.queryCommandState("italic") && minder.execCommand("italic"); - } - exitInputMode(); - return text; - } - /** - * 判断节点的文本信息是否是 - * @Desc: 从其他节点复制文字到另一个节点时部分浏览器(chrome)会自动包裹一个span标签,这样使用以下逻辑出来的就不是text节点二是span节点因此导致undefined的情况发生 - * @Notice: 此处逻辑应该拆分到 kityminder-core/core/data中去,单独增加一个对某个节点importJson的事件 - * @Editor: Naixor - * @Date: 2015.9.16 - */ - function commitInputNode(node, text) { - try { - minder.decodeData("text", text).then(function(json) { - function importText(node, json, minder) { - var data = json.data; - node.setText(data.text || ""); - var childrenTreeData = json.children || []; - for (var i = 0; i < childrenTreeData.length; i++) { - var childNode = minder.createNode(null, node); - importText(childNode, childrenTreeData[i], minder); - } - return node; - } - importText(node, json, minder); - minder.fire("contentchange"); - minder.getRoot().renderTree(); - minder.layout(300); - }); - } catch (e) { - minder.fire("contentchange"); - minder.getRoot().renderTree(); - // 无法被转换成脑图节点则不处理 - if (e.toString() !== "Error: Invalid local format") { - throw e; - } - } - } - function commitInputResult() { - /** - * @Desc: 进行如下处理: - * 根据用户的输入判断是否生成新的节点 - * fix #83 https://github.com/fex-team/kityminder-editor/issues/83 - * @Editor: Naixor - * @Date: 2015.9.16 - */ - var textNodes = [].slice.call(receiverElement.childNodes); - /** - * @Desc: 增加setTimeout的原因:ie下receiverElement.innerHTML=""会导致后 - * 面commitInputText中使用textContent报错,不要问我什么原因! - * @Editor: Naixor - * @Date: 2015.12.14 - */ - setTimeout(function() { - // 解决过大内容导致SVG窜位问题 - receiverElement.innerHTML = ""; - }, 0); - var node = minder.getSelectedNode(); - textNodes = commitInputText(textNodes); - commitInputNode(node, textNodes); - if (node.type == "root") { - var rootText = minder.getRoot().getText(); - minder.fire("initChangeRoot", { - text: rootText - }); - } - } - function exitInputMode() { - receiverElement.classList.remove("input"); - receiver.selectAll(); - } - function updatePosition() { - var planed = updatePosition; - var focusNode = minder.getSelectedNode(); - if (!focusNode) return; - if (!planed.timer) { - planed.timer = setTimeout(function() { - var box = focusNode.getRenderBox("TextRenderer"); - receiverElement.style.left = Math.round(box.x) + "px"; - receiverElement.style.top = (debug.flaged ? Math.round(box.bottom + 30) : Math.round(box.y)) + "px"; - //receiverElement.focus(); - planed.timer = 0; - }); - } - } - } - return module.exports = InputRuntime; - } -}; - -//src/runtime/jumping.js -/** - * @fileOverview - * - * 根据按键控制状态机的跳转 - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[13] = { - value: function(require, exports, module) { - var Hotbox = _p.r(2); - // Nice: http://unixpapa.com/js/key.html - function isIntendToInput(e) { - if (e.ctrlKey || e.metaKey || e.altKey) return false; - // a-zA-Z - if (e.keyCode >= 65 && e.keyCode <= 90) return true; - // 0-9 以及其上面的符号 - if (e.keyCode >= 48 && e.keyCode <= 57) return true; - // 小键盘区域 (除回车外) - if (e.keyCode != 108 && e.keyCode >= 96 && e.keyCode <= 111) return true; - // 小键盘区域 (除回车外) - // @yinheli from pull request - if (e.keyCode != 108 && e.keyCode >= 96 && e.keyCode <= 111) return true; - // 输入法 - if (e.keyCode == 229 || e.keyCode === 0) return true; - return false; - } - /** - * @Desc: 下方使用receiver.enable()和receiver.disable()通过 - * 修改div contenteditable属性的hack来解决开启热核后依然无法屏蔽浏览器输入的bug; - * 特别: win下FF对于此种情况必须要先blur在focus才能解决,但是由于这样做会导致用户 - * 输入法状态丢失,因此对FF暂不做处理 - * @Editor: Naixor - * @Date: 2015.09.14 - */ - function JumpingRuntime() { - var fsm = this.fsm; - var minder = this.minder; - var receiver = this.receiver; - var container = this.container; - var receiverElement = receiver.element; - var hotbox = this.hotbox; - // normal -> * - receiver.listen("normal", function(e) { - // 为了防止处理进入edit模式而丢失处理的首字母,此时receiver必须为enable - receiver.enable(); - // normal -> hotbox - if (e.is("Space")) { - e.preventDefault(); - // safari下Space触发hotbox,然而这时Space已在receiver上留下作案痕迹,因此抹掉 - if (kity.Browser.safari) { - receiverElement.innerHTML = ""; - } - return fsm.jump("hotbox", "space-trigger"); - } - /** - * check - * @editor Naixor - * @Date 2015-12-2 - */ - switch (e.type) { - case "keydown": - { - if (minder.getSelectedNode()) { - if (isIntendToInput(e)) { - return fsm.jump("input", "user-input"); - } - } else { - receiverElement.innerHTML = ""; - } - // normal -> normal shortcut - fsm.jump("normal", "shortcut-handle", e); - break; - } - - case "keyup": - { - break; - } - - default: - {} - } - }); - // hotbox -> normal - receiver.listen("hotbox", function(e) { - receiver.disable(); - e.preventDefault(); - var handleResult = hotbox.dispatch(e); - if (hotbox.state() == Hotbox.STATE_IDLE && fsm.state() == "hotbox") { - return fsm.jump("normal", "hotbox-idle"); - } - }); - // input => normal - receiver.listen("input", function(e) { - receiver.enable(); - if (e.type == "keydown") { - if (e.is("Enter")) { - e.preventDefault(); - return fsm.jump("normal", "input-commit"); - } - if (e.is("Esc")) { - e.preventDefault(); - return fsm.jump("normal", "input-cancel"); - } - if (e.is("Tab") || e.is("Shift + Tab")) { - e.preventDefault(); - } - } else if (e.type == "keyup" && e.is("Esc")) { - e.preventDefault(); - return fsm.jump("normal", "input-cancel"); - } - }); - ////////////////////////////////////////////// - /// 右键呼出热盒 - /// 判断的标准是:按下的位置和结束的位置一致 - ////////////////////////////////////////////// - var downX, downY; - var MOUSE_RB = 2; - // 右键 - container.addEventListener("mousedown", function(e) { - if (e.button == MOUSE_RB) { - e.preventDefault(); - } - if (fsm.state() == "hotbox") { - hotbox.active(Hotbox.STATE_IDLE); - fsm.jump("normal", "blur"); - } else if (fsm.state() == "normal" && e.button == MOUSE_RB) { - downX = e.clientX; - downY = e.clientY; - } - }, false); - container.addEventListener("mousewheel", function(e) { - if (fsm.state() == "hotbox") { - hotbox.active(Hotbox.STATE_IDLE); - fsm.jump("normal", "mousemove-blur"); - } - }, false); - container.addEventListener("contextmenu", function(e) { - e.preventDefault(); - }); - container.addEventListener("mouseup", function(e) { - if (fsm.state() != "normal") { - return; - } - if (e.button != MOUSE_RB || e.clientX != downX || e.clientY != downY) { - return; - } - if (!minder.getSelectedNode()) { - return; - } - fsm.jump("hotbox", "content-menu"); - }, false); - // 阻止热盒事件冒泡,在热盒正确执行前导致热盒关闭 - hotbox.$element.addEventListener("mousedown", function(e) { - e.stopPropagation(); - }); - } - return module.exports = JumpingRuntime; - } -}; - -//src/runtime/minder.js -/** - * @fileOverview - * - * 脑图示例运行时 - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[14] = { - value: function(require, exports, module) { - var Minder = _p.r(4); - function MinderRuntime() { - // 不使用 kityminder 的按键处理,由 ReceiverRuntime 统一处理 - var minder = new Minder({ - enableKeyReceiver: false, - enableAnimation: true - }); - // 渲染,初始化 - minder.renderTo(this.selector); - minder.setTheme(null); - minder.select(minder.getRoot(), true); - minder.execCommand("text", "中心主题"); - // 导出给其它 Runtime 使用 - this.minder = minder; - } - return module.exports = MinderRuntime; - } -}; - -//src/runtime/node.js -_p[15] = { - value: function(require, exports, module) { - function NodeRuntime() { - var runtime = this; - var minder = this.minder; - var hotbox = this.hotbox; - var fsm = this.fsm; - var main = hotbox.state("main"); - var buttons = [ "前移:Alt+Up:ArrangeUp", "下级:Tab|Insert:AppendChildNode", "同级:Enter:AppendSiblingNode", "后移:Alt+Down:ArrangeDown", "删除:Delete|Backspace:RemoveNode", "上级:Shift+Tab|Shift+Insert:AppendParentNode" ]; - var AppendLock = 0; - buttons.forEach(function(button) { - var parts = button.split(":"); - var label = parts.shift(); - var key = parts.shift(); - var command = parts.shift(); - main.button({ - position: "ring", - label: label, - key: key, - action: function() { - if (command.indexOf("Append") === 0) { - AppendLock++; - minder.execCommand(command, "分支主题"); - // provide in input runtime - function afterAppend() { - if (!--AppendLock) { - runtime.editText(); - } - minder.off("layoutallfinish", afterAppend); - } - minder.on("layoutallfinish", afterAppend); - } else { - minder.execCommand(command); - fsm.jump("normal", "command-executed"); - } - }, - enable: function() { - return minder.queryCommandState(command) != -1; - } - }); - }); - main.button({ - position: "bottom", - label: "导入节点", - key: "Alt + V", - enable: function() { - var selectedNodes = minder.getSelectedNodes(); - return selectedNodes.length == 1; - }, - action: importNodeData, - next: "idle" - }); - main.button({ - position: "bottom", - label: "导出节点", - key: "Alt + C", - enable: function() { - var selectedNodes = minder.getSelectedNodes(); - return selectedNodes.length == 1; - }, - action: exportNodeData, - next: "idle" - }); - function importNodeData() { - minder.fire("importNodeData"); - } - function exportNodeData() { - minder.fire("exportNodeData"); - } - } - return module.exports = NodeRuntime; - } -}; - -//src/runtime/priority.js -_p[16] = { - value: function(require, exports, module) { - function PriorityRuntime() { - var minder = this.minder; - var hotbox = this.hotbox; - var main = hotbox.state("main"); - main.button({ - position: "top", - label: "优先级", - key: "P", - next: "priority", - enable: function() { - return minder.queryCommandState("priority") != -1; - } - }); - var priority = hotbox.state("priority"); - "123456789".replace(/./g, function(p) { - priority.button({ - position: "ring", - label: "P" + p, - key: p, - action: function() { - minder.execCommand("Priority", p); - } - }); - }); - priority.button({ - position: "center", - label: "移除", - key: "Del", - action: function() { - minder.execCommand("Priority", 0); - } - }); - priority.button({ - position: "top", - label: "返回", - key: "esc", - next: "back" - }); - } - return module.exports = PriorityRuntime; - } -}; - -//src/runtime/progress.js -_p[17] = { - value: function(require, exports, module) { - function ProgressRuntime() { - var minder = this.minder; - var hotbox = this.hotbox; - var main = hotbox.state("main"); - main.button({ - position: "top", - label: "进度", - key: "G", - next: "progress", - enable: function() { - return minder.queryCommandState("progress") != -1; - } - }); - var progress = hotbox.state("progress"); - "012345678".replace(/./g, function(p) { - progress.button({ - position: "ring", - label: "G" + p, - key: p, - action: function() { - minder.execCommand("Progress", parseInt(p) + 1); - } - }); - }); - progress.button({ - position: "center", - label: "移除", - key: "Del", - action: function() { - minder.execCommand("Progress", 0); - } - }); - progress.button({ - position: "top", - label: "返回", - key: "esc", - next: "back" - }); - } - return module.exports = ProgressRuntime; - } -}; - -//src/runtime/receiver.js -/** - * @fileOverview - * - * 键盘事件接收/分发器 - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[18] = { - value: function(require, exports, module) { - var key = _p.r(23); - var hotbox = _p.r(2); - function ReceiverRuntime() { - var fsm = this.fsm; - var minder = this.minder; - var me = this; - // 接收事件的 div - var element = document.createElement("div"); - element.contentEditable = true; - /** - * @Desc: 增加tabindex属性使得element的contenteditable不管是trur还是false都能有focus和blur事件 - * @Editor: Naixor - * @Date: 2015.09.14 - */ - element.setAttribute("tabindex", -1); - element.classList.add("receiver"); - element.onkeydown = element.onkeypress = element.onkeyup = dispatchKeyEvent; - this.container.appendChild(element); - // receiver 对象 - var receiver = { - element: element, - selectAll: function() { - // 保证有被选中的 - if (!element.innerHTML) element.innerHTML = " "; - var range = document.createRange(); - var selection = window.getSelection(); - range.selectNodeContents(element); - selection.removeAllRanges(); - selection.addRange(range); - element.focus(); - }, - /** - * @Desc: 增加enable和disable方法用于解决热核态的输入法屏蔽问题 - * @Editor: Naixor - * @Date: 2015.09.14 - */ - enable: function() { - element.setAttribute("contenteditable", true); - }, - disable: function() { - element.setAttribute("contenteditable", false); - }, - /** - * @Desc: hack FF下div contenteditable的光标丢失BUG - * @Editor: Naixor - * @Date: 2015.10.15 - */ - fixFFCaretDisappeared: function() { - element.removeAttribute("contenteditable"); - element.setAttribute("contenteditable", "true"); - element.blur(); - element.focus(); - }, - /** - * 以此事件代替通过mouse事件来判断receiver丢失焦点的事件 - * @editor Naixor - * @Date 2015-12-2 - */ - onblur: function(handler) { - element.onblur = handler; - } - }; - receiver.selectAll(); - minder.on("beforemousedown", receiver.selectAll); - minder.on("receiverfocus", receiver.selectAll); - minder.on("readonly", function() { - // 屏蔽minder的事件接受,删除receiver和hotbox - minder.disable(); - editor.receiver.element.parentElement.removeChild(editor.receiver.element); - editor.hotbox.$container.removeChild(editor.hotbox.$element); - }); - // 侦听器,接收到的事件会派发给所有侦听器 - var listeners = []; - // 侦听指定状态下的事件,如果不传 state,侦听所有状态 - receiver.listen = function(state, listener) { - if (arguments.length == 1) { - listener = state; - state = "*"; - } - listener.notifyState = state; - listeners.push(listener); - }; - function dispatchKeyEvent(e) { - e.is = function(keyExpression) { - var subs = keyExpression.split("|"); - for (var i = 0; i < subs.length; i++) { - if (key.is(this, subs[i])) return true; - } - return false; - }; - var listener, jumpState; - for (var i = 0; i < listeners.length; i++) { - listener = listeners[i]; - // 忽略不在侦听状态的侦听器 - if (listener.notifyState != "*" && listener.notifyState != fsm.state()) { - continue; - } - /** - * - * 对于所有的侦听器,只允许一种处理方式:跳转状态。 - * 如果侦听器确定要跳转,则返回要跳转的状态。 - * 每个事件只允许一个侦听器进行状态跳转 - * 跳转动作由侦听器自行完成(因为可能需要在跳转时传递 reason),返回跳转结果即可。 - * 比如: - * - * ```js - * receiver.listen('normal', function(e) { - * if (isSomeReasonForJumpState(e)) { - * return fsm.jump('newstate', e); - * } - * }); - * ``` - */ - if (listener.call(null, e)) { - return; - } - } - } - this.receiver = receiver; - } - return module.exports = ReceiverRuntime; - } -}; - -//src/tool/debug.js -/** - * @fileOverview - * - * 支持各种调试后门 - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[19] = { - value: function(require, exports, module) { - var format = _p.r(20); - function noop() {} - function stringHash(str) { - var hash = 0; - for (var i = 0; i < str.length; i++) { - hash += str.charCodeAt(i); - } - return hash; - } - /* global console */ - function Debug(flag) { - var debugMode = this.flaged = window.location.search.indexOf(flag) != -1; - if (debugMode) { - var h = stringHash(flag) % 360; - var flagStyle = format("background: hsl({0}, 50%, 80%); " + "color: hsl({0}, 100%, 30%); " + "padding: 2px 3px; " + "margin: 1px 3px 0 0;" + "border-radius: 2px;", h); - var textStyle = "background: none; color: black;"; - this.log = function() { - var output = format.apply(null, arguments); - console.log(format("%c{0}%c{1}", flag, output), flagStyle, textStyle); - }; - } else { - this.log = noop; - } - } - return module.exports = Debug; - } -}; - -//src/tool/format.js -_p[20] = { - value: function(require, exports, module) { - function format(template, args) { - if (typeof args != "object") { - args = [].slice.call(arguments, 1); - } - return String(template).replace(/\{(\w+)\}/gi, function(match, $key) { - return args[$key] || $key; - }); - } - return module.exports = format; - } -}; - -//src/tool/innertext.js -/** - * @fileOverview - * - * innerText polyfill - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[21] = { - value: function(require, exports, module) { - if (!("innerText" in document.createElement("a")) && "getSelection" in window) { - HTMLElement.prototype.__defineGetter__("innerText", function() { - var selection = window.getSelection(), ranges = [], str, i; - // Save existing selections. - for (i = 0; i < selection.rangeCount; i++) { - ranges[i] = selection.getRangeAt(i); - } - // Deselect everything. - selection.removeAllRanges(); - // Select `el` and all child nodes. - // 'this' is the element .innerText got called on - selection.selectAllChildren(this); - // Get the string representation of the selected nodes. - str = selection.toString(); - // Deselect everything. Again. - selection.removeAllRanges(); - // Restore all formerly existing selections. - for (i = 0; i < ranges.length; i++) { - selection.addRange(ranges[i]); - } - // Oh look, this is what we wanted. - // String representation of the element, close to as rendered. - return str; - }); - HTMLElement.prototype.__defineSetter__("innerText", function(text) { - /** - * @Desc: 解决FireFox节点内容删除后text为null,出现报错的问题 - * @Editor: Naixor - * @Date: 2015.9.16 - */ - this.innerHTML = (text || "").replace(//g, ">").replace(/\n/g, "
    "); - }); - } - } -}; - -//src/tool/jsondiff.js -/** - * @fileOverview - * - * - * - * @author: techird - * @copyright: Baidu FEX, 2014 - */ -_p[22] = { - value: function(require, exports, module) { - /*! - * https://github.com/Starcounter-Jack/Fast-JSON-Patch - * json-patch-duplex.js 0.5.0 - * (c) 2013 Joachim Wester - * MIT license - */ - var _objectKeys = function() { - if (Object.keys) return Object.keys; - return function(o) { - var keys = []; - for (var i in o) { - if (o.hasOwnProperty(i)) { - keys.push(i); - } - } - return keys; - }; - }(); - function escapePathComponent(str) { - if (str.indexOf("/") === -1 && str.indexOf("~") === -1) return str; - return str.replace(/~/g, "~0").replace(/\//g, "~1"); - } - function deepClone(obj) { - if (typeof obj === "object") { - return JSON.parse(JSON.stringify(obj)); - } else { - return obj; - } - } - // Dirty check if obj is different from mirror, generate patches and update mirror - 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 (typeof oldVal == "object" && oldVal != null && typeof newVal == "object" && newVal != null) { - _generate(oldVal, newVal, patches, path + "/" + escapePathComponent(key)); - } else { - if (oldVal != newVal) { - changed = true; - patches.push({ - op: "replace", - path: path + "/" + escapePathComponent(key), - value: deepClone(newVal) - }); - } - } - } else { - patches.push({ - op: "remove", - path: path + "/" + escapePathComponent(key) - }); - deleted = true; - } - } - if (!deleted && newKeys.length == oldKeys.length) { - return; - } - 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: deepClone(obj[key]) - }); - } - } - } - function compare(tree1, tree2) { - var patches = []; - _generate(tree1, tree2, patches, ""); - return patches; - } - return module.exports = compare; - } -}; - -//src/tool/key.js -_p[23] = { - value: function(require, exports, module) { - var keymap = _p.r(24); - var CTRL_MASK = 4096; - var ALT_MASK = 8192; - var SHIFT_MASK = 16384; - function hash(unknown) { - if (typeof unknown == "string") { - return hashKeyExpression(unknown); - } - return hashKeyEvent(unknown); - } - function is(a, b) { - return a && b && hash(a) == hash(b); - } - exports.hash = hash; - exports.is = is; - function hashKeyEvent(keyEvent) { - var hashCode = 0; - if (keyEvent.ctrlKey || keyEvent.metaKey) { - hashCode |= CTRL_MASK; - } - if (keyEvent.altKey) { - hashCode |= ALT_MASK; - } - if (keyEvent.shiftKey) { - hashCode |= SHIFT_MASK; - } - // Shift, Control, Alt KeyCode ignored. - if ([ 16, 17, 18, 91 ].indexOf(keyEvent.keyCode) === -1) { - /** - * 解决浏览器输入法状态下对keyDown的keyCode判断不准确的问题,使用keyIdentifier, - * 可以解决chrome和safari下的各种问题,其他浏览器依旧有问题,然而那并不影响我们对特 - * 需判断的按键进行判断(比如Space在safari输入法态下就是229,其他的就不是) - * @editor Naixor - * @Date 2015-12-2 - */ - if (keyEvent.keyCode === 229 && keyEvent.keyIdentifier) { - return hashCode |= parseInt(keyEvent.keyIdentifier.substr(2), 16); - } - hashCode |= keyEvent.keyCode; - } - return hashCode; - } - function hashKeyExpression(keyExpression) { - var hashCode = 0; - keyExpression.toLowerCase().split(/\s*\+\s*/).forEach(function(name) { - switch (name) { - case "ctrl": - case "cmd": - hashCode |= CTRL_MASK; - break; - - case "alt": - hashCode |= ALT_MASK; - break; - - case "shift": - hashCode |= SHIFT_MASK; - break; - - default: - hashCode |= keymap[name]; - } - }); - return hashCode; - } - } -}; - -//src/tool/keymap.js -_p[24] = { - value: function(require, exports, module) { - var keymap = { - Shift: 16, - Control: 17, - Alt: 18, - CapsLock: 20, - BackSpace: 8, - Tab: 9, - Enter: 13, - Esc: 27, - Space: 32, - PageUp: 33, - PageDown: 34, - End: 35, - Home: 36, - Insert: 45, - Left: 37, - Up: 38, - Right: 39, - Down: 40, - Direction: { - 37: 1, - 38: 1, - 39: 1, - 40: 1 - }, - Del: 46, - NumLock: 144, - Cmd: 91, - CmdFF: 224, - F1: 112, - F2: 113, - F3: 114, - F4: 115, - F5: 116, - F6: 117, - F7: 118, - F8: 119, - F9: 120, - F10: 121, - F11: 122, - F12: 123, - "`": 192, - "=": 187, - "-": 189, - "/": 191, - ".": 190 - }; - // 小写适配 - for (var key in keymap) { - if (keymap.hasOwnProperty(key)) { - keymap[key.toLowerCase()] = keymap[key]; - } - } - var aKeyCode = 65; - var aCharCode = "a".charCodeAt(0); - // letters - "abcdefghijklmnopqrstuvwxyz".split("").forEach(function(letter) { - keymap[letter] = aKeyCode + (letter.charCodeAt(0) - aCharCode); - }); - // numbers - var n = 9; - do { - keymap[n.toString()] = n + 48; - } while (--n); - module.exports = keymap; - } -}; - -var moduleMapping = { - "expose-editor": 1 -}; - -function use(name) { - _p.r([ moduleMapping[name] ]); -} -angular.module('kityminderEditor', [ - 'ui.bootstrap', - 'ui.codemirror', - 'ui.colorpicker' -]) - .config(["$sceDelegateProvider", function($sceDelegateProvider) { - $sceDelegateProvider.resourceUrlWhitelist([ - // Allow same origin resource loads. - 'self', - // Allow loading from our assets domain. Notice the difference between * and **. - 'http://agroup.baidu.com:8910/**', - 'http://cq01-fe-rdtest01.vm.baidu.com:8910/**', - 'http://agroup.baidu.com:8911/**' - ]); - }]); -angular.module('kityminderEditor').run(['$templateCache', function($templateCache) { - 'use strict'; - - $templateCache.put('ui/directive/appendNode/appendNode.html', - "
    {{ 'appendchildnode' | lang:'ui/command' }}
    {{ 'appendparentnode' | lang:'ui/command' }}
    {{ 'appendsiblingnode' | lang:'ui/command' }}
    " - ); - - - $templateCache.put('ui/directive/arrange/arrange.html', - "
    {{ 'arrangeup' | lang:'ui/command' }}
    {{ 'arrangedown' | lang:'ui/command' }}
    " - ); - - - $templateCache.put('ui/directive/colorPanel/colorPanel.html', - "
    " - ); - - - $templateCache.put('ui/directive/expandLevel/expandLevel.html', - "
    " - ); - - - $templateCache.put('ui/directive/fontOperator/fontOperator.html', - "" - ); - - - $templateCache.put('ui/directive/hyperLink/hyperLink.html', - "
    " - ); - - - $templateCache.put('ui/directive/imageBtn/imageBtn.html', - "
    " - ); - - - $templateCache.put('ui/directive/kityminderEditor/kityminderEditor.html', - "
    " - ); - - - $templateCache.put('ui/directive/kityminderViewer/kityminderViewer.html', - "
    " - ); - - - $templateCache.put('ui/directive/layout/layout.html', - "" - ); - - - $templateCache.put('ui/directive/navigator/navigator.html', - "
    " - ); - - - $templateCache.put('ui/directive/noteBtn/noteBtn.html', - "
    " - ); - - - $templateCache.put('ui/directive/noteEditor/noteEditor.html', - "

    请选择节点编辑备注

    " - ); - - - $templateCache.put('ui/directive/notePreviewer/notePreviewer.html', - "
    " - ); - - - $templateCache.put('ui/directive/operation/operation.html', - "
    {{ 'editnode' | lang:'ui/command' }}
    {{ 'removenode' | lang:'ui/command' }}
    " - ); - - - $templateCache.put('ui/directive/priorityEditor/priorityEditor.html', - "
    " - ); - - - $templateCache.put('ui/directive/progressEditor/progressEditor.html', - "
    " - ); - - - $templateCache.put('ui/directive/resourceEditor/resourceEditor.html', - "
    " - ); - - - $templateCache.put('ui/directive/searchBox/searchBox.html', - "
    " - ); - - - $templateCache.put('ui/directive/searchBtn/searchBtn.html', - "
    " - ); - - - $templateCache.put('ui/directive/selectAll/selectAll.html', - "
    " - ); - - - $templateCache.put('ui/directive/styleOperator/styleOperator.html', - "" - ); - - - $templateCache.put('ui/directive/templateList/templateList.html', - "
    " - ); - - - $templateCache.put('ui/directive/themeList/themeList.html', - "" - ); - - - $templateCache.put('ui/directive/topTab/topTab.html', - "" - ); - - - $templateCache.put('ui/directive/undoRedo/undoRedo.html', - "
    " - ); - - - $templateCache.put('ui/dialog/hyperlink/hyperlink.tpl.html', - "

    链接

    " - ); - - - $templateCache.put('ui/dialog/imExportNode/imExportNode.tpl.html', - "

    {{ title }}

    " - ); - - - $templateCache.put('ui/dialog/image/image.tpl.html', - "

    图片

    • \"{{ {{ image.title }}
    \"{{
    \"{{
    " - ); - - $templateCache.put('ui/directive/helpBtn/helpBtn.html', - "
    " - ); - -}]); - -angular.module('kityminderEditor').service('commandBinder', function() { - return { - bind: function(minder, command, scope) { - - minder.on('interactchange', function() { - scope.commandDisabled = minder.queryCommandState(command) === -1; - scope.commandValue = minder.queryCommandValue(command); - scope.$apply(); - }); - } - }; -}); -angular.module('kityminderEditor') - .provider('config', function() { - - this.config = { - // 右侧面板最小宽度 - ctrlPanelMin: 250, - - // 右侧面板宽度 - ctrlPanelWidth: parseInt(window.localStorage.__dev_minder_ctrlPanelWidth) || 250, - - // 分割线宽度 - dividerWidth: 3, - - // 默认语言 - defaultLang: 'zh-cn', - - // 放大缩小比例 - zoom: [10, 20, 30, 50, 80, 100, 120, 150, 200], - - // 图片上传接口 - imageUpload: 'server/imageUpload.php' - }; - - this.set = function(key, value) { - var supported = Object.keys(this.config); - var configObj = {}; - - // 支持全配置 - if (typeof key === 'object') { - configObj = key; - } - else { - configObj[key] = value; - } - - for (var i in configObj) { - if (configObj.hasOwnProperty(i) && supported.indexOf(i) !== -1) { - this.config[i] = configObj[i]; - } - else { - console.error('Unsupported config key: ', key, ', please choose in :', supported.join(', ')); - return false; - } - } - - return true; - }; - - this.$get = function () { - var me = this; - - return { - get: function (key) { - if (arguments.length === 0) { - return me.config; - } - - if (me.config.hasOwnProperty(key)) { - return me.config[key]; - } - - console.warn('Missing config key pair for : ', key); - return ''; - } - - }; - } - }); -angular.module('kityminderEditor') - .service('lang.zh-cn', function() { - return { - 'zh-cn': { - 'template': { - 'default': '思维导图', - 'tianpan': '天盘图', - 'structure': '组织结构图', - 'filetree': '目录组织图', - 'right': '逻辑结构图', - 'fish-bone': '鱼骨头图' - }, - 'theme': { - 'classic': '脑图经典', - 'classic-compact': '紧凑经典', - 'snow': '温柔冷光', - 'snow-compact': '紧凑冷光', - 'fish': '鱼骨图', - 'wire': '线框', - 'fresh-red': '清新红', - 'fresh-soil': '泥土黄', - 'fresh-green': '文艺绿', - 'fresh-blue': '天空蓝', - 'fresh-purple': '浪漫紫', - 'fresh-pink': '脑残粉', - 'fresh-red-compat': '紧凑红', - 'fresh-soil-compat': '紧凑黄', - 'fresh-green-compat': '紧凑绿', - 'fresh-blue-compat': '紧凑蓝', - 'fresh-purple-compat': '紧凑紫', - 'fresh-pink-compat': '紧凑粉', - 'tianpan':'经典天盘', - 'tianpan-compact': '紧凑天盘' - }, - 'maintopic': '中心主题', - 'topic': '分支主题', - 'panels': { - 'history': '历史', - 'template': '模板', - 'theme': '皮肤', - 'layout': '布局', - 'style': '样式', - 'font': '文字', - 'color': '颜色', - 'background': '背景', - 'insert': '插入', - 'arrange': '调整', - 'nodeop': '当前', - 'priority': '优先级', - 'progress': '进度', - 'resource': '资源', - 'note': '备注', - 'attachment': '附件', - 'word': '文字' - }, - 'error_message': { - 'title': '哎呀,脑图出错了', - - 'err_load': '加载脑图失败', - 'err_save': '保存脑图失败', - 'err_network': '网络错误', - 'err_doc_resolve': '文档解析失败', - 'err_unknown': '发生了奇怪的错误', - 'err_localfile_read': '文件读取错误', - 'err_download': '文件下载失败', - 'err_remove_share': '取消分享失败', - 'err_create_share': '分享失败', - 'err_mkdir': '目录创建失败', - 'err_ls': '读取目录失败', - 'err_share_data': '加载分享内容出错', - 'err_share_sync_fail': '分享内容同步失败', - 'err_move_file': '文件移动失败', - 'err_rename': '重命名失败', - - 'unknownreason': '可能是外星人篡改了代码...', - 'pcs_code': { - 3: "不支持此接口", - 4: "没有权限执行此操作", - 5: "IP未授权", - 110: "用户会话已过期,请重新登录", - 31001: "数据库查询错误", - 31002: "数据库连接错误", - 31003: "数据库返回空结果", - 31021: "网络错误", - 31022: "暂时无法连接服务器", - 31023: "输入参数错误", - 31024: "app id为空", - 31025: "后端存储错误", - 31041: "用户的cookie不是合法的百度cookie", - 31042: "用户未登陆", - 31043: "用户未激活", - 31044: "用户未授权", - 31045: "用户不存在", - 31046: "用户已经存在", - 31061: "文件已经存在", - 31062: "文件名非法", - 31063: "文件父目录不存在", - 31064: "无权访问此文件", - 31065: "目录已满", - 31066: "文件不存在", - 31067: "文件处理出错", - 31068: "文件创建失败", - 31069: "文件拷贝失败", - 31070: "文件删除失败", - 31071: "不能读取文件元信息", - 31072: "文件移动失败", - 31073: "文件重命名失败", - 31079: "未找到文件MD5,请使用上传API上传整个文件。", - 31081: "superfile创建失败", - 31082: "superfile 块列表为空", - 31083: "superfile 更新失败", - 31101: "tag系统内部错误", - 31102: "tag参数错误", - 31103: "tag系统错误", - 31110: "未授权设置此目录配额", - 31111: "配额管理只支持两级目录", - 31112: "超出配额", - 31113: "配额不能超出目录祖先的配额", - 31114: "配额不能比子目录配额小", - 31141: "请求缩略图服务失败", - 31201: "签名错误", - 31202: "文件不存在", - 31203: "设置acl失败", - 31204: "请求acl验证失败", - 31205: "获取acl失败", - 31206: "acl不存在", - 31207: "bucket已存在", - 31208: "用户请求错误", - 31209: "服务器错误", - 31210: "服务器不支持", - 31211: "禁止访问", - 31212: "服务不可用", - 31213: "重试出错", - 31214: "上传文件data失败", - 31215: "上传文件meta失败", - 31216: "下载文件data失败", - 31217: "下载文件meta失败", - 31218: "容量超出限额", - 31219: "请求数超出限额", - 31220: "流量超出限额", - 31298: "服务器返回值KEY非法", - 31299: "服务器返回值KEY不存在" - } - }, - 'ui': { - 'shared_file_title': '[分享的] {0} (只读)', - 'load_share_for_edit': '正在加载分享的文件...', - 'share_sync_success': '分享内容已同步', - 'recycle_clear_confirm': '确认清空回收站么?清空后的文件无法恢复。', - - 'fullscreen_exit_hint': '按 Esc 或 F11 退出全屏', - - 'error_detail': '详细信息', - 'copy_and_feedback': '复制并反馈', - 'move_file_confirm': '确定把 "{0}" 移动到 "{1}" 吗?', - 'rename': '重命名', - 'rename_success': '{0} 重命名成功', - 'move_success': '{0} 移动成功到 {1}', - - 'command': { - 'appendsiblingnode': '插入同级主题', - 'appendparentnode': '插入上级主题', - 'appendchildnode': '插入下级主题', - 'removenode': '删除', - 'editnode': '编辑', - 'arrangeup': '上移', - 'arrangedown': '下移', - 'resetlayout': '整理布局', - 'expandtoleaf': '展开全部节点', - 'expandtolevel1': '展开到一级节点', - 'expandtolevel2': '展开到二级节点', - 'expandtolevel3': '展开到三级节点', - 'expandtolevel4': '展开到四级节点', - 'expandtolevel5': '展开到五级节点', - 'expandtolevel6': '展开到六级节点', - 'fullscreen': '全屏', - 'outline': '大纲' - }, - - 'search':'搜索', - - 'expandtoleaf': '展开', - - 'back': '返回', - - 'undo': '撤销 (Ctrl + Z)', - 'redo': '重做 (Ctrl + Y)', - - 'tabs': { - 'idea': '思路', - 'appearence': '外观', - 'view': '视图' - }, - - 'quickvisit': { - 'new': '新建 (Ctrl + Alt + N)', - 'save': '保存 (Ctrl + S)', - 'share': '分享 (Ctrl + Alt + S)', - 'feedback': '反馈问题(F1)', - 'editshare': '编辑' - }, - - 'menu': { - - 'mainmenutext': '百度脑图', // 主菜单按钮文本 - - 'newtab': '新建', - 'opentab': '打开', - 'savetab': '保存', - 'sharetab': '分享', - 'preferencetab': '设置', - 'helptab': '帮助', - 'feedbacktab': '反馈', - 'recenttab': '最近使用', - 'netdisktab': '百度云存储', - 'localtab': '本地文件', - 'drafttab': '草稿箱', - 'downloadtab': '导出到本地', - 'createsharetab': '当前脑图', - 'managesharetab': '已分享', - - 'newheader': '新建脑图', - 'openheader': '打开', - 'saveheader': '保存到', - 'draftheader': '草稿箱', - 'shareheader': '分享我的脑图', - 'downloadheader': '导出到指定格式', - 'preferenceheader': '偏好设置', - 'helpheader': '帮助', - 'feedbackheader': '反馈' - }, - - 'mydocument': '我的文档', - 'emptydir': '目录为空!', - 'pickfile': '选择文件...', - 'acceptfile': '支持的格式:{0}', - 'dropfile': '或将文件拖至此处', - 'unsupportedfile': '不支持的文件格式', - 'untitleddoc': '未命名文档', - 'overrideconfirm': '{0} 已存在,确认覆盖吗?', - 'checklogin': '检查登录状态中...', - 'loggingin': '正在登录...', - 'recent': '最近打开', - 'clearrecent': '清空', - 'clearrecentconfirm': '确认清空最近文档列表?', - 'cleardraft': '清空', - 'cleardraftconfirm': '确认清空草稿箱?', - - 'none_share': '不分享', - 'public_share': '公开分享', - 'password_share': '私密分享', - 'email_share': '邮件邀请', - 'url_share': '脑图 URL 地址:', - 'sns_share': '社交网络分享:', - 'sns_share_text': '“{0}” - 我用百度脑图制作的思维导图,快看看吧!(地址:{1})', - 'none_share_description': '不分享当前脑图', - 'public_share_description': '创建任何人可见的分享', - 'share_button_text': '创建', - 'password_share_description': '创建需要密码才可见的分享', - 'email_share_description': '创建指定人可见的分享,您还可以允许他们编辑', - 'ondev': '敬请期待!', - 'create_share_failed': '分享失败:{0}', - 'remove_share_failed': '删除失败:{1}', - 'copy': '复制', - 'copied': '已复制', - 'shared_tip': '当前脑图被 {0} 分享,你可以修改之后保存到自己的网盘上或再次分享', - 'current_share': '当前脑图', - 'manage_share': '我的分享', - 'share_remove_action': '不分享该脑图', - 'share_view_action': '打开分享地址', - 'share_edit_action': '编辑分享的文件', - - 'login': '登录', - 'logout': '注销', - 'switchuser': '切换账户', - 'userinfo': '个人信息', - 'gotonetdisk': '我的网盘', - 'requirelogin': '请 后使用', - 'saveas': '保存为', - 'filename': '文件名', - 'fileformat': '保存格式', - 'save': '保存', - 'mkdir': '新建目录', - 'recycle': '回收站', - 'newdir': '未命名目录', - - 'bold': '加粗', - 'italic': '斜体', - 'forecolor': '字体颜色', - 'fontfamily': '字体', - 'fontsize': '字号', - 'layoutstyle': '主题', - 'node': '节点操作', - 'saveto': '另存为', - 'hand': '允许拖拽', - 'camera': '定位根节点', - 'zoom-in': '放大(Ctrl+)', - 'zoom-out': '缩小(Ctrl-)', - 'markers': '标签', - 'resource': '资源', - 'help': '帮助', - 'preference': '偏好设置', - 'expandnode': '展开到叶子', - 'collapsenode': '收起到一级节点', - 'template': '模板', - 'theme': '皮肤', - 'clearstyle': '清除样式', - 'copystyle': '复制样式', - 'pastestyle': '粘贴样式', - 'appendsiblingnode': '同级主题', - 'appendchildnode': '下级主题', - 'arrangeup': '前调', - 'arrangedown': '后调', - 'editnode': '编辑', - 'removenode': '移除', - 'priority': '优先级', - 'progress': { - 'p1': '未开始', - 'p2': '完成 1/8', - 'p3': '完成 1/4', - 'p4': '完成 3/8', - 'p5': '完成一半', - 'p6': '完成 5/8', - 'p7': '完成 3/4', - 'p8': '完成 7/8', - 'p9': '已完成', - 'p0': '清除进度' - }, - 'link': '链接', - 'image': '图片', - 'note': '备注', - 'insertlink': '插入链接', - 'insertimage': '插入图片', - 'insertnote': '插入备注', - 'removelink': '移除已有连接', - 'removeimage': '移除已有图片', - 'removenote': '移除已有备注', - 'resetlayout': '整理', - - 'justnow': '刚刚', - 'minutesago': '{0} 分钟前', - 'hoursago': '{0} 小时前', - 'yesterday': '昨天', - 'daysago': '{0} 天前', - 'longago': '很久之前', - - 'redirect': '您正在打开连接 {0},百度脑图不能保证连接的安全性,是否要继续?', - 'navigator': '导航器', - - 'unsavedcontent': '当前文件还没有保存到网盘:\n\n{0}\n\n虽然未保存的数据会缓存在草稿箱,但是清除浏览器缓存会导致草稿箱清除。', - - 'shortcuts': '快捷键', - 'contact': '联系与反馈', - 'email': '邮件组', - 'qq_group': 'QQ 群', - 'github_issue': 'Github', - 'baidu_tieba': '贴吧', - - 'clipboardunsupported': '您的浏览器不支持剪贴板,请使用快捷键复制', - - 'load_success': '{0} 加载成功', - 'save_success': '{0} 已保存于 {1}', - 'autosave_success': '{0} 已自动保存于 {1}', - - 'selectall': '全选', - 'selectrevert': '反选', - 'selectsiblings': '选择兄弟节点', - 'selectlevel': '选择同级节点', - 'selectpath': '选择路径', - 'selecttree': '选择子树' - }, - 'popupcolor': { - 'clearColor': '清空颜色', - 'standardColor': '标准颜色', - 'themeColor': '主题颜色' - }, - 'dialogs': { - 'markers': { - 'static': { - 'lang_input_text': '文本内容:', - 'lang_input_url': '链接地址:', - 'lang_input_title': '标题:', - 'lang_input_target': '是否在新窗口:' - }, - 'priority': '优先级', - 'none': '无', - 'progress': { - 'title': '进度', - 'notdone': '未完成', - 'done1': '完成 1/8', - 'done2': '完成 1/4', - 'done3': '完成 3/8', - 'done4': '完成 1/2', - 'done5': '完成 5/8', - 'done6': '完成 3/4', - 'done7': '完成 7/8', - 'done': '已完成' - } - }, - 'help': { - - }, - 'hyperlink': {}, - 'image': {}, - 'resource': {} - }, - 'hyperlink': { - 'hyperlink': '链接...', - 'unhyperlink': '移除链接' - }, - 'image': { - 'image': '图片...', - 'removeimage': '移除图片' - }, - 'marker': { - 'marker': '进度/优先级...' - }, - 'resource': { - 'resource': '资源...' - } - } - } - }); -/** - * @fileOverview - * - * UI 状态的 LocalStorage 的存取文件,未来可能在离线编辑的时候升级 - * - * @author: zhangbobell - * @email : zhangbobell@163.com - * - * @copyright: Baidu FEX, 2015 - */ -angular.module('kityminderEditor') - .service('memory', function() { - - function isQuotaExceeded(e) { - var quotaExceeded = false; - if (e) { - if (e.code) { - switch (e.code) { - case 22: - quotaExceeded = true; - break; - case 1014: - // Firefox - if (e.name === 'NS_ERROR_DOM_QUOTA_REACHED') { - quotaExceeded = true; - } - break; - } - } else if (e.number === -2147024882) { - // Internet Explorer 8 - quotaExceeded = true; - } - } - return quotaExceeded; - } - - return { - get: function(key) { - var value = window.localStorage.getItem(key); - return null || JSON.parse(value); - }, - - set: function(key, value) { - try { - window.localStorage.setItem(key, JSON.stringify(value)); - return true; - } catch(e) { - if (isQuotaExceeded(e)) { - return false; - } - } - }, - remove: function(key) { - var value = window.localStorage.getItem(key); - window.localStorage.removeItem(key); - return value; - }, - clear: function() { - window.localStorage.clear(); - } - } -}); -angular.module('kityminderEditor') - .service('minder.service', function() { - - var callbackQueue = []; - - function registerEvent(callback) { - callbackQueue.push(callback); - } - - function executeCallback() { - callbackQueue.forEach(function(ele) { - ele.apply(this, arguments); - }) - } - - return { - registerEvent: registerEvent, - executeCallback: executeCallback - } - }); -angular.module('kityminderEditor') - .service('resourceService', ['$document', function($document) { - var openScope = null; - - this.open = function( dropdownScope ) { - if ( !openScope ) { - $document.bind('click', closeDropdown); - $document.bind('keydown', escapeKeyBind); - } - - if ( openScope && openScope !== dropdownScope ) { - openScope.resourceListOpen = false; - } - - openScope = dropdownScope; - }; - - this.close = function( dropdownScope ) { - if ( openScope === dropdownScope ) { - openScope = null; - $document.unbind('click', closeDropdown); - $document.unbind('keydown', escapeKeyBind); - } - }; - - var closeDropdown = function( evt ) { - // This method may still be called during the same mouse event that - // unbound this event handler. So check openScope before proceeding. - //console.log(evt, openScope); - if (!openScope) { return; } - - var toggleElement = openScope.getToggleElement(); - if ( evt && toggleElement && toggleElement[0].contains(evt.target) ) { - return; - } - - openScope.$apply(function() { - console.log('to close the resourcelist'); - openScope.resourceListOpen = false; - }); - }; - - var escapeKeyBind = function( evt ) { - if ( evt.which === 27 ) { - openScope.focusToggleElement(); - closeDropdown(); - } - }; -}]) -angular.module('kityminderEditor').service('revokeDialog', ['$modal', 'minder.service', function($modal, minderService) { - - minderService.registerEvent(function() { - - // 触发导入节点或导出节点对话框 - var minder = window.minder; - var editor = window.editor; - var parentFSM = editor.hotbox.getParentFSM(); - - - minder.on('importNodeData', function() { - parentFSM.jump('modal', 'import-text-modal'); - - var importModal = $modal.open({ - animation: true, - templateUrl: 'ui/dialog/imExportNode/imExportNode.tpl.html', - controller: 'imExportNode.ctrl', - size: 'md', - resolve: { - title: function() { - return '导入节点'; - }, - defaultValue: function() { - return ''; - }, - type: function() { - return 'import'; - } - } - }); - - importModal.result.then(function(result) { - try{ - minder.Text2Children(minder.getSelectedNode(), result); - } catch(e) { - alert(e); - } - parentFSM.jump('normal', 'import-text-finish'); - editor.receiver.selectAll(); - }, function() { - parentFSM.jump('normal', 'import-text-finish'); - editor.receiver.selectAll(); - }); - }); - - minder.on('exportNodeData', function() { - parentFSM.jump('modal', 'export-text-modal'); - - var exportModal = $modal.open({ - animation: true, - templateUrl: 'ui/dialog/imExportNode/imExportNode.tpl.html', - controller: 'imExportNode.ctrl', - size: 'md', - resolve: { - title: function() { - return '导出节点'; - }, - defaultValue: function() { - var selectedNode = minder.getSelectedNode(), - Node2Text = window.kityminder.data.getRegisterProtocol('text').Node2Text; - - return Node2Text(selectedNode); - }, - type: function() { - return 'export'; - } - } - }); - - exportModal.result.then(function(result) { - parentFSM.jump('normal', 'export-text-finish'); - editor.receiver.selectAll(); - }, function() { - parentFSM.jump('normal', 'export-text-finish'); - editor.receiver.selectAll(); - }); - }); - - }); - - return {}; -}]); -/** - * @fileOverview - * - * 与后端交互的服务 - * - * @author: zhangbobell - * @email : zhangbobell@163.com - * - * @copyright: Baidu FEX, 2015 - */ -angular.module('kityminderEditor') - .service('server', ['config', '$http', function(config, $http) { - - return { - uploadImage: function(file) { - var url = config.get('imageUpload'); - var fd = new FormData(); - fd.append('upload_file', file); - - return $http.post(url, fd, { - transformRequest: angular.identity, - headers: {'Content-Type': undefined} - }); - } - } - }]); -angular.module('kityminderEditor') - .service('valueTransfer', function() { - return {}; - }); -angular.module('kityminderEditor') - .filter('commandState', function() { - return function(minder, command) { - return minder.queryCommandState(command); - } - }) - .filter('commandValue', function() { - return function(minder, command) { - return minder.queryCommandValue(command); - } - }); - - -angular.module('kityminderEditor') - .filter('lang', ['config', 'lang.zh-cn', function(config, lang) { - return function(text, block) { - var defaultLang = config.get('defaultLang'); - - if (lang[defaultLang] == undefined) { - return '未发现对应语言包,请检查 lang.xxx.service.js!'; - } else { - - var dict = lang[defaultLang]; - block.split('/').forEach(function(ele, idx) { - dict = dict[ele]; - }); - - return dict[text] || null; - } - - }; - }]); -angular.module('kityminderEditor') - .controller('hyperlink.ctrl', ["$scope", "$modalInstance", "link", function ($scope, $modalInstance, link) { - - $scope.R_URL = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/; - - $scope.url = link.url || ''; - $scope.title = link.title || ''; - - setTimeout(function() { - var $linkUrl = $('#link-url'); - $linkUrl.focus(); - $linkUrl[0].setSelectionRange(0, $scope.url.length); - }, 30); - - $scope.shortCut = function(e) { - e.stopPropagation(); - - if (e.keyCode == 13) { - $scope.ok(); - } else if (e.keyCode == 27) { - $scope.cancel(); - } - }; - - $scope.ok = function () { - if($scope.R_URL.test($scope.url)) { - $modalInstance.close({ - url: $scope.url, - title: $scope.title - }); - } else { - $scope.urlPassed = false; - - var $linkUrl = $('#link-url'); - $linkUrl.focus(); - $linkUrl[0].setSelectionRange(0, $scope.url.length); - } - editor.receiver.selectAll(); - }; - - $scope.cancel = function () { - $modalInstance.dismiss('cancel'); - editor.receiver.selectAll(); - }; - - }]); -angular.module('kityminderEditor') - .controller('imExportNode.ctrl', ["$scope", "$modalInstance", "title", "defaultValue", "type", function ($scope, $modalInstance, title, defaultValue, type) { - - $scope.title = title; - - $scope.value = defaultValue; - - $scope.type = type; - - $scope.ok = function () { - if ($scope.value == '') { - return; - } - $modalInstance.close($scope.value); - editor.receiver.selectAll(); - }; - - $scope.cancel = function () { - $modalInstance.dismiss('cancel'); - editor.receiver.selectAll(); - }; - - setTimeout(function() { - $('.single-input').focus(); - - $('.single-input')[0].setSelectionRange(0, defaultValue.length); - - }, 30); - - $scope.shortCut = function(e) { - e.stopPropagation(); - - //if (e.keyCode == 13 && e.shiftKey == false) { - // $scope.ok(); - //} - - if (e.keyCode == 27) { - $scope.cancel(); - } - - // tab 键屏蔽默认事件 和 backspace 键屏蔽默认事件 - if (e.keyCode == 8 && type == 'export') { - e.preventDefault(); - } - - if (e.keyCode == 9) { - e.preventDefault(); - var $textarea = e.target; - var pos = getCursortPosition($textarea); - var str = $textarea.value; - $textarea.value = str.substr(0, pos) + '\t' + str.substr(pos); - setCaretPosition($textarea, pos + 1); - } - - }; - - /* - * 获取 textarea 的光标位置 - * @Author: Naixor - * @date: 2015.09.23 - * */ - function getCursortPosition (ctrl) { - var CaretPos = 0; // IE Support - if (document.selection) { - ctrl.focus (); - var Sel = document.selection.createRange (); - Sel.moveStart ('character', -ctrl.value.length); - CaretPos = Sel.text.length; - } - // Firefox support - else if (ctrl.selectionStart || ctrl.selectionStart == '0') { - CaretPos = ctrl.selectionStart; - } - return (CaretPos); - } - - /* - * 设置 textarea 的光标位置 - * @Author: Naixor - * @date: 2015.09.23 - * */ - function setCaretPosition(ctrl, pos){ - if(ctrl.setSelectionRange) { - ctrl.focus(); - ctrl.setSelectionRange(pos,pos); - } else if (ctrl.createTextRange) { - var range = ctrl.createTextRange(); - range.collapse(true); - range.moveEnd('character', pos); - range.moveStart('character', pos); - range.select(); - } - } - - }]); -angular.module('kityminderEditor') - .controller('image.ctrl', ['$http', '$scope', '$modalInstance', 'image', 'server', function($http, $scope, $modalInstance, image, server) { - - $scope.data = { - list: [], - url: image.url || '', - title: image.title || '', - R_URL: /^https?\:\/\/\w+/ - }; - - setTimeout(function() { - var $imageUrl = $('#image-url'); - $imageUrl.focus(); - $imageUrl[0].setSelectionRange(0, $scope.data.url.length); - }, 300); - - - // 搜索图片按钮点击事件 - $scope.searchImage = function() { - $scope.list = []; - - getImageData() - .success(function(json) { - if(json && json.data) { - for(var i = 0; i < json.data.length; i++) { - if(json.data[i].objURL) { - $scope.list.push({ - title: json.data[i].fromPageTitleEnc, - src: json.data[i].middleURL, - url: json.data[i].middleURL - }); - } - } - } - }) - .error(function() { - - }); - }; - - // 选择图片的鼠标点击事件 - $scope.selectImage = function($event) { - var targetItem = $('#img-item'+ (this.$index)); - var targetImg = $('#img-'+ (this.$index)); - - targetItem.siblings('.selected').removeClass('selected'); - targetItem.addClass('selected'); - - $scope.data.url = targetImg.attr('src'); - $scope.data.title = targetImg.attr('alt'); - }; - - // 自动上传图片,后端需要直接返回图片 URL - $scope.uploadImage = function() { - var fileInput = $('#upload-image'); - if (!fileInput.val()) { - return; - } - if (/^.*\.(jpg|JPG|jpeg|JPEG|gif|GIF|png|PNG)$/.test(fileInput.val())) { - var file = fileInput[0].files[0]; - return server.uploadImage(file).then(function (json) { - var resp = json.data; - if (resp.errno === 0) { - $scope.data.url = resp.data.url; - } - }); - } else { - alert("后缀只能是 jpg、gif 及 png"); - } - }; - - $scope.shortCut = function(e) { - e.stopPropagation(); - - if (e.keyCode == 13) { - $scope.ok(); - } else if (e.keyCode == 27) { - $scope.cancel(); - } - }; - - $scope.ok = function () { - if($scope.data.R_URL.test($scope.data.url)) { - $modalInstance.close({ - url: $scope.data.url, - title: $scope.data.title - }); - } else { - $scope.urlPassed = false; - - var $imageUrl = $('#image-url'); - if ($imageUrl) { - $imageUrl.focus(); - $imageUrl[0].setSelectionRange(0, $scope.data.url.length); - } - - } - - editor.receiver.selectAll(); - }; - - $scope.cancel = function () { - $modalInstance.dismiss('cancel'); - editor.receiver.selectAll(); - }; - - function getImageData() { - var key = $scope.data.searchKeyword2; - var currentTime = new Date(); - var url = 'http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&fp=result&queryWord='+ key +'&cl=2&lm=-1&ie=utf-8&oe=utf-8&st=-1&ic=0&word='+ key +'&face=0&istype=2&nc=1&pn=60&rn=60&gsm=3c&'+ currentTime.getTime() +'=&callback=JSON_CALLBACK'; - - return $http.jsonp(url); - } - }]); -angular.module('kityminderEditor') - .directive('appendNode', ['commandBinder', function(commandBinder) { - return { - restrict: 'E', - templateUrl: 'ui/directive/appendNode/appendNode.html', - scope: { - minder: '=' - }, - replace: true, - link: function($scope) { - var minder = $scope.minder; - - commandBinder.bind(minder, 'appendchildnode', $scope) - - $scope.execCommand = function(command) { - minder.execCommand(command, '分支主题'); - editText(); - }; - - function editText() { - var receiverElement = editor.receiver.element; - var fsm = editor.fsm; - var receiver = editor.receiver; - - receiverElement.innerText = minder.queryCommandValue('text'); - fsm.jump('input', 'input-request'); - receiver.selectAll(); - } - } - } - }]); -angular.module('kityminderEditor') - .directive('arrange', ['commandBinder', function(commandBinder) { - return { - restrict: 'E', - templateUrl: 'ui/directive/arrange/arrange.html', - scope: { - minder: '=' - }, - replace: true, - link: function($scope) { - var minder = $scope.minder; - - //commandBinder.bind(minder, 'priority', $scope); - } - } - }]); -angular.module('kityminderEditor') - .directive('colorPanel', function() { - return { - restrict: 'E', - templateUrl: 'ui/directive/colorPanel/colorPanel.html', - scope: { - minder: '=' - }, - replace: true, - link: function(scope) { - - var minder = scope.minder; - var currentTheme = minder.getThemeItems(); - - scope.$on('colorPicked', function(event, color) { - event.stopPropagation(); - scope.bgColor = color; - minder.execCommand('background', color); - }); - - scope.setDefaultBg = function() { - var currentNode = minder.getSelectedNode(); - var bgColor = minder.getNodeStyle(currentNode, 'background'); - - // 有可能是 kity 的颜色类 - return typeof bgColor === 'object' ? bgColor.toHEX() : bgColor; - }; - - scope.bgColor = scope.setDefaultBg() || '#fff'; - - } - } - }); -angular.module('kityminderEditor') - .directive('expandLevel', function() { - return { - restrict: 'E', - templateUrl: 'ui/directive/expandLevel/expandLevel.html', - scope: { - minder: '=' - }, - replace: true, - link: function($scope) { - - $scope.levels = [1, 2, 3, 4, 5, 6]; - } - } - }); -angular.module('kityminderEditor') - .directive('fontOperator', function() { - return { - restrict: 'E', - templateUrl: 'ui/directive/fontOperator/fontOperator.html', - scope: { - minder: '=' - }, - replace: true, - link: function(scope) { - var minder = scope.minder; - var currentTheme = minder.getThemeItems(); - - scope.fontSizeList = [10, 12, 16, 18, 24, 32, 48]; - scope.fontFamilyList = [{ - name: '宋体', - val: '宋体,SimSun' - }, { - name: '微软雅黑', - val: '微软雅黑,Microsoft YaHei' - }, { - name: '楷体', - val: '楷体,楷体_GB2312,SimKai' - }, { - name: '黑体', - val: '黑体, SimHei' - }, { - name: '隶书', - val: '隶书, SimLi' - }, { - name: 'Andale Mono', - val: 'andale mono' - }, { - name: 'Arial', - val: 'arial,helvetica,sans-serif' - }, { - name: 'arialBlack', - val: 'arial black,avant garde' - }, { - name: 'Comic Sans Ms', - val: 'comic sans ms' - }, { - name: 'Impact', - val: 'impact,chicago' - }, { - name: 'Times New Roman', - val: 'times new roman' - }, { - name: 'Sans-Serif', - val: 'sans-serif' - }]; - - scope.$on('colorPicked', function(event, color) { - event.stopPropagation(); - - scope.foreColor = color; - minder.execCommand('forecolor', color); - }); - - scope.setDefaultColor = function() { - var currentNode = minder.getSelectedNode(); - var fontColor = minder.getNodeStyle(currentNode, 'color'); - - // 有可能是 kity 的颜色类 - return typeof fontColor === 'object' ? fontColor.toHEX() : fontColor; - }; - - scope.foreColor = scope.setDefaultColor() || '#000'; - - scope.getFontfamilyName = function(val) { - var fontName = ''; - scope.fontFamilyList.forEach(function(ele, idx, arr) { - if (ele.val === val) { - fontName = ele.name; - return ''; - } - }); - - return fontName; - } - } - } - }); -angular.module('kityminderEditor') - .directive('hyperLink', ['$modal', function($modal) { - return { - restrict: 'E', - templateUrl: 'ui/directive/hyperLink/hyperLink.html', - scope: { - minder: '=' - }, - replace: true, - link: function($scope) { - var minder = $scope.minder; - - $scope.addHyperlink = function() { - - var link = minder.queryCommandValue('HyperLink'); - - var hyperlinkModal = $modal.open({ - animation: true, - templateUrl: 'ui/dialog/hyperlink/hyperlink.tpl.html', - controller: 'hyperlink.ctrl', - size: 'md', - resolve: { - link: function() { - return link; - } - } - }); - - hyperlinkModal.result.then(function(result) { - minder.execCommand('HyperLink', result.url, result.title || ''); - }); - } - } - } - }]); -angular.module('kityminderEditor') - .directive('imageBtn', ['$modal', function($modal) { - return { - restrict: 'E', - templateUrl: 'ui/directive/imageBtn/imageBtn.html', - scope: { - minder: '=' - }, - replace: true, - link: function($scope) { - var minder = $scope.minder; - - $scope.addImage = function() { - - var image = minder.queryCommandValue('image'); - - var imageModal = $modal.open({ - animation: true, - templateUrl: 'ui/dialog/image/image.tpl.html', - controller: 'image.ctrl', - size: 'md', - resolve: { - image: function() { - return image; - } - } - }); - - imageModal.result.then(function(result) { - minder.execCommand('image', result.url, result.title || ''); - }); - } - } - } - }]); -angular.module('kityminderEditor') - .directive('kityminderEditor', ['config', 'minder.service', 'revokeDialog', function(config, minderService, revokeDialog) { - return { - restrict: 'EA', - templateUrl: 'ui/directive/kityminderEditor/kityminderEditor.html', - replace: true, - scope: { - onInit: '&' - }, - link: function(scope, element, attributes) { - - var $minderEditor = element.children('.minder-editor')[0]; - - function onInit(editor, minder) { - scope.onInit({ - editor: editor, - minder: minder - }); - - minderService.executeCallback(); - } - - if (typeof(seajs) != 'undefined') { - /* global seajs */ - seajs.config({ - base: './src' - }); - - define('demo', function(require) { - var Editor = require('editor'); - - var editor = window.editor = new Editor($minderEditor); - - if (window.localStorage.__dev_minder_content) { - editor.minder.importJson(JSON.parse(window.localStorage.__dev_minder_content)); - } - - editor.minder.on('contentchange', function() { - window.localStorage.__dev_minder_content = JSON.stringify(editor.minder.exportJson()); - }); - - window.minder = window.km = editor.minder; - - scope.editor = editor; - scope.minder = minder; - scope.config = config.get(); - - //scope.minder.setDefaultOptions(scope.config); - scope.$apply(); - - onInit(editor, minder); - }); - - seajs.use('demo'); - - } else if (window.kityminder && window.kityminder.Editor) { - var editor = new kityminder.Editor($minderEditor); - - window.editor = scope.editor = editor; - window.minder = scope.minder = editor.minder; - - scope.config = config.get(); - - //scope.minder.setDefaultOptions(config.getConfig()); - - onInit(editor, editor.minder); - } - - } - } - }]); -angular.module('kityminderEditor') - .directive('kityminderViewer', ['config', 'minder.service', function(config, minderService) { - return { - restrict: 'EA', - templateUrl: 'ui/directive/kityminderViewer/kityminderViewer.html', - replace: true, - scope: { - onInit: '&' - }, - link: function(scope, element, attributes) { - - var $minderEditor = element.children('.minder-viewer')[0]; - - function onInit(editor, minder) { - scope.onInit({ - editor: editor, - minder: minder - }); - - minderService.executeCallback(); - } - - if (window.kityminder && window.kityminder.Editor) { - var editor = new kityminder.Editor($minderEditor); - - window.editor = scope.editor = editor; - window.minder = scope.minder = editor.minder; - - onInit(editor, editor.minder); - } - - } - } - }]); -angular.module('kityminderEditor') - .directive('layout', function() { - return { - restrict: 'E', - templateUrl: 'ui/directive/layout/layout.html', - scope: { - minder: '=' - }, - replace: true, - link: function(scope) { - - } - } - }); -/** - * @fileOverview - * - * 左下角的导航器 - * - * @author: zhangbobell - * @email : zhangbobell@163.com - * - * @copyright: Baidu FEX, 2015 */ -angular.module('kityminderEditor') - .directive('navigator', ['memory', 'config', function(memory, config) { - return { - restrict: 'A', - templateUrl: 'ui/directive/navigator/navigator.html', - scope: { - minder: '=' - }, - link: function(scope) { - minder.setDefaultOptions({zoom: config.get('zoom')}); - - scope.isNavOpen = !memory.get('navigator-hidden'); - - scope.getZoomRadio = function(value) { - var zoomStack = minder.getOption('zoom'); - var minValue = zoomStack[0]; - var maxValue = zoomStack[zoomStack.length - 1]; - var valueRange = maxValue - minValue; - - return (1 - (value - minValue) / valueRange); - }; - - scope.getHeight = function(value) { - var totalHeight = $('.zoom-pan').height(); - - return scope.getZoomRadio(value) * totalHeight; - }; - - // 初始的缩放倍数 - scope.zoom = 100; - - // 发生缩放事件时 - minder.on('zoom', function(e) { - scope.zoom = e.zoom; - }); - - scope.toggleNavOpen = function() { - scope.isNavOpen = !scope.isNavOpen; - memory.set('navigator-hidden', !scope.isNavOpen); - - if (scope.isNavOpen) { - bind(); - updateContentView(); - updateVisibleView(); - } else{ - unbind(); - } - }; - - setTimeout(function() { - if (scope.isNavOpen) { - bind(); - updateContentView(); - updateVisibleView(); - } else{ - unbind(); - } - }, 0); - - - - function bind() { - minder.on('layout layoutallfinish', updateContentView); - minder.on('viewchange', updateVisibleView); - } - - function unbind() { - minder.off('layout layoutallfinish', updateContentView); - minder.off('viewchange', updateVisibleView); - } - - - /** 以下部分是缩略图导航器 * - * */ - - var $previewNavigator = $('.nav-previewer'); - - // 画布,渲染缩略图 - var paper = new kity.Paper($previewNavigator[0]); - - // 用两个路径来挥之节点和连线的缩略图 - var nodeThumb = paper.put(new kity.Path()); - var connectionThumb = paper.put(new kity.Path()); - - // 表示可视区域的矩形 - var visibleRect = paper.put(new kity.Rect(100, 100).stroke('red', '1%')); - - var contentView = new kity.Box(), visibleView = new kity.Box(); - - /** - * 增加一个对天盘图情况缩略图的处理, - * @Editor: Naixor line 104~129 - * @Date: 2015.11.3 - */ - var pathHandler = getPathHandler(minder.getTheme()); - - // 主题切换事件 - minder.on('themechange', function(e) { - pathHandler = getPathHandler(e.theme); - }); - - function getPathHandler(theme) { - switch (theme) { - case "tianpan": - case "tianpan-compact": - return function(nodePathData, x, y, width, height) { - var r = width >> 1; - nodePathData.push('M', x, y + r, - 'a', r, r, 0, 1, 1, 0, 0.01, - 'z'); - } - default: { - return function(nodePathData, x, y, width, height) { - nodePathData.push('M', x, y, - 'h', width, 'v', height, - 'h', -width, 'z'); - } - } - } - } - - navigate(); - - function navigate() { - - function moveView(center, duration) { - var box = visibleView; - center.x = -center.x; - center.y = -center.y; - - var viewMatrix = minder.getPaper().getViewPortMatrix(); - box = viewMatrix.transformBox(box); - - var targetPosition = center.offset(box.width / 2, box.height / 2); - - minder.getViewDragger().moveTo(targetPosition, duration); - } - - var dragging = false; - - paper.on('mousedown', function(e) { - dragging = true; - moveView(e.getPosition('top'), 200); - $previewNavigator.addClass('grab'); - }); - - paper.on('mousemove', function(e) { - if (dragging) { - moveView(e.getPosition('top')); - } - }); - - $(window).on('mouseup', function() { - dragging = false; - $previewNavigator.removeClass('grab'); - }); - } - - function updateContentView() { - - var view = minder.getRenderContainer().getBoundaryBox(); - - contentView = view; - - var padding = 30; - - paper.setViewBox( - view.x - padding - 0.5, - view.y - padding - 0.5, - view.width + padding * 2 + 1, - view.height + padding * 2 + 1); - - var nodePathData = []; - var connectionThumbData = []; - - minder.getRoot().traverse(function(node) { - var box = node.getLayoutBox(); - pathHandler(nodePathData, box.x, box.y, box.width, box.height); - if (node.getConnection() && node.parent && node.parent.isExpanded()) { - connectionThumbData.push(node.getConnection().getPathData()); - } - }); - - paper.setStyle('background', minder.getStyle('background')); - - if (nodePathData.length) { - nodeThumb - .fill(minder.getStyle('root-background')) - .setPathData(nodePathData); - } else { - nodeThumb.setPathData(null); - } - - if (connectionThumbData.length) { - connectionThumb - .stroke(minder.getStyle('connect-color'), '0.5%') - .setPathData(connectionThumbData); - } else { - connectionThumb.setPathData(null); - } - - updateVisibleView(); - } - - function updateVisibleView() { - visibleView = minder.getViewDragger().getView(); - visibleRect.setBox(visibleView.intersect(contentView)); - } - - } - } - }]); -angular.module('kityminderEditor') - .directive('noteBtn', ['valueTransfer', function(valueTransfer) { - return { - restrict: 'E', - templateUrl: 'ui/directive/noteBtn/noteBtn.html', - scope: { - minder: '=' - }, - replace: true, - link: function($scope) { - var minder = $scope.minder; - - $scope.addNote =function() { - valueTransfer.noteEditorOpen = true; - }; - } - } - }]); -angular.module('kityminderEditor') - - .directive('noteEditor', ['valueTransfer', function(valueTransfer) { - return { - restrict: 'A', - templateUrl: 'ui/directive/noteEditor/noteEditor.html', - scope: { - minder: '=' - }, - replace: true, - controller: ["$scope", function($scope) { - var minder = $scope.minder; - var isInteracting = false; - var cmEditor; - - $scope.codemirrorLoaded = function(_editor) { - - cmEditor = $scope.cmEditor = _editor; - - _editor.setSize('100%', '100%'); - }; - - function updateNote() { - var enabled = $scope.noteEnabled = minder.queryCommandState('note') != -1; - var noteValue = minder.queryCommandValue('note') || ''; - - if (enabled) { - $scope.noteContent = noteValue; - } - - isInteracting = true; - $scope.$apply(); - isInteracting = false; - } - - - $scope.$watch('noteContent', function(content) { - var enabled = minder.queryCommandState('note') != -1; - - if (content && enabled && !isInteracting) { - minder.execCommand('note', content); - } - - setTimeout(function() { - cmEditor.refresh(); - }); - }); - - - var noteEditorOpen = function() { - return valueTransfer.noteEditorOpen; - }; - - // 监听面板状态变量的改变 - $scope.$watch(noteEditorOpen, function(newVal, oldVal) { - if (newVal) { - setTimeout(function() { - cmEditor.refresh(); - cmEditor.focus(); - }); - } - $scope.noteEditorOpen = valueTransfer.noteEditorOpen; - }, true); - - - $scope.closeNoteEditor = function() { - valueTransfer.noteEditorOpen = false; - editor.receiver.selectAll(); - }; - - - - minder.on('interactchange', updateNote); - }] - } - }]); -// TODO: 使用一个 div 容器作为 previewer,而不是两个 -angular.module('kityminderEditor') - - .directive('notePreviewer', ['$sce', 'valueTransfer', function($sce, valueTransfer) { - return { - restrict: 'A', - templateUrl: 'ui/directive/notePreviewer/notePreviewer.html', - link: function(scope, element) { - var minder = scope.minder; - var $container = element.parent(); - var $previewer = element.children(); - scope.showNotePreviewer = false; - - marked.setOptions({ - gfm: true, - tables: true, - breaks: true, - pedantic: false, - sanitize: true, - smartLists: true, - smartypants: false - }); - - - var previewTimer; - minder.on('shownoterequest', function(e) { - - previewTimer = setTimeout(function() { - preview(e.node, e.keyword); - }, 300); - }); - minder.on('hidenoterequest', function() { - clearTimeout(previewTimer); - - scope.showNotePreviewer = false; - //scope.$apply(); - }); - - var previewLive = false; - $(document).on('mousedown mousewheel DOMMouseScroll', function() { - if (!previewLive) return; - scope.showNotePreviewer = false; - scope.$apply(); - }); - - element.on('mousedown mousewheel DOMMouseScroll', function(e) { - e.stopPropagation(); - }); - - function preview(node, keyword) { - var icon = node.getRenderer('NoteIconRenderer').getRenderShape(); - var b = icon.getRenderBox('screen'); - var note = node.getData('note'); - - $previewer[0].scrollTop = 0; - - var html = marked(note); - if (keyword) { - html = html.replace(new RegExp('(' + keyword + ')', 'ig'), '$1'); - } - scope.noteContent = $sce.trustAsHtml(html); - scope.$apply(); // 让浏览器重新渲染以获取 previewer 提示框的尺寸 - - var cw = $($container[0]).width(); - var ch = $($container[0]).height(); - var pw = $($previewer).outerWidth(); - var ph = $($previewer).outerHeight(); - - var x = b.cx - pw / 2 - $container[0].offsetLeft; - var y = b.bottom + 10 - $container[0].offsetTop; - - if (x < 0) x = 10; - if (x + pw > cw) x = b.left - pw - 10 - $container[0].offsetLeft; - if (y + ph > ch) y = b.top - ph - 10 - $container[0].offsetTop; - - - scope.previewerStyle = { - 'left': Math.round(x) + 'px', - 'top': Math.round(y) + 'px' - }; - - scope.showNotePreviewer = true; - - var view = $previewer[0].querySelector('.highlight'); - if (view) { - view.scrollIntoView(); - } - previewLive = true; - - scope.$apply(); - } - } - } -}]); -angular.module('kityminderEditor') - .directive('operation', function() { - return { - restrict: 'E', - templateUrl: 'ui/directive/operation/operation.html', - scope: { - minder: '=' - }, - replace: true, - link: function($scope) { - $scope.editNode = function() { - - var receiverElement = editor.receiver.element; - var fsm = editor.fsm; - var receiver = editor.receiver; - - receiverElement.innerText = minder.queryCommandValue('text'); - fsm.jump('input', 'input-request'); - receiver.selectAll(); - - } - - } - } - }); -angular.module('kityminderEditor') - - .directive('priorityEditor', ['commandBinder', function(commandBinder) { - return { - restrict: 'E', - templateUrl: 'ui/directive/priorityEditor/priorityEditor.html', - scope: { - minder: '=' - }, - replace: true, - link: function($scope) { - var minder = $scope.minder; - var priorities = []; - - for (var i = 0; i < 10; i++) { - priorities.push(i); - } - - commandBinder.bind(minder, 'priority', $scope); - - $scope.priorities = priorities; - - $scope.getPriorityTitle = function(p) { - switch(p) { - case 0: return '移除优先级'; - default: return '优先级' + p; - } - } - } - - } - }]); -angular.module('kityminderEditor') - .directive('progressEditor', ['commandBinder', function(commandBinder) { - return { - restrict: 'E', - templateUrl: 'ui/directive/progressEditor/progressEditor.html', - scope: { - minder: '=' - }, - replace: true, - link: function($scope) { - var minder = $scope.minder; - var progresses = []; - - for (var i = 0; i < 10; i++) { - progresses.push(i); - } - - commandBinder.bind(minder, 'progress', $scope); - - $scope.progresses = progresses; - - $scope.getProgressTitle = function(p) { - switch(p) { - case 0: return '移除进度'; - case 1: return '未开始'; - case 9: return '全部完成'; - default: return '完成' + (p - 1) + '/8'; - - } - } - } - } - }]) -angular.module('kityminderEditor') - .directive('resourceEditor', function () { - return { - restrict: 'E', - templateUrl: 'ui/directive/resourceEditor/resourceEditor.html', - scope: { - minder: '=' - }, - replace: true, - controller: ["$scope", function ($scope) { - var minder = $scope.minder; - - var isInteracting = false; - - minder.on('interactchange', function () { - var enabled = $scope.enabled = minder.queryCommandState('resource') != -1; - var selected = enabled ? minder.queryCommandValue('resource') : []; - var used = minder.getUsedResource().map(function (resourceName) { - return { - name: resourceName, - selected: selected.indexOf(resourceName) > -1 - } - }); - $scope.used = used; - - isInteracting = true; - $scope.$apply(); - isInteracting = false; - }); - - $scope.$watch('used', function (used) { - if (minder.queryCommandState('resource') != -1 && used) { - var resource = used.filter(function (resource) { - return resource.selected; - }).map(function (resource) { - return resource.name; - }); - - // 由于 interactchange 带来的改变则不用执行 resource 命令 - if (isInteracting) { - return; - } - minder.execCommand('resource', resource); - } - }, true); - - $scope.resourceColor = function (resource) { - return minder.getResourceColor(resource).toHEX(); - }; - - $scope.addResource = function (resourceName) { - var origin = minder.queryCommandValue('resource'); - if (!resourceName || !/\S/.test(resourceName)) return; - - if (origin.indexOf(resourceName) == -1) { - $scope.used.push({ - name: resourceName, - selected: true - }); - } - - $scope.newResourceName = null; - }; - - }] - }; - }) - - .directive('clickAnywhereButHere', ['$document', function ($document) { - return { - link: function(scope, element, attrs) { - var onClick = function (event) { - var isChild = $('#resource-dropdown').has(event.target).length > 0; - var isSelf = $('#resource-dropdown') == event.target; - var isInside = isChild || isSelf; - if (!isInside) { - scope.$apply(attrs.clickAnywhereButHere) - } - }; - - scope.$watch(attrs.isActive, function(newValue, oldValue) { - if (newValue !== oldValue && newValue == true) { - $document.bind('click', onClick); - } - else if (newValue !== oldValue && newValue == false) { - $document.unbind('click', onClick); - } - }); - } - }; - }]); -angular.module('kityminderEditor') - .directive('searchBox', function() { - return { - restrict: 'A', - templateUrl: 'ui/directive/searchBox/searchBox.html', - scope: { - minder: '=' - }, - replace: true, - controller: ["$scope", function ($scope) { - var minder = $scope.minder; - var editor = window.editor; - $scope.handleKeyDown = handleKeyDown; - $scope.doSearch = doSearch; - $scope.exitSearch = exitSearch; - $scope.showTip = false; - $scope.showSearch = false; - - // 处理输入框按键事件 - function handleKeyDown(e) { - if (e.keyCode == 13) { - var direction = e.shiftKey ? 'prev' : 'next'; - doSearch($scope.keyword, direction); - } - if (e.keyCode == 27) { - exitSearch(); - } - } - - function exitSearch() { - $('#search-input').blur(); - $scope.showSearch = false; - minder.fire('hidenoterequest'); - editor.receiver.selectAll(); - } - - function enterSearch() { - $scope.showSearch = true; - setTimeout(function() { - $('#search-input').focus(); - }, 10); - - if ($scope.keyword) { - $('#search-input')[0].setSelectionRange(0, $scope.keyword.length); - } - } - - $('body').on('keydown', function(e) { - if (e.keyCode == 70 && (e.ctrlKey || e.metaKey) && !e.shiftKey) { - enterSearch(); - - $scope.$apply(); - e.preventDefault(); - } - }); - - minder.on('searchNode', function() { - enterSearch(); - }); - - - var nodeSequence = []; - var searchSequence = []; - - - minder.on('contentchange', makeNodeSequence); - - makeNodeSequence(); - - - function makeNodeSequence() { - nodeSequence = []; - minder.getRoot().traverse(function(node) { - nodeSequence.push(node); - }); - } - - function makeSearchSequence(keyword) { - searchSequence = []; - - for (var i = 0; i < nodeSequence.length; i++) { - var node = nodeSequence[i]; - var text = node.getText().toLowerCase(); - if (text.indexOf(keyword) != -1) { - searchSequence.push({node:node}); - } - var note = node.getData('note'); - if (note && note.toLowerCase().indexOf(keyword) != -1) { - searchSequence.push({node: node, keyword: keyword}); - } - } - } - - - function doSearch(keyword, direction) { - $scope.showTip = false; - minder.fire('hidenoterequest'); - - if (!keyword || !/\S/.exec(keyword)) { - $('#search-input').focus(); - return; - } - - // 当搜索不到节点时候默认的选项 - $scope.showTip = true; - $scope.curIndex = 0; - $scope.resultNum = 0; - - - keyword = keyword.toLowerCase(); - var newSearch = doSearch.lastKeyword != keyword; - - doSearch.lastKeyword = keyword; - - if (newSearch) { - makeSearchSequence(keyword); - } - - $scope.resultNum = searchSequence.length; - - if (searchSequence.length) { - var curIndex = newSearch ? 0 : (direction === 'next' ? doSearch.lastIndex + 1 : doSearch.lastIndex - 1) || 0; - curIndex = (searchSequence.length + curIndex) % searchSequence.length; - - setSearchResult(searchSequence[curIndex].node, searchSequence[curIndex].keyword); - - doSearch.lastIndex = curIndex; - - $scope.curIndex = curIndex + 1; - - function setSearchResult(node, previewKeyword) { - minder.execCommand('camera', node, 50); - setTimeout(function () { - minder.select(node, true); - if (!node.isExpanded()) minder.execCommand('expand', true); - if (previewKeyword) { - minder.fire('shownoterequest', {node: node, keyword: previewKeyword}); - } - }, 60); - } - } - } - - - }] - } - }); -angular.module('kityminderEditor') - .directive('searchBtn', function() { - return { - restrict: 'E', - templateUrl: 'ui/directive/searchBtn/searchBtn.html', - scope: { - minder: '=' - }, - replace: true, - link: function (scope) { - scope.enterSearch = enterSearch; - - function enterSearch() { - minder.fire('searchNode'); - } - } - } - }); -angular.module('kityminderEditor') - .directive('helpBtn', ['$modal', function($modal) { - return { - restrict: 'E', - templateUrl: 'ui/directive/helpBtn/helpBtn.html', - scope: { - minder: '=' - }, - replace: true, - link: function ($scope) { - - $scope.enterHelp = function() { - var hyperlinkModal = $modal.open({ - animation: true, - templateUrl: 'dist/helpDlg.tpl.html', - size: 'md' - }); - } - } - } - }]); -angular.module('kityminderEditor') - .directive('selectAll', function() { - return { - restrict: 'E', - templateUrl: 'ui/directive/selectAll/selectAll.html', - scope: { - minder: '=' - }, - replace: true, - link: function($scope) { - var minder = $scope.minder; - - $scope.items = ['revert', 'siblings', 'level', 'path', 'tree']; - - $scope.select = { - all: function() { - var selection = []; - minder.getRoot().traverse(function(node) { - selection.push(node); - }); - minder.select(selection, true); - minder.fire('receiverfocus'); - }, - revert: function() { - var selected = minder.getSelectedNodes(); - var selection = []; - minder.getRoot().traverse(function(node) { - if (selected.indexOf(node) == -1) { - selection.push(node); - } - }); - minder.select(selection, true); - minder.fire('receiverfocus'); - }, - siblings: function() { - var selected = minder.getSelectedNodes(); - var selection = []; - selected.forEach(function(node) { - if (!node.parent) return; - node.parent.children.forEach(function(sibling) { - if (selection.indexOf(sibling) == -1) selection.push(sibling); - }); - }); - minder.select(selection, true); - minder.fire('receiverfocus'); - }, - level: function() { - var selectedLevel = minder.getSelectedNodes().map(function(node) { - return node.getLevel(); - }); - var selection = []; - minder.getRoot().traverse(function(node) { - if (selectedLevel.indexOf(node.getLevel()) != -1) { - selection.push(node); - } - }); - minder.select(selection, true); - minder.fire('receiverfocus'); - }, - path: function() { - var selected = minder.getSelectedNodes(); - var selection = []; - selected.forEach(function(node) { - while(node && selection.indexOf(node) == -1) { - selection.push(node); - node = node.parent; - } - }); - minder.select(selection, true); - minder.fire('receiverfocus'); - }, - tree: function() { - var selected = minder.getSelectedNodes(); - var selection = []; - selected.forEach(function(parent) { - parent.traverse(function(node) { - if (selection.indexOf(node) == -1) selection.push(node); - }); - }); - minder.select(selection, true); - minder.fire('receiverfocus'); - } - }; - } - } - }); -angular.module('kityminderEditor') - .directive('styleOperator', function() { - return { - restrict: 'E', - templateUrl: 'ui/directive/styleOperator/styleOperator.html', - scope: { - minder: '=' - }, - replace: true - } - }); -angular.module('kityminderEditor') - .directive('templateList', function() { - return { - restrict: 'E', - templateUrl: 'ui/directive/templateList/templateList.html', - scope: { - minder: '=' - }, - replace: true, - link: function($scope) { - $scope.templateList = kityminder.Minder.getTemplateList(); - - } - } - }); -angular.module('kityminderEditor') - .directive('themeList', function() { - return { - restrict: 'E', - templateUrl: 'ui/directive/themeList/themeList.html', - replace: true, - link: function($scope) { - var themeList = kityminder.Minder.getThemeList(); - - //$scope.themeList = themeList; - - $scope.getThemeThumbStyle = function (theme) { - var themeObj = themeList[theme]; - if (!themeObj) { - return; - } - var style = { - 'color': themeObj['root-color'], - 'border-radius': themeObj['root-radius'] / 2 - }; - - if (themeObj['root-background']) { - style['background'] = themeObj['root-background'].toString(); - } - - return style; - }; - - // 维护 theme key 列表以保证列表美观(不按字母顺序排序) - $scope.themeKeyList = [ - 'classic', - 'classic-compact', - 'fresh-blue', - 'fresh-blue-compat', - 'fresh-green', - 'fresh-green-compat', - 'fresh-pink', - 'fresh-pink-compat', - 'fresh-purple', - 'fresh-purple-compat', - 'fresh-red', - 'fresh-red-compat', - 'fresh-soil', - 'fresh-soil-compat', - 'snow', - 'snow-compact', - 'tianpan', - 'tianpan-compact', - 'fish', - 'wire' - ]; - } - } - }); -angular.module('kityminderEditor') - .directive('topTab', function() { - return { - restrict: 'A', - templateUrl: 'ui/directive/topTab/topTab.html', - scope: { - minder: '=topTab', - editor: '=' - }, - link: function(scope) { - - /* - * - * 用户选择一个新的选项卡会执行 setCurTab 和 foldTopTab 两个函数 - * 用户点击原来的选项卡会执行 foldTopTop 一个函数 - * - * 也就是每次选择新的选项卡都会执行 setCurTab,初始化的时候也会执行 setCurTab 函数 - * 因此用 executedCurTab 记录是否已经执行了 setCurTab 函数 - * 用 isInit 记录是否是初始化的状态,在任意一个函数时候 isInit 设置为 false - * 用 isOpen 记录是否打开了 topTab - * - * 因此用到了三个 mutex - * */ - var executedCurTab = false; - var isInit = true; - var isOpen = true; - - scope.setCurTab = function(tabName) { - setTimeout(function() { - //console.log('set cur tab to : ' + tabName); - executedCurTab = true; - //isOpen = false; - if (tabName != 'idea') { - isInit = false; - } - }); - }; - - scope.toggleTopTab = function() { - setTimeout(function() { - if(!executedCurTab || isInit) { - isInit = false; - - isOpen ? closeTopTab(): openTopTab(); - isOpen = !isOpen; - } - - executedCurTab = false; - }); - }; - - function closeTopTab() { - var $tabContent = $('.tab-content'); - var $minderEditor = $('.minder-editor'); - - $tabContent.animate({ - height: 0, - display: 'none' - }); - - $minderEditor.animate({ - top: '32px' - }); - } - - function openTopTab() { - var $tabContent = $('.tab-content'); - var $minderEditor = $('.minder-editor'); - - $tabContent.animate({ - height: '60px', - display: 'block' - }); - - $minderEditor.animate({ - top: '92px' - }); - } - } - } - }); -angular.module('kityminderEditor') - .directive('undoRedo', function() { - return { - restrict: 'E', - templateUrl: 'ui/directive/undoRedo/undoRedo.html', - scope: { - editor: '=' - }, - replace: true, - link: function($scope) { - - } - } - }); -use('expose-editor'); -})(); \ No newline at end of file diff --git a/dzz/system/ueditor/dialogs/kityminder/kityMinderDialog.html b/dzz/system/ueditor/dialogs/kityminder/kityMinderDialog.html deleted file mode 100644 index 911eef7..0000000 --- a/dzz/system/ueditor/dialogs/kityminder/kityMinderDialog.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - KityMinder - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dzz/system/ueditor/index.html b/dzz/system/ueditor/index.html deleted file mode 100644 index a416418..0000000 --- a/dzz/system/ueditor/index.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - 完整demo - - - - - - - - - - -
    -

    完整demo

    - -
    -
    -
    - - - - - - - - - - - -
    -
    - - - - - - - -
    - -
    - - -
    - -
    -
    - - -
    - - - - \ No newline at end of file diff --git a/dzz/system/ueditor/kityformula-plugin/addKityFormulaDialog.js b/dzz/system/ueditor/kityformula-plugin/addKityFormulaDialog.js deleted file mode 100644 index c9b7e55..0000000 --- a/dzz/system/ueditor/kityformula-plugin/addKityFormulaDialog.js +++ /dev/null @@ -1,74 +0,0 @@ -UE.registerUI('kityformula', function(editor, uiname){ - - // 创建dialog - var kfDialog = new UE.ui.Dialog({ - - // 指定弹出层路径 - iframeUrl: editor.options.UEDITOR_HOME_URL + 'kityformula-plugin/kityFormulaDialog.html', - // 编辑器实例 - editor: editor, - // dialog 名称 - name: uiname, - // dialog 标题 - title: '插入公式 - KityFormula', - - // dialog 外围 css - cssRules: 'width:783px; height: 386px;', - - //如果给出了buttons就代表dialog有确定和取消 - buttons:[ - { - className:'edui-okbutton', - label:'确定', - onclick:function () { - kfDialog.close(true); - } - }, - { - className:'edui-cancelbutton', - label:'取消', - onclick:function () { - kfDialog.close(false); - } - } - ]}); - - editor.ready(function(){ - UE.utils.cssRule('kfformula', 'img.kfformula{vertical-align: middle;}', editor.document); - }); - - var iconUrl = editor.options.UEDITOR_HOME_URL + 'kityformula-plugin/kf-icon.png'; - var tmpLink = document.createElement('a'); - tmpLink.href = iconUrl; - tmpLink.href = tmpLink.href; - iconUrl = tmpLink.href; - - var kfBtn = new UE.ui.Button({ - name:'插入' + uiname, - title:'插入公式-' + uiname, - //需要添加的额外样式,指定icon图标 - cssRules :'background: url("' + iconUrl + '") !important', - onclick:function () { - //渲染dialog - kfDialog.render(); - kfDialog.open(); - } - }); - - //当点到编辑内容上时,按钮要做的状态反射 - editor.addListener('selectionchange', function () { - var state = editor.queryCommandState(uiname); - if (state == -1) { - kfBtn.setDisabled(true); - kfBtn.setChecked(false); - } else { - kfBtn.setDisabled(false); - kfBtn.setChecked(state); - } - }); - - return kfBtn; - - -}); - diff --git a/dzz/system/ueditor/kityformula-plugin/defaultFilterFix.js b/dzz/system/ueditor/kityformula-plugin/defaultFilterFix.js deleted file mode 100644 index cf8d9bb..0000000 --- a/dzz/system/ueditor/kityformula-plugin/defaultFilterFix.js +++ /dev/null @@ -1,247 +0,0 @@ -///import core -///plugin 编辑器默认的过滤转换机制 - -UE.plugins['defaultfilter'] = function () { - var me = this; - me.setOpt({ - 'allowDivTransToP':true, - 'disabledTableInTable':true, - 'rgb2Hex':true - }); - //默认的过滤处理 - //进入编辑器的内容处理 - me.addInputRule(function (root) { - var allowDivTransToP = this.options.allowDivTransToP; - var val; - function tdParent(node){ - while(node && node.type == 'element'){ - if(node.tagName == 'td'){ - return true; - } - node = node.parentNode; - } - return false; - } - //进行默认的处理 - root.traversal(function (node) { - if (node.type == 'element') { - if (!UE.dom.dtd.$cdata[node.tagName] && me.options.autoClearEmptyNode && UE.dom.dtd.$inline[node.tagName] && !UE.dom.dtd.$empty[node.tagName] && (!node.attrs || UE.utils.isEmptyObject(node.attrs))) { - if (!node.firstChild()) node.parentNode.removeChild(node); - else if (node.tagName == 'span' && (!node.attrs || UE.utils.isEmptyObject(node.attrs))) { - node.parentNode.removeChild(node, true) - } - return; - } - switch (node.tagName) { - case 'style': - case 'script': - node.setAttr({ - cdata_tag: node.tagName, - cdata_data: (node.innerHTML() || ''), - '_ue_custom_node_':'true' - }); - node.tagName = 'div'; - node.innerHTML(''); - break; - case 'a': - if (val = node.getAttr('href')) { - node.setAttr('_href', val) - } - break; - case 'img': - //todo base64暂时去掉,后边做远程图片上传后,干掉这个 -// if (val = node.getAttr('src')) { -// if (/^data:/.test(val)) { -// node.parentNode.removeChild(node); -// break; -// } -// } - node.setAttr('_src', node.getAttr('src')); - break; - case 'span': - if (UE.browser.webkit && (val = node.getStyle('white-space'))) { - if (/nowrap|normal/.test(val)) { - node.setStyle('white-space', ''); - if (me.options.autoClearEmptyNode && UE.utils.isEmptyObject(node.attrs)) { - node.parentNode.removeChild(node, true) - } - } - } - val = node.getAttr('id'); - if(val && /^_baidu_bookmark_/i.test(val)){ - node.parentNode.removeChild(node) - } - break; - case 'p': - if (val = node.getAttr('align')) { - node.setAttr('align'); - node.setStyle('text-align', val) - } - //trace:3431 -// var cssStyle = node.getAttr('style'); -// if (cssStyle) { -// cssStyle = cssStyle.replace(/(margin|padding)[^;]+/g, ''); -// node.setAttr('style', cssStyle) -// -// } - //p标签不允许嵌套 - UE.utils.each(node.children,function(n){ - if(n.type == 'element' && n.tagName == 'p'){ - var next = n.nextSibling(); - node.parentNode.insertAfter(n,node); - var last = n; - while(next){ - var tmp = next.nextSibling(); - node.parentNode.insertAfter(next,last); - last = next; - next = tmp; - } - return false; - } - }); - if (!node.firstChild()) { - node.innerHTML(UE.browser.ie ? ' ' : '
    ') - } - break; - case 'div': - if(node.getAttr('cdata_tag')){ - break; - } - //针对代码这里不处理插入代码的div - val = node.getAttr('class'); - if(val && /^line number\d+/.test(val)){ - break; - } - if(!allowDivTransToP){ - break; - } - var tmpNode, p = UE.uNode.createElement('p'); - while (tmpNode = node.firstChild()) { - if (tmpNode.type == 'text' || !UE.dom.UE.dom.dtd.$block[tmpNode.tagName]) { - p.appendChild(tmpNode); - } else { - if (p.firstChild()) { - node.parentNode.insertBefore(p, node); - p = UE.uNode.createElement('p'); - } else { - node.parentNode.insertBefore(tmpNode, node); - } - } - } - if (p.firstChild()) { - node.parentNode.insertBefore(p, node); - } - node.parentNode.removeChild(node); - break; - case 'dl': - node.tagName = 'ul'; - break; - case 'dt': - case 'dd': - node.tagName = 'li'; - break; - case 'li': - var className = node.getAttr('class'); - if (!className || !/list\-/.test(className)) { - node.setAttr() - } - var tmpNodes = node.getNodesByTagName('ol ul'); - UE.utils.each(tmpNodes, function (n) { - node.parentNode.insertAfter(n, node); - }); - break; - case 'td': - case 'th': - case 'caption': - if(!node.children || !node.children.length){ - node.appendChild(UE.browser.ie11below ? UE.uNode.createText(' ') : UE.uNode.createElement('br')) - } - break; - case 'table': - if(me.options.disabledTableInTable && tdParent(node)){ - node.parentNode.insertBefore(UE.uNode.createText(node.innerText()),node); - node.parentNode.removeChild(node) - } - } - - } -// if(node.type == 'comment'){ -// node.parentNode.removeChild(node); -// } - }) - - }); - - //从编辑器出去的内容处理 - me.addOutputRule(function (root) { - - var val; - root.traversal(function (node) { - if (node.type == 'element') { - - if (me.options.autoClearEmptyNode && UE.dom.dtd.$inline[node.tagName] && !UE.dom.dtd.$empty[node.tagName] && (!node.attrs || UE.utils.isEmptyObject(node.attrs))) { - - if (!node.firstChild()) node.parentNode.removeChild(node); - else if (node.tagName == 'span' && (!node.attrs || UE.utils.isEmptyObject(node.attrs))) { - node.parentNode.removeChild(node, true) - } - return; - } - switch (node.tagName) { - case 'div': - if (val = node.getAttr('cdata_tag')) { - node.tagName = val; - node.appendChild(UE.uNode.createText(node.getAttr('cdata_data'))); - node.setAttr({cdata_tag: '', cdata_data: '','_ue_custom_node_':''}); - } - break; - case 'a': - if (val = node.getAttr('_href')) { - node.setAttr({ - 'href': UE.utils.html(val), - '_href': '' - }) - } - break; - break; - case 'span': - val = node.getAttr('id'); - if(val && /^_baidu_bookmark_/i.test(val)){ - node.parentNode.removeChild(node) - } - //将color的rgb格式转换为#16进制格式 - if(me.getOpt('rgb2Hex')){ - var cssStyle = node.getAttr('style'); - if(cssStyle){ - node.setAttr('style',cssStyle.replace(/rgba?\(([\d,\s]+)\)/g,function(a,value){ - var array = value.split(","); - if (array.length > 3) - return ""; - value = "#"; - for (var i = 0, color; color = array[i++];) { - color = parseInt(color.replace(/[^\d]/gi, ''), 10).toString(16); - value += color.length == 1 ? "0" + color : color; - } - return value.toUpperCase(); - - })) - } - } - break; - case 'img': - if (val = node.getAttr('_src')) { - node.setAttr({ - 'src': node.getAttr('_src'), - '_src': '' - }) - } - - - } - } - - }) - - - }); -}; diff --git a/dzz/system/ueditor/kityformula-plugin/getKfContent.js b/dzz/system/ueditor/kityformula-plugin/getKfContent.js deleted file mode 100644 index dcfed46..0000000 --- a/dzz/system/ueditor/kityformula-plugin/getKfContent.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Created by zhangbo21 on 14-9-2. - */ -/* - * getKfContent : 将image的src从base64替换为文件名 - * param : callback -- 回调函数 其参数为替换之后的内容 - * return : void - * */ - -UE.Editor.prototype.getKfContent = function(callback){ - - var me = this; - var actionUrl = me.getActionUrl(me.getOpt('scrawlActionName')), - params = UE.utils.serializeParam(me.queryCommandValue('serverparam')) || '', - url = UE.utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + params); - - // 找到所有的base64 - var count = 0; - var imgs =me.body.getElementsByTagName('img'); - var base64Imgs = []; - UE.utils.each(imgs, function(item){ - var imgType = item.getAttribute('src').match(/^[^;]+/)[0]; - if ( imgType === 'data:image/png') { - base64Imgs.push(item); - } - }); - - if (base64Imgs.length == 0){ - execCallback(); - } else { - UE.utils.each(base64Imgs, function(item){ - - var opt ={}; - opt[me.getOpt('scrawlFieldName')]= item.getAttribute('src').replace(/^[^,]+,/, ''); - opt.onsuccess = function(xhr){ - var json = UE.utils.str2json(xhr.responseText), - url = me.options.scrawlUrlPrefix + json.url; - - item.setAttribute('src', url); - item.setAttribute('_src', url); - - count++; - - execCallback(); - } - opt.onerror = function(err){ - console.error(err); - count++; - - execCallback(); - } - - - UE.ajax.request(url, opt); - - }); - } - - function execCallback(){ - if (count >= base64Imgs.length) { - ue.sync(); - callback(me.getContent()); - } - } - -}; \ No newline at end of file diff --git a/dzz/system/ueditor/kityformula-plugin/kf-icon.png b/dzz/system/ueditor/kityformula-plugin/kf-icon.png deleted file mode 100644 index e9977cb..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kf-icon.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityFormulaDialog.html b/dzz/system/ueditor/kityformula-plugin/kityFormulaDialog.html deleted file mode 100644 index ca948a0..0000000 --- a/dzz/system/ueditor/kityformula-plugin/kityFormulaDialog.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - -
    -
    - sorry! Beta版本仅支持IE9及以上版本的浏览器,正式版本将会支持低版本浏览器,谢谢您的关注! -
    -
    - - - - - - - - - - - - \ No newline at end of file diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/bar-bg.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/bar-bg.png deleted file mode 100644 index 9dedcc6..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/bar-bg.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/bar.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/bar.png deleted file mode 100644 index f98ded7..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/bar.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/bg.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/bg.png deleted file mode 100644 index 2147441..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/bg.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/bottom.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/bottom.png deleted file mode 100644 index e3df3d1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/bottom.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/btn.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/btn.png deleted file mode 100644 index 31c0b52..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/btn.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/down.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/down.png deleted file mode 100644 index 31c0b52..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/down.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/top.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/top.png deleted file mode 100644 index ecda070..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/top.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/up.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/up.png deleted file mode 100644 index 31c0b52..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/custom/up.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/bar-bg.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/bar-bg.png deleted file mode 100644 index 4f9db6b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/bar-bg.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/bar-left.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/bar-left.png deleted file mode 100644 index 2f8c46e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/bar-left.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/bar-right.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/bar-right.png deleted file mode 100644 index 9772c54..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/bar-right.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/thumb-bg.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/thumb-bg.png deleted file mode 100644 index 450faa2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/thumb-bg.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/thumb-left.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/thumb-left.png deleted file mode 100644 index 01b9255..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/thumb-left.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/thumb-right.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/thumb-right.png deleted file mode 100644 index f74673a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/scrollbar/edit/thumb-right.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/aleph.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/aleph.png deleted file mode 100644 index fa895d8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/aleph.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/bbbk.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/bbbk.png deleted file mode 100644 index a793366..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/bbbk.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/beth.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/beth.png deleted file mode 100644 index c8cb723..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/beth.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/circleds.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/circleds.png deleted file mode 100644 index 7f455e8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/circleds.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/complement.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/complement.png deleted file mode 100644 index f128598..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/complement.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/daleth.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/daleth.png deleted file mode 100644 index ac705c3..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/daleth.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/ell.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/ell.png deleted file mode 100644 index ccc6ee3..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/ell.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/eth.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/eth.png deleted file mode 100644 index 501dbb1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/eth.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/finv.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/finv.png deleted file mode 100644 index a838bc0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/finv.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/game.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/game.png deleted file mode 100644 index c0a5edc..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/game.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/gimel.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/gimel.png deleted file mode 100644 index e4fd840..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/gimel.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/hbar.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/hbar.png deleted file mode 100644 index 8809ef3..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/hbar.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/hslash.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/hslash.png deleted file mode 100644 index a1e4e68..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/hslash.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/im.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/im.png deleted file mode 100644 index 201ec05..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/im.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/mho.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/mho.png deleted file mode 100644 index 291f750..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/mho.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/partial.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/partial.png deleted file mode 100644 index f3b46a0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/partial.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/re.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/re.png deleted file mode 100644 index 9c96096..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/re.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/wp.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/wp.png deleted file mode 100644 index 23f6541..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/alphabetic/wp.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/circlearrowleft.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/circlearrowleft.png deleted file mode 100644 index 26a9213..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/circlearrowleft.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/circlearrowright.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/circlearrowright.png deleted file mode 100644 index d291162..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/circlearrowright.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/curvearrowleft.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/curvearrowleft.png deleted file mode 100644 index 3cc06b9..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/curvearrowleft.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/curvearrowright.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/curvearrowright.png deleted file mode 100644 index 265e1e0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/curvearrowright.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/downarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/downarrow.png deleted file mode 100644 index 1b5c375..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/downarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/downdownarrows.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/downdownarrows.png deleted file mode 100644 index 457598c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/downdownarrows.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/downharpoonleft.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/downharpoonleft.png deleted file mode 100644 index f1de8a2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/downharpoonleft.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/downharpoonright.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/downharpoonright.png deleted file mode 100644 index b94a0b8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/downharpoonright.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/gets.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/gets.png deleted file mode 100644 index 8d659f0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/gets.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftarrowtail.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftarrowtail.png deleted file mode 100644 index d36a75a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftarrowtail.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftharpoondown.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftharpoondown.png deleted file mode 100644 index 882f6e0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftharpoondown.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftharpoonup.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftharpoonup.png deleted file mode 100644 index d9fd9f2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftharpoonup.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftleftarrows.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftleftarrows.png deleted file mode 100644 index f4cd7c0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftleftarrows.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftrightarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftrightarrow.png deleted file mode 100644 index 4d8d86b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftrightarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftrightarrows.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftrightarrows.png deleted file mode 100644 index 6f0717c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftrightarrows.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftrightharpoons.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftrightharpoons.png deleted file mode 100644 index 10a057f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftrightharpoons.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftrightsquigarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftrightsquigarrow.png deleted file mode 100644 index d515001..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/leftrightsquigarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/longleftarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/longleftarrow.png deleted file mode 100644 index ab5a64e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/longleftarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/longleftrightarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/longleftrightarrow.png deleted file mode 100644 index fe3141d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/longleftrightarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/longrightarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/longrightarrow.png deleted file mode 100644 index ec988e1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/longrightarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/looparrowleft.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/looparrowleft.png deleted file mode 100644 index a4dee7a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/looparrowleft.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/looparrowright.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/looparrowright.png deleted file mode 100644 index 67885fb..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/looparrowright.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/multimap.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/multimap.png deleted file mode 100644 index c7a0bb8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/multimap.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/nearrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/nearrow.png deleted file mode 100644 index d5891e0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/nearrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/nleftarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/nleftarrow.png deleted file mode 100644 index df714e1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/nleftarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/nrightarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/nrightarrow.png deleted file mode 100644 index b29d923..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/nrightarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/nwarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/nwarrow.png deleted file mode 100644 index bf7b7d2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/nwarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightarrowtail.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightarrowtail.png deleted file mode 100644 index 27cdc5b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightarrowtail.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightharpoondown.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightharpoondown.png deleted file mode 100644 index e384cf8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightharpoondown.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightharpoonup.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightharpoonup.png deleted file mode 100644 index 187e1eb..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightharpoonup.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightleftarrows.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightleftarrows.png deleted file mode 100644 index cdec5d9..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightleftarrows.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightleftharpoons.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightleftharpoons.png deleted file mode 100644 index 73385cb..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightleftharpoons.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightrightarrows.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightrightarrows.png deleted file mode 100644 index 52a7f0f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightrightarrows.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightsquigarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightsquigarrow.png deleted file mode 100644 index f471054..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/rightsquigarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/searrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/searrow.png deleted file mode 100644 index 7d887fb..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/searrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/swarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/swarrow.png deleted file mode 100644 index 448b686..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/swarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/to.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/to.png deleted file mode 100644 index 0053655..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/to.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/twoheadleftarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/twoheadleftarrow.png deleted file mode 100644 index 17bcb54..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/twoheadleftarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/twoheadrightarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/twoheadrightarrow.png deleted file mode 100644 index 9242bc2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/twoheadrightarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-downarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-downarrow.png deleted file mode 100644 index b2264cb..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-downarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-leftarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-leftarrow.png deleted file mode 100644 index 84bf7a5..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-leftarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-leftrightarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-leftrightarrow.png deleted file mode 100644 index 288dcc1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-leftrightarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-lftarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-lftarrow.png deleted file mode 100644 index 8ecff74..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-lftarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-lleftarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-lleftarrow.png deleted file mode 100644 index 6bed121..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-lleftarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-longleftarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-longleftarrow.png deleted file mode 100644 index 1cdf790..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-longleftarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-longleftrightarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-longleftrightarrow.png deleted file mode 100644 index def0c9e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-longleftrightarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-longrightarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-longrightarrow.png deleted file mode 100644 index c21e68c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-longrightarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-lsh.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-lsh.png deleted file mode 100644 index 1f61789..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-lsh.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-nleftarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-nleftarrow.png deleted file mode 100644 index 07657c0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-nleftarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-nleftrightarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-nleftrightarrow.png deleted file mode 100644 index daf4e65..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-nleftrightarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-nrightarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-nrightarrow.png deleted file mode 100644 index 902826c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-nrightarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-rightarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-rightarrow.png deleted file mode 100644 index 39bc777..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-rightarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-rrightarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-rrightarrow.png deleted file mode 100644 index 7aed67d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-rrightarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-rsh.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-rsh.png deleted file mode 100644 index 05e8974..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-rsh.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-uparrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-uparrow.png deleted file mode 100644 index e539f65..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-uparrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-updownarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-updownarrow.png deleted file mode 100644 index 4aa9faa..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/u-updownarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/uparrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/uparrow.png deleted file mode 100644 index aa8f571..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/uparrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/updownarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/updownarrow.png deleted file mode 100644 index 2235860..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/updownarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/upharpoonleft.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/upharpoonleft.png deleted file mode 100644 index 72d093d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/upharpoonleft.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/upharpoonright.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/upharpoonright.png deleted file mode 100644 index 76c7335..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/upharpoonright.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/upuparrows.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/upuparrows.png deleted file mode 100644 index 129a338..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/arrow/upuparrows.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/brackets/1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/brackets/1.png deleted file mode 100644 index 3b1ed26..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/brackets/1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/brackets/2.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/brackets/2.png deleted file mode 100644 index 07cf41b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/brackets/2.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/brackets/3.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/brackets/3.png deleted file mode 100644 index 8abe196..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/brackets/3.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/brackets/4.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/brackets/4.png deleted file mode 100644 index 31ad7f7..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/brackets/4.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/btn.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/btn.png deleted file mode 100644 index 77d7c10..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/btn.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/brackets.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/brackets.png deleted file mode 100644 index b05c1ca..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/brackets.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/down.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/down.png deleted file mode 100644 index 00a8a3a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/down.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/frac.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/frac.png deleted file mode 100644 index 1048182..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/frac.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/fx.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/fx.png deleted file mode 100644 index 2482b86..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/fx.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/int.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/int.png deleted file mode 100644 index baafcaa..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/int.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/lim.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/lim.png deleted file mode 100644 index 4547302..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/lim.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/open.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/open.png deleted file mode 100644 index 24026c9..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/open.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/script.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/script.png deleted file mode 100644 index e29e594..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/script.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/sin.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/sin.png deleted file mode 100644 index e5b8295..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/sin.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/sqrt.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/sqrt.png deleted file mode 100644 index 782a0da..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/sqrt.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/sum.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/sum.png deleted file mode 100644 index 8c663e2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/sum.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/tick.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/tick.png deleted file mode 100644 index 6e874f4..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/tick.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/up.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/up.png deleted file mode 100644 index 6eabcad..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/button/up.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char.png deleted file mode 100644 index 4eef3c3..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/a.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/a.png deleted file mode 100644 index 1fc074e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/a.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/b.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/b.png deleted file mode 100644 index cc75c7d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/b.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/c.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/c.png deleted file mode 100644 index b407a1b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/c.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/d.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/d.png deleted file mode 100644 index 66e23a8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/d.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/e.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/e.png deleted file mode 100644 index 0ef98d1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/e.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/f.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/f.png deleted file mode 100644 index e0f76fc..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/f.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/g.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/g.png deleted file mode 100644 index bbf855f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/g.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/h.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/h.png deleted file mode 100644 index 0347c93..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/h.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/i.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/i.png deleted file mode 100644 index cfb5814..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/i.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/j.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/j.png deleted file mode 100644 index c9ad651..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/j.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/k.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/k.png deleted file mode 100644 index 032f29d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/k.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/l.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/l.png deleted file mode 100644 index 72015ab..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/l.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/m.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/m.png deleted file mode 100644 index d9c072c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/m.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/n.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/n.png deleted file mode 100644 index a398698..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/n.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/o.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/o.png deleted file mode 100644 index 9acb05b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/o.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/p.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/p.png deleted file mode 100644 index 8c11f94..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/p.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/q.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/q.png deleted file mode 100644 index e47c32e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/q.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/r.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/r.png deleted file mode 100644 index 44ae3c0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/r.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/s.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/s.png deleted file mode 100644 index 93dd1c6..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/s.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/t.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/t.png deleted file mode 100644 index c359ccd..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/t.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/u.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/u.png deleted file mode 100644 index c5b6158..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/u.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/v.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/v.png deleted file mode 100644 index 2bba8a8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/v.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/w.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/w.png deleted file mode 100644 index 82518bb..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/w.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/x.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/x.png deleted file mode 100644 index 58bb03c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/x.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/y.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/y.png deleted file mode 100644 index 7b1ecf6..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/y.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/z.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/z.png deleted file mode 100644 index d8ad9de..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/bb/z.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/a.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/a.png deleted file mode 100644 index bbbc102..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/a.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/b.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/b.png deleted file mode 100644 index 1f2d08a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/b.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/c.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/c.png deleted file mode 100644 index 21c7817..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/c.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/d.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/d.png deleted file mode 100644 index b6cd5a3..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/d.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/e.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/e.png deleted file mode 100644 index 5b6d59d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/e.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/f.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/f.png deleted file mode 100644 index 28a6cff..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/f.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/g.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/g.png deleted file mode 100644 index a8f1999..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/g.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/h.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/h.png deleted file mode 100644 index 8592859..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/h.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/i.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/i.png deleted file mode 100644 index a149116..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/i.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/j.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/j.png deleted file mode 100644 index cf94ff2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/j.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/k.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/k.png deleted file mode 100644 index 35b3656..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/k.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/l.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/l.png deleted file mode 100644 index 058d85d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/l.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/m.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/m.png deleted file mode 100644 index 08eccac..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/m.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/n.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/n.png deleted file mode 100644 index f8c62c3..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/n.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/o.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/o.png deleted file mode 100644 index a656858..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/o.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/p.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/p.png deleted file mode 100644 index fc24a27..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/p.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/q.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/q.png deleted file mode 100644 index 44ebb8d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/q.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/r.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/r.png deleted file mode 100644 index be3017a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/r.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/s.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/s.png deleted file mode 100644 index 3942b71..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/s.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/t.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/t.png deleted file mode 100644 index 5d41fd0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/t.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/u.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/u.png deleted file mode 100644 index 8ebf443..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/u.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/v.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/v.png deleted file mode 100644 index 2c51c10..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/v.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/w.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/w.png deleted file mode 100644 index 33ef1d5..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/w.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/x.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/x.png deleted file mode 100644 index fc7dd0b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/x.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/y.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/y.png deleted file mode 100644 index 6670417..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/y.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/z.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/z.png deleted file mode 100644 index 2489eda..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/cal/z.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/a.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/a.png deleted file mode 100644 index e8a6950..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/a.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/b.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/b.png deleted file mode 100644 index 5bc50aa..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/b.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/c.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/c.png deleted file mode 100644 index e0417c5..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/c.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/d.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/d.png deleted file mode 100644 index a267b36..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/d.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/e.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/e.png deleted file mode 100644 index be71bf6..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/e.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/f.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/f.png deleted file mode 100644 index 2c17011..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/f.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/g.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/g.png deleted file mode 100644 index d05843d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/g.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/h.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/h.png deleted file mode 100644 index 41d958e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/h.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/i.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/i.png deleted file mode 100644 index 1e9bd34..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/i.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/j.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/j.png deleted file mode 100644 index fc66b89..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/j.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/k.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/k.png deleted file mode 100644 index 49dbc27..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/k.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/l.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/l.png deleted file mode 100644 index 8e23844..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/l.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/m.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/m.png deleted file mode 100644 index f5a79ce..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/m.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/n.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/n.png deleted file mode 100644 index e9b7491..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/n.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/o.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/o.png deleted file mode 100644 index f386683..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/o.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/p.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/p.png deleted file mode 100644 index 334a118..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/p.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/q.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/q.png deleted file mode 100644 index 205df6a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/q.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/r.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/r.png deleted file mode 100644 index fc8bc8b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/r.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/s.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/s.png deleted file mode 100644 index bd6c50c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/s.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/t.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/t.png deleted file mode 100644 index 76de185..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/t.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/u.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/u.png deleted file mode 100644 index 8c1dfbc..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/u.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ua.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ua.png deleted file mode 100644 index cc049ef..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ua.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ub.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ub.png deleted file mode 100644 index 841e8cc..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ub.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uc.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uc.png deleted file mode 100644 index f15063d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uc.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ud.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ud.png deleted file mode 100644 index 8671415..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ud.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ue.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ue.png deleted file mode 100644 index 69b1f08..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ue.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uf.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uf.png deleted file mode 100644 index 9fd1e6a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uf.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ug.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ug.png deleted file mode 100644 index 3fc5ede..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ug.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uh.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uh.png deleted file mode 100644 index 45e18a9..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uh.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ui.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ui.png deleted file mode 100644 index 6e9a03a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ui.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uj.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uj.png deleted file mode 100644 index 855aaa9..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uj.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uk.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uk.png deleted file mode 100644 index adb3b00..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uk.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ul.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ul.png deleted file mode 100644 index 9f138ee..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ul.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/um.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/um.png deleted file mode 100644 index 64d7bd4..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/um.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/un.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/un.png deleted file mode 100644 index 37c4bfd..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/un.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uo.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uo.png deleted file mode 100644 index 0340b6d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uo.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/up.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/up.png deleted file mode 100644 index f5a1d38..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/up.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uq.png deleted file mode 100644 index bfb7f50..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ur.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ur.png deleted file mode 100644 index 959804c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ur.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/us.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/us.png deleted file mode 100644 index 1d77b1d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/us.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ut.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ut.png deleted file mode 100644 index 5ebab86..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ut.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uu.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uu.png deleted file mode 100644 index fa9d855..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uu.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uv.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uv.png deleted file mode 100644 index 8c346f1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uv.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uw.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uw.png deleted file mode 100644 index 223543d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uw.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ux.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ux.png deleted file mode 100644 index e87b755..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/ux.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uy.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uy.png deleted file mode 100644 index b51e8ee..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uy.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uz.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uz.png deleted file mode 100644 index 58ee470..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/uz.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/v.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/v.png deleted file mode 100644 index 3aed003..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/v.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/w.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/w.png deleted file mode 100644 index 008b361..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/w.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/x.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/x.png deleted file mode 100644 index b73a3c3..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/x.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/y.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/y.png deleted file mode 100644 index 158863b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/y.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/z.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/z.png deleted file mode 100644 index d3907d2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/frak/z.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/alpha.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/alpha.png deleted file mode 100644 index 91907f2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/alpha.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/beta.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/beta.png deleted file mode 100644 index 95edb82..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/beta.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/chi.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/chi.png deleted file mode 100644 index 2c5f2f2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/chi.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/delta.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/delta.png deleted file mode 100644 index 847f5c1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/delta.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/epsilon.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/epsilon.png deleted file mode 100644 index d9fa6c2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/epsilon.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/eta.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/eta.png deleted file mode 100644 index 206d014..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/eta.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/gamma.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/gamma.png deleted file mode 100644 index 97a09a0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/gamma.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/iota.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/iota.png deleted file mode 100644 index 7eaad51..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/iota.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/kappa.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/kappa.png deleted file mode 100644 index 7a8571d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/kappa.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/lambda.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/lambda.png deleted file mode 100644 index b619ecd..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/lambda.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/mu.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/mu.png deleted file mode 100644 index 016d464..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/mu.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/nu.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/nu.png deleted file mode 100644 index 0f00fc4..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/nu.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/omega.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/omega.png deleted file mode 100644 index 3c0220f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/omega.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/omicron.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/omicron.png deleted file mode 100644 index c5511b2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/omicron.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/phi.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/phi.png deleted file mode 100644 index 5b6fc9e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/phi.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/pi.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/pi.png deleted file mode 100644 index 30bc20c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/pi.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/psi.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/psi.png deleted file mode 100644 index 92054d2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/psi.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/rho.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/rho.png deleted file mode 100644 index 48cc456..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/rho.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/sigma.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/sigma.png deleted file mode 100644 index 349fb3b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/sigma.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/tau.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/tau.png deleted file mode 100644 index 235468f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/tau.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/theta.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/theta.png deleted file mode 100644 index 6540af2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/theta.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/upsilon.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/upsilon.png deleted file mode 100644 index 0d88ee0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/upsilon.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/xi.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/xi.png deleted file mode 100644 index a00c382..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/xi.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/zeta.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/zeta.png deleted file mode 100644 index 683d9bc..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/lower/zeta.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/digamma.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/digamma.png deleted file mode 100644 index b9ab6f1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/digamma.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varepsilon.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varepsilon.png deleted file mode 100644 index 2f3ae9c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varepsilon.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varkappa.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varkappa.png deleted file mode 100644 index ddc85a2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varkappa.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varphi.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varphi.png deleted file mode 100644 index a198b26..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varphi.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varpi.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varpi.png deleted file mode 100644 index 788c350..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varpi.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varrho.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varrho.png deleted file mode 100644 index d884767..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varrho.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varsigma.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varsigma.png deleted file mode 100644 index a5409dd..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/varsigma.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/vartheta.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/vartheta.png deleted file mode 100644 index 4729b15..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/misc/vartheta.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/alpha.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/alpha.png deleted file mode 100644 index 22dfae1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/alpha.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/beta.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/beta.png deleted file mode 100644 index c95d79b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/beta.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/chi.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/chi.png deleted file mode 100644 index 774804a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/chi.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/delta.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/delta.png deleted file mode 100644 index c3baf62..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/delta.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/epsilon.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/epsilon.png deleted file mode 100644 index c8f85ef..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/epsilon.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/eta.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/eta.png deleted file mode 100644 index c02a78a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/eta.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/gamma.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/gamma.png deleted file mode 100644 index 1f6ccb0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/gamma.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/iota.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/iota.png deleted file mode 100644 index 10777c9..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/iota.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/kappa.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/kappa.png deleted file mode 100644 index 44aa91f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/kappa.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/lambda.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/lambda.png deleted file mode 100644 index cf67ea5..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/lambda.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/mu.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/mu.png deleted file mode 100644 index 7284125..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/mu.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/nu.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/nu.png deleted file mode 100644 index 2dcc1c3..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/nu.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/omega.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/omega.png deleted file mode 100644 index 3b9466d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/omega.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/omicron.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/omicron.png deleted file mode 100644 index 6d31fbd..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/omicron.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/phi.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/phi.png deleted file mode 100644 index 1a928d6..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/phi.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/pi.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/pi.png deleted file mode 100644 index a1e1314..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/pi.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/psi.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/psi.png deleted file mode 100644 index fdc0321..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/psi.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/rho.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/rho.png deleted file mode 100644 index 27d8c36..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/rho.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/sigma.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/sigma.png deleted file mode 100644 index dd4ad4b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/sigma.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/tau.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/tau.png deleted file mode 100644 index 7ad4305..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/tau.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/theta.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/theta.png deleted file mode 100644 index b5d7830..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/theta.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/upsilon.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/upsilon.png deleted file mode 100644 index ff1fd88..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/upsilon.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/xi.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/xi.png deleted file mode 100644 index a478d75..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/xi.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/zeta.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/zeta.png deleted file mode 100644 index 4052d09..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/greek/upper/zeta.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/aleph.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/aleph.png deleted file mode 100644 index 4963111..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/aleph.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/approx.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/approx.png deleted file mode 100644 index 7ef6f5d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/approx.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/ast.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/ast.png deleted file mode 100644 index 8b4dead..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/ast.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/baifenhao.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/baifenhao.png deleted file mode 100644 index 624539c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/baifenhao.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/because.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/because.png deleted file mode 100644 index 51070ef..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/because.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/beth.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/beth.png deleted file mode 100644 index 90fa4e2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/beth.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/blacksquare.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/blacksquare.png deleted file mode 100644 index 4221d79..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/blacksquare.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/cap.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/cap.png deleted file mode 100644 index 59d6a75..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/cap.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/cdot.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/cdot.png deleted file mode 100644 index 4f923c1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/cdot.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/circ.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/circ.png deleted file mode 100644 index a27d477..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/circ.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/cong.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/cong.png deleted file mode 100644 index 46abcf0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/cong.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/cup.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/cup.png deleted file mode 100644 index f321d24..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/cup.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/ddots.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/ddots.png deleted file mode 100644 index c609835..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/ddots.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/div.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/div.png deleted file mode 100644 index 8c11435..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/div.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/downarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/downarrow.png deleted file mode 100644 index fe285dd..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/downarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/eq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/eq.png deleted file mode 100644 index 21820ca..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/eq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/equiv.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/equiv.png deleted file mode 100644 index d21d2b6..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/equiv.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/exists.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/exists.png deleted file mode 100644 index 291cead..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/exists.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/forall.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/forall.png deleted file mode 100644 index c2a01c8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/forall.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/geq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/geq.png deleted file mode 100644 index 0ccd752..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/geq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/gets.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/gets.png deleted file mode 100644 index 702b6da..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/gets.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/gg.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/gg.png deleted file mode 100644 index 7dcdea8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/gg.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/gt.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/gt.png deleted file mode 100644 index cc05729..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/gt.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/in.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/in.png deleted file mode 100644 index 271d619..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/in.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/infty.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/infty.png deleted file mode 100644 index 8db988c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/infty.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/leftrightarrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/leftrightarrow.png deleted file mode 100644 index 989a47d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/leftrightarrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/leq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/leq.png deleted file mode 100644 index 01255b2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/leq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/ll.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/ll.png deleted file mode 100644 index d0cc99f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/ll.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/lt.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/lt.png deleted file mode 100644 index f11edc8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/lt.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/minus.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/minus.png deleted file mode 100644 index 0f845a2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/minus.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/mp.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/mp.png deleted file mode 100644 index 1cf38f0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/mp.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/neg.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/neg.png deleted file mode 100644 index 164bfa8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/neg.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/nexists.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/nexists.png deleted file mode 100644 index e4523e1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/nexists.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/ni.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/ni.png deleted file mode 100644 index 5b3da57..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/ni.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/partial.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/partial.png deleted file mode 100644 index 28253fa..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/partial.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/plus.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/plus.png deleted file mode 100644 index 7055190..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/plus.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/pm.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/pm.png deleted file mode 100644 index 8816655..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/pm.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/propto.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/propto.png deleted file mode 100644 index 4ba04fd..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/propto.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/sim.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/sim.png deleted file mode 100644 index 4a5264b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/sim.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/simeq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/simeq.png deleted file mode 100644 index ac4b64b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/simeq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/surd.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/surd.png deleted file mode 100644 index 9ddfd4d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/surd.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/tanhao.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/tanhao.png deleted file mode 100644 index 35a3346..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/tanhao.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/therefore.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/therefore.png deleted file mode 100644 index 7fd47cf..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/therefore.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/times.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/times.png deleted file mode 100644 index 1018224..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/times.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/to.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/to.png deleted file mode 100644 index 12609e4..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/to.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/uparrow.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/uparrow.png deleted file mode 100644 index 0c61945..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/uparrow.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/varnothing.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/varnothing.png deleted file mode 100644 index ea1b6c1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/varnothing.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/vdots.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/vdots.png deleted file mode 100644 index 0ce84f2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/math/vdots.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/gneqq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/gneqq.png deleted file mode 100644 index b299d23..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/gneqq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/gnsim.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/gnsim.png deleted file mode 100644 index 683af6b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/gnsim.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/lneqq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/lneqq.png deleted file mode 100644 index 5644063..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/lneqq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/lnsim.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/lnsim.png deleted file mode 100644 index 1365188..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/lnsim.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nbdash-1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nbdash-1.png deleted file mode 100644 index 07cce70..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nbdash-1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ncong.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ncong.png deleted file mode 100644 index 156f8be..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ncong.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/neq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/neq.png deleted file mode 100644 index feb442f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/neq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nequiv.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nequiv.png deleted file mode 100644 index 83427dc..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nequiv.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nexists.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nexists.png deleted file mode 100644 index c5e3e58..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nexists.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ngeq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ngeq.png deleted file mode 100644 index d3385e4..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ngeq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ngtr.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ngtr.png deleted file mode 100644 index 033a1d1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ngtr.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nleq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nleq.png deleted file mode 100644 index 16347a1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nleq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nless.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nless.png deleted file mode 100644 index 11c9472..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nless.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nmid.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nmid.png deleted file mode 100644 index c63688e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nmid.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/notin.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/notin.png deleted file mode 100644 index d001291..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/notin.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nparallel.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nparallel.png deleted file mode 100644 index 76887ca..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nparallel.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nprec.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nprec.png deleted file mode 100644 index a929e3b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nprec.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nsim.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nsim.png deleted file mode 100644 index 45cf001..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nsim.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nsubseteq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nsubseteq.png deleted file mode 100644 index 9e530e2..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nsubseteq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nsucc.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nsucc.png deleted file mode 100644 index b975eaf..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nsucc.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nsupseteq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nsupseteq.png deleted file mode 100644 index 4c1866b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nsupseteq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ntriangleleft.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ntriangleleft.png deleted file mode 100644 index 39ecc4d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ntriangleleft.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ntrianglelefteq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ntrianglelefteq.png deleted file mode 100644 index 9b8f737..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ntrianglelefteq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ntriangleright.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ntriangleright.png deleted file mode 100644 index 751acf0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ntriangleright.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ntrianglerighteq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ntrianglerighteq.png deleted file mode 100644 index abff3af..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/ntrianglerighteq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nvdash-1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nvdash-1.png deleted file mode 100644 index dc641d9..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nvdash-1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nvdash-2.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nvdash-2.png deleted file mode 100644 index 4079f6f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nvdash-2.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nvdash-3.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nvdash-3.png deleted file mode 100644 index 3d872b4..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nvdash-3.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nvdash.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nvdash.png deleted file mode 100644 index 4f4fb1f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/nvdash.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/precnsim.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/precnsim.png deleted file mode 100644 index e6c148b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/precnsim.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/subsetneq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/subsetneq.png deleted file mode 100644 index cc33835..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/subsetneq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/succnsim.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/succnsim.png deleted file mode 100644 index 7eafb5b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/succnsim.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/supsetneq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/supsetneq.png deleted file mode 100644 index b43f091..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/not/supsetneq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/a.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/a.png deleted file mode 100644 index 9da4faf..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/a.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/b.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/b.png deleted file mode 100644 index c14fe4f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/b.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/c.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/c.png deleted file mode 100644 index 08015b7..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/c.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/d.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/d.png deleted file mode 100644 index 2c9a95d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/d.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/e.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/e.png deleted file mode 100644 index e966a24..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/e.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/f.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/f.png deleted file mode 100644 index 76d3d37..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/f.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/g.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/g.png deleted file mode 100644 index 8ea5775..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/g.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/h.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/h.png deleted file mode 100644 index fa3c006..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/h.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/i.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/i.png deleted file mode 100644 index 58e2a69..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/i.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/j.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/j.png deleted file mode 100644 index 592148a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/j.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/k.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/k.png deleted file mode 100644 index e2daf2e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/k.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/l.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/l.png deleted file mode 100644 index 691a92f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/l.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/m.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/m.png deleted file mode 100644 index 9f020cc..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/m.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/n.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/n.png deleted file mode 100644 index 30be2cc..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/n.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/o.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/o.png deleted file mode 100644 index 16c83a0..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/o.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/p.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/p.png deleted file mode 100644 index b3e837c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/p.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/q.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/q.png deleted file mode 100644 index 203bb20..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/q.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/r.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/r.png deleted file mode 100644 index 763f81e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/r.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/s.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/s.png deleted file mode 100644 index 7510702..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/s.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/t.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/t.png deleted file mode 100644 index 0043204..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/t.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/u.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/u.png deleted file mode 100644 index f495f3d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/u.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ua.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ua.png deleted file mode 100644 index 7d36a0e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ua.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ub.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ub.png deleted file mode 100644 index d1eacb7..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ub.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uc.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uc.png deleted file mode 100644 index e1f8bb9..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uc.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ud.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ud.png deleted file mode 100644 index a5d2343..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ud.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ue.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ue.png deleted file mode 100644 index 974322c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ue.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uf.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uf.png deleted file mode 100644 index 253244e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uf.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ug.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ug.png deleted file mode 100644 index 3fd2e08..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ug.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uh.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uh.png deleted file mode 100644 index c72d319..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uh.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ui.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ui.png deleted file mode 100644 index f69e3f8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ui.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uj.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uj.png deleted file mode 100644 index ffefb31..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uj.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uk.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uk.png deleted file mode 100644 index 07a569d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uk.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ul.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ul.png deleted file mode 100644 index 47d868a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ul.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/um.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/um.png deleted file mode 100644 index c45333e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/um.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/un.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/un.png deleted file mode 100644 index c3ba37c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/un.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uo.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uo.png deleted file mode 100644 index cac7b4f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uo.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/up.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/up.png deleted file mode 100644 index d48be7b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/up.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uq.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uq.png deleted file mode 100644 index d20612b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uq.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ur.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ur.png deleted file mode 100644 index e812c31..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ur.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/us.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/us.png deleted file mode 100644 index 3204257..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/us.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ut.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ut.png deleted file mode 100644 index d897d27..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ut.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uu.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uu.png deleted file mode 100644 index 87ca6ce..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uu.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uv.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uv.png deleted file mode 100644 index 8d6cd3b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uv.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uw.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uw.png deleted file mode 100644 index 0d5f389..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uw.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ux.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ux.png deleted file mode 100644 index 024bade..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/ux.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uy.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uy.png deleted file mode 100644 index cfa70de..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uy.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uz.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uz.png deleted file mode 100644 index 8d1fcc8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/uz.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/v.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/v.png deleted file mode 100644 index 0ad4cd8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/v.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/w.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/w.png deleted file mode 100644 index c6edcb4..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/w.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/x.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/x.png deleted file mode 100644 index f299eeb..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/x.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/y.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/y.png deleted file mode 100644 index 98c8626..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/y.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/z.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/z.png deleted file mode 100644 index 644a5b3..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/char/rm/z.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/1.png deleted file mode 100644 index 3894249..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/2.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/2.png deleted file mode 100644 index c378fdc..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/2.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/3.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/3.png deleted file mode 100644 index fad9d20..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/3.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/c1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/c1.png deleted file mode 100644 index a032d70..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/c1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/c2.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/c2.png deleted file mode 100644 index a8c95a8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/c2.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/c4.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/c4.png deleted file mode 100644 index 74c5cdf..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/c4.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/c5.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/c5.png deleted file mode 100644 index 05e6adf..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/frac/c5.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/1.png deleted file mode 100644 index 3654ff9..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/2.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/2.png deleted file mode 100644 index a33c1dc..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/2.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/3.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/3.png deleted file mode 100644 index 3fc2186..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/3.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/4.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/4.png deleted file mode 100644 index 6f528db..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/4.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/5.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/5.png deleted file mode 100644 index e22d592..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/5.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/6.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/6.png deleted file mode 100644 index 2eed1bc..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/6.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/c1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/c1.png deleted file mode 100644 index d797cb8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/c1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/c2.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/c2.png deleted file mode 100644 index 4eb6c8f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/c2.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/c3.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/c3.png deleted file mode 100644 index 0f55b7e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/func/c3.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/1.png deleted file mode 100644 index a08ab60..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/2.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/2.png deleted file mode 100644 index 09cb7f8..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/2.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/3.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/3.png deleted file mode 100644 index 8898b84..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/3.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/4.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/4.png deleted file mode 100644 index 483092e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/4.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/5.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/5.png deleted file mode 100644 index 604128c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/5.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/6.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/6.png deleted file mode 100644 index 287b6ca..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/int/6.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/large/1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/large/1.png deleted file mode 100644 index a83bf8e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/large/1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/large/2.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/large/2.png deleted file mode 100644 index 7052553..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/large/2.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/large/3.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/large/3.png deleted file mode 100644 index 70b0f3e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/large/3.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/other.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/other.png deleted file mode 100644 index a5796aa..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/other.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/1.png deleted file mode 100644 index a40b79a..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/2.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/2.png deleted file mode 100644 index 1eac155..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/2.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/3.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/3.png deleted file mode 100644 index 3425abe..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/3.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/4.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/4.png deleted file mode 100644 index fad9d20..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/4.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/c1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/c1.png deleted file mode 100644 index 24cbd1b..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/c1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/c2.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/c2.png deleted file mode 100644 index 572ad1f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/c2.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/c3.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/c3.png deleted file mode 100644 index d557b77..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/script/c3.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/1.png deleted file mode 100644 index f6d0f2e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/2.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/2.png deleted file mode 100644 index 0ffbabb..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/2.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/3.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/3.png deleted file mode 100644 index 1f10156..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/3.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/4.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/4.png deleted file mode 100644 index 66470a6..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/4.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/c1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/c1.png deleted file mode 100644 index cf7beba..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/c1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/c2.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/c2.png deleted file mode 100644 index 35a5bae..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/sqrt/c2.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/ys/1.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/ys/1.png deleted file mode 100644 index f7c7d17..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/ys/1.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/ys/2.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/ys/2.png deleted file mode 100644 index ee9586d..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/ys/2.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/ys/3.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/ys/3.png deleted file mode 100644 index 93f7d9c..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/images/toolbar/ys/3.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/styles/base.css b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/styles/base.css deleted file mode 100644 index 355d9b0..0000000 --- a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/styles/base.css +++ /dev/null @@ -1,40 +0,0 @@ - -.kf-editor { - width: 100%; - height: 100%; - border: 1px solid #e0e0e0; - position: relative; - top: 0; - left: 0; - - overflow: hidden; - z-index: 2; - background-color: #f6f5ee; -} - -.kf-editor-edit-area { - position: relative; - top: 0; - left: 0; - - z-index: 1; - height: 0; - background-color: white; - /*background-color: white;*/ - /*background-size: 21px 21px;*/ - /*background-position: 0 0,10px 10px;*/ - /*background-image: -webkit-linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef),-webkit-linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef);*/ - /*background-image: linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef),linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef);*/ -} - -.kf-editor-canvas-container { - width: 100%; - height: 100%; -} - -.kf-editor-input-box { - position: fixed; - top: 0; - left: -99999999px; - z-index: 999999; -} \ No newline at end of file diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/styles/page.css b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/styles/page.css deleted file mode 100644 index 8026403..0000000 --- a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/styles/page.css +++ /dev/null @@ -1,12 +0,0 @@ - -html, body { - width: 100%; - height: 100%; - padding: 0; - margin: 0; - background: rgba( 48, 48, 48, 0.5 ); -} - -body { - height: 1000px; -} diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/styles/scrollbar.css b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/styles/scrollbar.css deleted file mode 100644 index b8254b0..0000000 --- a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/styles/scrollbar.css +++ /dev/null @@ -1,78 +0,0 @@ -/*! - * 滚动条 - **/ - -.kf-editor-edit-scrollbar { - width: 100%; - height: 16px; - position: absolute; - bottom: 0; - left: 0; - z-index: 994; - border-top: 1px solid #ddd; -} - -.kf-editor-ui-left-button { - position: absolute; - top: 0; - left: 0; - width: 5px; - height: 100%; - background: white; -} - -.kf-editor-ui-right-button { - position: absolute; - top: 0; - right: 0; - width: 5px; - height: 100%; - background: white; -} - -.kf-editor-ui-track { - position: absolute; - top: 0; - left: 5px; - width: 0; - height: 100%; - background-image: url(../images/scrollbar/edit/bar-left.png), url(../images/scrollbar/edit/bar-right.png), url(../images/scrollbar/edit/bar-bg.png); - background-repeat: no-repeat, no-repeat, repeat-x; - background-position: 0 0, right 0, 0 0; -} - -.kf-editor-ui-thumb { - position: absolute; - top: 0; - left: 0; - width: 0; - height: 100%; -} - -.kf-editor-ui-thumb-left { - width: 5px; - height: 100%; - position: absolute; - top: 0; - left: 0; - background: url(../images/scrollbar/edit/thumb-left.png) no-repeat 0 0; - z-index: 1; -} - -.kf-editor-ui-thumb-right { - width: 5px; - height: 100%; - position: absolute; - top: 0; - right: 0; - background: url(../images/scrollbar/edit/thumb-right.png) no-repeat 0 0; -} - -.kf-editor-ui-thumb-body { - position: absolute; - top: 0; - left: 5px; - width: 0; - height: 100%; - background: url(../images/scrollbar/edit/thumb-bg.png) repeat-x 0 0; -} \ No newline at end of file diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/styles/ui.css b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/styles/ui.css deleted file mode 100644 index e8ac470..0000000 --- a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/styles/ui.css +++ /dev/null @@ -1,536 +0,0 @@ -/* 工具栏 */ -.kf-editor-toolbar { - width: 100%; - padding: 1px 10px; - position: relative; - top: 0; - left: 0; - z-index: 2; - background-color: #f6f5ee; - border-bottom: 1px solid #ccc; - -moz-box-shadow:1px 1px 1px rgba( 0, 0, 0, 0.1 ); - -webkit-box-shadow:1px 1px 1px rgba( 0, 0, 0, 0.1 ); - box-shadow:1px 1px 1px rgba( 0, 0, 0, 0.1 ); - color: #000; - font-family: Helvetica, Arial, "微软雅黑", "Microsoft YaHei", "宋体", sans-serif; -} - -/* 按钮 */ -.kf-editor-ui-button { - padding: 8px 6px; - height: 79px; - font-size: 12px; - display: inline-block; - border: 1px solid transparent; - border-radius: 3px; - cursor: default; - position: relative; - top: 0; - left: 0; - z-index: 3; - vertical-align: top; - opacity: 0.5; - margin-right: 1px; -} - -.kf-editor-toolbar .kf-editor-ui-overlap-button { - width: 100%; - height: 25px; - background: #53b856; - border-radius: 0; -} - -.kf-editor-ui-button-icon { - width: 32px; - height: 32px; - margin: 2px auto; -} - -.kf-editor-ui-button-label { - color: #666; - text-align: center; - display: block; - font-size: 12px; - line-height: 20px; -} - -.kf-editor-ui-overlap-button .kf-editor-ui-button-label { - padding: 3px 5px; - text-align: left; - color: white; - font-size: 12px; -} - -.kf-editor-ui-button-sign { - border: 4px solid transparent; - border-top-color: #2d2d2d; - width: 0; - height: 0; - display: inline-block; - margin: 8px auto; - vertical-align: top; -} - -.kf-editor-ui-button-mount-point { - display: none; - position: absolute; - bottom: -2px; - left: -1px; -} - -.kf-editor-ui-overlap-button .kf-editor-ui-button-mount-point { - width: 100%; - height: 10000px; -} - -.kf-editor-ui-wrap-group { - overflow-x: hidden; - overflow-y: auto; -} - -.kf-editor-ui-overlap-button .kf-editor-ui-button-mount-point { - top: 27px; -} - -.kf-editor-toolbar .kf-editor-ui-button-in { - border-color: #8fcc91!important; - background: #e0f0dd!important; -} - -.kf-editor-toolbar .kf-editor-ui-overlap-button { - padding-top: 0; - padding-bottom: 0; - border-color: #61b864!important; - background: #61b864!important; -} - -/* 分割符 */ -.kf-editor-ui-delimiter { - width: 11px; - height: 100%; - display: none; -} - -.kf-editor-ui-enabled.kf-editor-ui-button:HOVER { - border: 1px solid #a9d9ab; - background: #ebf7e6; -} - -.kf-editor-ui-enabled.kf-editor-ui-overlap-button:HOVER { - border: 1px solid #53b856; - background: #53b856; -} - -.kf-editor-ui-delimiter-line { - width: 1px; - height: 100%; - margin: 0 auto; - background: -webkit-linear-gradient(top, rgba(233, 233, 233, 0.11), rgba(92, 92, 92, 0.20) 60%, rgba(92, 92, 92, 0.41) 80%, rgba(123, 123, 123, 0.50)); -} - -/* box */ -.kf-editor-ui-box { - border: 1px solid #b3aead; - border-radius: 3px; - box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.11); - background: white; - position: absolute; - top: 0; - left: -1px; - overflow-x: hidden; - overflow-y: auto; -} - -.kf-editor-ui-area .kf-editor-ui-box { - border-color: #61b864; -} - -.kf-editor-ui-box-container { - font-size: 12px; -} - -.kf-editor-ui-box-group-title { - background-color: #f7f6f0; - height: 23px; - line-height: 23px; - font-size: 12px; - border: 1px solid #ebeae4; - border-width: 1px 0; - padding-left: 12px; -} - -.kf-editor-ui-box-group-item-container { - padding: 7px 9px 17px 9px; -} - -.kf-editor-ui-overlap-container { - overflow: hidden; -} - -.kf-editor-ui-area .kf-editor-ui-box { - top: -1px; -} - -.kf-editor-ui-overlap-container .kf-editor-ui-button-sign { - border-top-color: white; - border-width: 4px; - margin-left: 10px; - margin-top: 8px; -} - -.kf-editor-ui-yushe-btn .kf-editor-ui-box-item { - border: 1px solid transparent; - padding: 5px; -} - -.kf-editor-ui-box-item { - display: inline-block; - margin: 4px; -} - -.kf-editor-ui-box-item-content:HOVER { - border-color: #dff3df; -} - -.kf-editor-ui-box-item-content:HOVER .kf-editor-ui-box-item-val { - border-color: #6eb864; -} - -.kf-editor-ui-area .kf-editor-ui-box-item { - position: relative; - top: 0; - left: 0; - width: 32px; - height: 32px; - border: 0; - margin: 3px; - padding: 0; - z-index: 1; -} - -.kf-editor-ui-area .kf-editor-ui-box-item img { - width: 32px; - height: 32px; -} - - -.kf-editor-ui-box-item-label { - margin-bottom: 5px; -} - -.kf-editor-ui-box-item-content { - background: white; - border: 1px solid white; -} - -.kf-editor-ui-area .kf-editor-ui-box-item-content { - position: absolute; - top: 0; - left: 0; -} - -.kf-editor-ui-area .kf-editor-ui-box-item-content:HOVER { - border: 1px solid #dff3df; -} - -.kf-editor-ui-box-item-val { - padding: 5px; - line-height: 0; - border: 1px solid #808080; -} - -.kf-editor-ui-area .kf-editor-ui-box-item-val { - padding: 0; - margin: 0; -} - -/* area */ -.kf-editor-ui-area { - height: 79px; - display: inline-block; - cursor: default; - position: relative; - top: 0; - left: 0; - vertical-align: top; - opacity: 0.5; - z-index: 4; - border: 1px solid #e0dfd5; - border-radius: 4px; - background: white; - margin: 8px 10px; -} - -.kf-editor-ui-area-container { - width: 293px; - height: 70px; - /*margin: 7px 5px 5px 5px;*/ - margin: 5px; - display: inline-block; - border-right: 0; - vertical-align: top; - position: relative; - top: 0; - left: 0; - overflow: hidden; -} - -.kf-editor-ui-area-panel { - position: absolute; - top: 0; - left: 0; - line-height: 0; - background: white; - -webkit-transition: top 0.5s linear; - -moz-transition: top 0.5s linear; - transition: top 0.5s linear; -} - -.kf-editor-ui-area-button-container { - display: inline-block; - width: 16px; - height: 100%; - overflow: hidden; - text-align: center; - border: 0 solid #D3D3D3; - border-left-width: 1px; - background-color: #f2f0e6; -} - -.kf-editor-ui-moveup-button, .kf-editor-ui-movedown-button { - line-height: 25px; - height: 30px; -} - -.kf-editor-ui-moveup-button { - background: url("../images/toolbar/btn.png") -304px 9px no-repeat; -} - -.kf-editor-ui-movedown-button { - border: 1px solid #D3D3D3; - border-width: 1px 0; - background: url("../images/toolbar/btn.png") -325px 9px no-repeat; -} - -.kf-editor-ui-area-button { - width: 100%; - height: 50px; - line-height: 26px; - background: url("../images/toolbar/btn.png") -346px 0 no-repeat; -} - -.kf-editor-ui-enabled .kf-editor-ui-area-button:HOVER { - background-color: #e5e4e1; -} - -.kf-editor-ui-enabled .kf-editor-ui-moveup-button:HOVER { - background-color: #e5e4e1; -} - -.kf-editor-ui-enabled .kf-editor-ui-movedown-button:HOVER { - background-color: #e5e4e1; -} - -.kf-editor-ui-area-button-container .kf-editor-ui-disabled { - opacity: 0.25; - background-color: transparent!important; -} - -.kf-editor-ui-area-mount { - position: absolute; - top: 0; - left: 0; - display: none; -} - -.kf-editor-ui-overlap-title { - width: 100%; - line-height: 1.5; -} - -/* list */ -.kf-editor-ui-list { - background: #f9f8f5; - border: 1px solid #b3aead; - border-radius: 3px; - position: fixed; - top: 0; - left: 0; - box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.11); -} - -.kf-editor-ui-list-bg { - display: none; -} - -.kf-editor-ui-list-item-container { - position: relative; - top: 0; - left: 0; - z-index: 2; -} - -.kf-editor-ui-list-item { - line-height: 24px; - padding: 2px 6px; - border: 1px solid transparent; - border-width: 1px 0; -} - -.kf-editor-ui-list-item-select { - color: #61b864; - font-weight: bold; -} - -.kf-editor-ui-list-item-select .kf-editor-ui-list-item-icon { - visibility: visible; - width: 16px; - height: 16px; - background: url(../images/toolbar/btn.png) no-repeat -367px 0; -} - -.kf-editor-ui-list-item:HOVER { - border-color: #beddbf; - background-color: #ecf3e9; -} - -.kf-editor-ui-list-item-icon { - width: 16px; - height: 16px; - display: inline-block; - vertical-align: middle; - margin-top: -2px; - margin-right: 4px; - visibility: hidden; -} - -/* area 内容区 */ -.kf-editor-ui-area-item { - width: 26px; - height: 26px; - position: absolute; - top: 0; - left: 0; -} - -.kf-editor-ui-area-item-inner { - width: 34px; - height: 34px; - border: 1px solid white; - position: absolute; - top: -4px; - left: -4px; - -webkit-transition: all 0.1s linear; - -moz-transition: all 0.1s linear; - transition: all 0.1s linear; - - -webkit-transform: scale( 0.76 ); - -moz-transform: scale( 0.76 ); - transform: scale( 0.76 ); -} - -.kf-editor-ui-enabled .kf-editor-ui-area-item-inner:HOVER { - border-color: #dff3df; - - -webkit-transform: scale( 1 ); - -moz-transform: scale( 1 ); - transform: scale( 1 ); -} - -.kf-editor-ui-area-item-img { - width: 32px; - height: 32px; - border: 1px solid #808080; - -webkit-transition: all 0.1s linear; - -moz-transition: all 0.1s linear; - transition: all 0.1s linear; -} - -.kf-editor-ui-enabled .kf-editor-ui-area-item-inner:HOVER .kf-editor-ui-area-item-img { - border-color: #6eb864; -} - -.kf-editor-ui-enabled { - opacity: 1; -} - -.kf-editor-ui-overlap-container .kf-editor-ui-box-item { - width: 34px; - height: 34px; - border: 1px solid white; -} - -.kf-editor-ui-overlap-container .kf-editor-ui-box-item-content:HOVER { -} - -.kf-editor-ui-overlap-container .kf-editor-ui-box-item-val { - width: 32px; - height: 32px; -} - -/* scrollbar */ -.kf-editor-ui-box::-webkit-scrollbar { - width: 17px; - background: url(../images/scrollbar/custom/bg.png) 0 0 repeat-y white; -} - -.kf-editor-ui-box::-webkit-scrollbar-button:end:increment { - height: 5px; - background: url(../images/scrollbar/custom/down.png) 0 0 repeat-y white; -} -/*定义滚动条渐减按扭的样式 */ -.kf-editor-ui-box::-webkit-scrollbar-button:start:decrement { - height: 5px; - background: url(../images/scrollbar/custom/up.png) 0 0 repeat-y white; -} - -/* 垂直滚动条的第三层轨道的上段 */ -.kf-editor-ui-box::-webkit-scrollbar-track-piece:vertical:start { - background-image: url(../images/scrollbar/custom/top.png), url(../images/scrollbar/custom/bg.png); - background-repeat: no-repeat, repeat-y; -} -/* 垂直滚动条的第三层轨道的下段 */ -.kf-editor-ui-box::-webkit-scrollbar-track-piece:vertical:end { - background-image: url(../images/scrollbar/custom/bottom.png), url(../images/scrollbar/custom/bg.png); - background-repeat: no-repeat, repeat-y; - background-position: 0 bottom, 0 0; -} -/* 垂直滚动条的滑动块 */ -.kf-editor-ui-box::-webkit-scrollbar-thumb:vertical { - /*background: url(./images2/bar.png) 6px 0 no-repeat;*/ - /*background-size: 6px;*/ - -webkit-border-image: url(../images/scrollbar/custom/bar.png) 8; - border-width: 10px; -} - -.kf-editor-ui-wrap-group::-webkit-scrollbar { - width: 17px; - background: url(../images/scrollbar/custom/bg.png) 0 0 repeat-y white; -} - -.kf-editor-ui-wrap-group::-webkit-scrollbar-button:end:increment { - height: 5px; - background: url(../images/scrollbar/custom/down.png) 0 0 repeat-y white; -} -/*定义滚动条渐减按扭的样式 */ -.kf-editor-ui-wrap-group::-webkit-scrollbar-button:start:decrement { - height: 5px; - background: url(../images/scrollbar/custom/up.png) 0 0 repeat-y white; -} - -/* 垂直滚动条的第三层轨道的上段 */ -.kf-editor-ui-wrap-group::-webkit-scrollbar-track-piece:vertical:start { - background-image: url(../images/scrollbar/custom/top.png), url(../images/scrollbar/custom/bg.png); - background-repeat: no-repeat, repeat-y; -} -/* 垂直滚动条的第三层轨道的下段 */ -.kf-editor-ui-wrap-group::-webkit-scrollbar-track-piece:vertical:end { - background-image: url(../images/scrollbar/custom/bottom.png), url(../images/scrollbar/custom/bg.png); - background-repeat: no-repeat, repeat-y; - background-position: 0 bottom, 0 0; -} -/* 垂直滚动条的滑动块 */ -.kf-editor-ui-wrap-group::-webkit-scrollbar-thumb:vertical { - -webkit-border-image: url(../images/scrollbar/custom/bar.png) 8; - border-width: 10px; -} \ No newline at end of file diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/fui.css b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/fui.css deleted file mode 100644 index de07bba..0000000 --- a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/fui.css +++ /dev/null @@ -1,540 +0,0 @@ -/** - * 所有构件样式规则 - **/ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-widget { - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-user-drag: none; - color: #000000; - line-height: 1.5; - font-size: 12px; - font-family: "ff-tisa-web-pro-1", "ff-tisa-web-pro-2", "Lucida Grande", "Hiragino Sans GB", "Hiragino Sans GB W3", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; - -webkit-font-smoothing: antialiased; - outline: none; - display: inline-block; - vertical-align: top; - position: relative; - top: 0; - left: 0; -} -.fui-widget.fui-selectable { - -webkit-user-select: text; - -khtml-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - -webkit-user-drag: text; -} -.fui-widget * { - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-user-drag: none; -} -.fui-widget.fui-disabled { - opacity: 0.3!important; -} -.fui-widget.fui-hide { - display: none!important; -} -.fui-widget.fui-mask-animate { - -webkit-transition: all 0.2s; -} -.fui-widget.fui-mask-hint { - -webkit-transform: perspective(600px) translateZ(30px); -} - -/** - * 容器类通用样式 - **/ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-container { - overflow: hidden; - position: relative; - top: 0; - left: 0; -} -.fui-container.fui-disabled { - opacity: 1!important; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-button-menu { - border: 1px solid white; -} -.fui-button-menu:HOVER { - border-color: #d5e1f2; -} -.fui-button-menu.fui-button-active { - border-color: #d5e1f2; - background: #d5e1f2; -} -.fui-button-menu.fui-button-active .fui-button { - background: #d5e1f2; -} -.fui-button-menu.fui-layout-top, -.fui-button-menu.fui-layout-bottom { - text-align: center; -} -.fui-button-menu.fui-layout-top .fui-open-btn, -.fui-button-menu.fui-layout-bottom .fui-open-btn { - display: block; -} - -/** - * 通用button - */ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-button { - overflow: hidden; - cursor: default; - font-size: 0; -} -.fui-button ._layout .fui-label { - display: block; -} -.fui-button ._layout .fui-icon { - display: block; -} -.fui-button .fui-icon { - display: inline-block; - vertical-align: middle; -} -.fui-button .fui-label { - display: inline-block; - vertical-align: middle; -} -.fui-button.fui-button-layout-top .fui-label { - display: block; -} -.fui-button.fui-button-layout-top .fui-icon { - display: block; -} -.fui-button.fui-button-layout-bottom .fui-label { - display: block; -} -.fui-button.fui-button-layout-bottom .fui-icon { - display: block; -} -.fui-button:HOVER { - background-color: #d5e1f2 !important; - color: #000000 !important; -} -.fui-button:ACTIVE { - background-color: #87a9da !important; - color: #000000 !important; -} -.fui-button.fui-disabled:HOVER { - background-color: #ffffff !important; - color: #000000 !important; -} -.fui-button.fui-disabled:ACTIVE { - background-color: #ffffff !important; - color: #000000 !important; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-colorpicker { - background-color: #fff; -} -.fui-colorpicker-container { - border: 1px solid #d3d3d3; -} -.fui-colorpicker-container .fui-colorpicker-title { - background: #eee; - padding: 2px 4px; -} -.fui-colorpicker-container .fui-colorpicker-colors { - margin: 0; - padding: 0; - font-size: 0; - line-height: 0; -} -.fui-colorpicker-container .fui-colorpicker-colors-line0 { - margin-bottom: 3px; -} -.fui-colorpicker-container .fui-colorpicker-item { - display: inline-block; - margin: 0 2px; - width: 13px; - height: 13px; - border-style: solid; - border-width: 1px; -} -.fui-colorpicker-container .fui-colorpicker-commoncolor, -.fui-colorpicker-container .fui-colorpicker-standardcolor { - margin: 4px 3px; - white-space: nowrap; -} -.fui-colorpicker-container .fui-colorpicker-toolbar { - margin: 4px; - height: 27px; -} -.fui-colorpicker-container .fui-colorpicker-toolbar .fui-colorpicker-preview { - display: inline-block; - height: 25px; - line-height: 25px; - width: 120px; - border: 1px solid #d3d3d3; -} -.fui-colorpicker-container .fui-colorpicker-toolbar .fui-colorpicker-clear { - display: inline-block; - height: 25px; - line-height: 25px; - width: 60px; - border: 1px solid #d3d3d3; - font-size: 12px; - text-align: center; - position: absolute; - right: 5px; - cursor: pointer; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ - -/** - * 通用button - */ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-dialog { - position: fixed; - top: -1000000px; - left: -100000px; - border: 1px solid #B1B1B1; - background: #fff; -} -.fui-dialog .fui-panel-content { - width: auto!important; - height: auto!important; - padding: 2px; -} -.fui-dialog .fui-dialog-caption { - margin: 0; - padding: 5px; - font-size: 16px; - font-weight: normal; - line-height: 1; - display: inline-block; -} -.fui-dialog .fui-dialog-head .fui-close-button { - float: right; -} -.fui-dialog .fui-dialog-head .fui-close-button .fui-close-button-icon { - width: 16px; - height: 16px; - background: url("images/close.png") no-repeat 0 0; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-drop-panel { - border: 1px solid #d3d3d3; - overflow: hidden; - position: relative; -} -.fui-drop-panel .fui-drop-panel-content { - display: inline-block; -} -.fui-drop-panel .fui-drop-panel-placeholder { - display: none; -} -.fui-drop-panel .fui-drop-panel-button { - border-left: 1px solid #d3d3d3; - visibility: visible; -} -.fui-drop-panel .fui-drop-panel-button:HOVER { - border-color: #d5e1f2; -} -.fui-drop-panel .fui-drop-panel-button:ACTIVE { - border-color: #87a9da; -} -.fui-drop-panel:HOVER { - border-color: #d5e1f2; -} -.fui-drop-panel:HOVER .fui-drop-panel-button { - border-left-color: #d5e1f2; -} -.fui-drop-panel:ACTIVE { - border-color: #87a9da; -} -.fui-drop-panel:ACTIVE .fui-drop-panel-button { - border-left-color: #d5e1f2; -} -.fui-drop-panel.fui-drop-panel-open { - overflow: visible; -} -.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-content { - border: 1px solid #d3d3d3; - position: absolute; - top: -1px; - left: -1px; -} -.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-button { - visibility: hidden; -} -.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-placeholder { - display: inline-block; -} -.fui-drop-panel-popup { - border: 1px solid #d3d3d3; -} -.fui-drop-panel-popup:HOVER { - border-color: #d5e1f2; -} -.fui-drop-panel-popup:HOVER .fui-drop-panel-button { - border-left-color: #d5e1f2; -} -.fui-drop-panel-popup:ACTIVE { - border-color: #87a9da; -} -.fui-drop-panel-popup:ACTIVE .fui-drop-panel-button { - border-left-color: #d5e1f2; -} - -.fui-icon { - text-align: center; - font-size: 0; -} -.fui-icon img { - display: inline-block; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-input-button { - border: 1px solid #ababab; -} -.fui-input-button .fui-input { - vertical-align: middle; - border: none!important; -} -.fui-input-button .fui-button { - vertical-align: middle; -} -.fui-input-button:HOVER { - border-color: #87a9da; -} -.fui-input-button:ACTIVE { - border-color: #87a9da; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-input { - border: 1px solid #d3d3d3; - padding: 1px; - margin: 0; -} -.fui-input:HOVER, -.fui-input:FOCUS { - border-color: #4d90fe!important; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-item { - font-size: 0; -} -.fui-item .fui-icon { - vertical-align: middle; -} -.fui-item .fui-label { - vertical-align: middle; -} -.fui-item.fui-item-selected { - background: #87a9da; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-label-panel .fui-label-panel-label { - width: 100%; - color: #666; -} -.fui-label-panel.fui-no-position .fui-label-panel-label { - position: static!important; -} -.fui-label-panel.fui-layout-bottom .fui-label-panel-label { - position: absolute; - bottom: 0; - left: 0; - top: auto; - z-index: 2; -} - -.fui-label { - cursor: default; - display: inline-block; - white-space: nowrap; -} - -/** - * 通用button - */ -.fui-mask { - position: fixed; - z-index: 99998; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-menu { - background-color: #fff; - border: 1px solid #d3d3d3; -} -.fui-menu .fui-item { - padding: 2px 5px; - display: block!important; -} -.fui-menu .fui-item:HOVER { - background: #d5e1f2; -} - -/** - * 通用button - */ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-panel { - display: inline-block; - vertical-align: top; - overflow-y: auto; - overflow-x: hidden; -} -.fui-panel .fui-panel-content { - position: relative; - top: 0; - left: 0; -} -.fui-panel .fui-panel-content { - width: 100%; - height: 100%; -} -.fui-panel.fui-container-column { - font-size: 0; -} -.fui-panel.fui-container-column .fui-column { - display: block; -} - -/** - * 通用button - */ -.fui-ppanel::-webkit-scrollbar { - width: 15px; -} -.fui-ppanel::-webkit-scrollbar-button:start:decrement, -.fui-ppanel::-webkit-scrollbar-button:end:decrement, -.fui-ppanel::-webkit-scrollbar-button:start:increment, -.fui-ppanel::-webkit-scrollbar-button:end:increment, -.fui-ppanel::-webkit-scrollbar-thumb { - border: 1px solid #e7e7e7; -} -.fui-ppanel.fui-ppanel-position { - position: fixed; - z-index: 99999; -} - -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-separator { - background: #6d6d6d; -} - -/** - * Spin-button - */ -.fui-spin-button .fui-spin-up-btn .fui-icon, -.fui-spin-button .fui-spin-down-btn .fui-icon { - width: 16px; - height: 9px; - background: url("images/up.png") no-repeat 3px 1.5px; -} -.fui-spin-button .fui-spin-down-btn .fui-icon { - background-image: url("images/down.png"); -} - -/** - * 通用button - */ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-tabs .fui-selected { - background-color: #d5e1f2; -} - -/** - * 可切换Button (ToggleButton) - */ -/** - * FUI 通用样式定义 - */ -/*------------ var*/ -/*------------ mixin*/ -.fui-toggle-button.fui-button-pressed { - background-color: #aec5e6; -} -.fui-toggle-button.fui-button-pressed.fui-disabled { - background-color: #aec5e6 !important; -} diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/fui.min.css b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/fui.min.css deleted file mode 100644 index 3faab2a..0000000 --- a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/fui.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * ==================================================== - * Themes file * Flex UI - v1.0.0 - 2014-07-28 - * https://github.com/fex-team/fui - * GitHub: https://github.com/fex-team/fui.git - * Copyright (c) 2014 Baidu Kity Group; Licensed MIT - * ==================================================== - */ - -.fui-widget{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none;color:#000;line-height:1.5;font-size:12px;font-family:ff-tisa-web-pro-1,ff-tisa-web-pro-2,"Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;-webkit-font-smoothing:antialiased;outline:0;display:inline-block;vertical-align:top;position:relative;top:0;left:0}.fui-widget.fui-selectable{-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;-webkit-user-drag:text}.fui-widget *{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}.fui-widget.fui-disabled{opacity:.3!important}.fui-widget.fui-hide{display:none!important}.fui-widget.fui-mask-animate{-webkit-transition:all .2s}.fui-widget.fui-mask-hint{-webkit-transform:perspective(600px) translateZ(30px)}.fui-container{overflow:hidden;position:relative;top:0;left:0}.fui-container.fui-disabled{opacity:1!important}.fui-button-menu{border:1px solid #fff}.fui-button-menu:HOVER{border-color:#d5e1f2}.fui-button-menu.fui-button-active{border-color:#d5e1f2;background:#d5e1f2}.fui-button-menu.fui-button-active .fui-button{background:#d5e1f2}.fui-button-menu.fui-layout-bottom,.fui-button-menu.fui-layout-top{text-align:center}.fui-button-menu.fui-layout-bottom .fui-open-btn,.fui-button-menu.fui-layout-top .fui-open-btn{display:block}.fui-button{overflow:hidden;cursor:default;font-size:0}.fui-button ._layout .fui-icon,.fui-button ._layout .fui-label{display:block}.fui-button .fui-icon,.fui-button .fui-label{display:inline-block;vertical-align:middle}.fui-button.fui-button-layout-bottom .fui-icon,.fui-button.fui-button-layout-bottom .fui-label,.fui-button.fui-button-layout-top .fui-icon,.fui-button.fui-button-layout-top .fui-label{display:block}.fui-button:HOVER{background-color:#d5e1f2!important;color:#000!important}.fui-button:ACTIVE{background-color:#87a9da!important;color:#000!important}.fui-button.fui-disabled:ACTIVE,.fui-button.fui-disabled:HOVER{background-color:#fff!important;color:#000!important}.fui-colorpicker{background-color:#fff}.fui-colorpicker-container{border:1px solid #d3d3d3}.fui-colorpicker-container .fui-colorpicker-title{background:#eee;padding:2px 4px}.fui-colorpicker-container .fui-colorpicker-colors{margin:0;padding:0;font-size:0;line-height:0}.fui-colorpicker-container .fui-colorpicker-colors-line0{margin-bottom:3px}.fui-colorpicker-container .fui-colorpicker-item{display:inline-block;margin:0 2px;width:13px;height:13px;border-style:solid;border-width:1px}.fui-colorpicker-container .fui-colorpicker-commoncolor,.fui-colorpicker-container .fui-colorpicker-standardcolor{margin:4px 3px;white-space:nowrap}.fui-colorpicker-container .fui-colorpicker-toolbar{margin:4px;height:27px}.fui-colorpicker-container .fui-colorpicker-toolbar .fui-colorpicker-preview{display:inline-block;height:25px;line-height:25px;width:120px;border:1px solid #d3d3d3}.fui-colorpicker-container .fui-colorpicker-toolbar .fui-colorpicker-clear{display:inline-block;height:25px;line-height:25px;width:60px;border:1px solid #d3d3d3;font-size:12px;text-align:center;position:absolute;right:5px;cursor:pointer}.fui-dialog{position:fixed;top:-1000000px;left:-100000px;border:1px solid #B1B1B1;background:#fff}.fui-dialog .fui-panel-content{width:auto!important;height:auto!important;padding:2px}.fui-dialog .fui-dialog-caption{margin:0;padding:5px;font-size:16px;font-weight:400;line-height:1;display:inline-block}.fui-dialog .fui-dialog-head .fui-close-button{float:right}.fui-dialog .fui-dialog-head .fui-close-button .fui-close-button-icon{width:16px;height:16px;background:url(images/close.png) no-repeat}.fui-drop-panel{border:1px solid #d3d3d3;overflow:hidden;position:relative}.fui-drop-panel .fui-drop-panel-content{display:inline-block}.fui-drop-panel .fui-drop-panel-placeholder{display:none}.fui-drop-panel .fui-drop-panel-button{border-left:1px solid #d3d3d3;visibility:visible}.fui-drop-panel .fui-drop-panel-button:HOVER{border-color:#d5e1f2}.fui-drop-panel .fui-drop-panel-button:ACTIVE{border-color:#87a9da}.fui-drop-panel:HOVER{border-color:#d5e1f2}.fui-drop-panel:HOVER .fui-drop-panel-button{border-left-color:#d5e1f2}.fui-drop-panel:ACTIVE{border-color:#87a9da}.fui-drop-panel:ACTIVE .fui-drop-panel-button{border-left-color:#d5e1f2}.fui-drop-panel.fui-drop-panel-open{overflow:visible}.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-content{border:1px solid #d3d3d3;position:absolute;top:-1px;left:-1px}.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-button{visibility:hidden}.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-placeholder{display:inline-block}.fui-drop-panel-popup{border:1px solid #d3d3d3}.fui-drop-panel-popup:HOVER{border-color:#d5e1f2}.fui-drop-panel-popup:HOVER .fui-drop-panel-button{border-left-color:#d5e1f2}.fui-drop-panel-popup:ACTIVE{border-color:#87a9da}.fui-drop-panel-popup:ACTIVE .fui-drop-panel-button{border-left-color:#d5e1f2}.fui-icon{text-align:center;font-size:0}.fui-icon img{display:inline-block}.fui-input-button{border:1px solid #ababab}.fui-input-button .fui-input{vertical-align:middle;border:none!important}.fui-input-button .fui-button{vertical-align:middle}.fui-input-button:ACTIVE,.fui-input-button:HOVER{border-color:#87a9da}.fui-input{border:1px solid #d3d3d3;padding:1px;margin:0}.fui-input:FOCUS,.fui-input:HOVER{border-color:#4d90fe!important}.fui-item{font-size:0}.fui-item .fui-icon,.fui-item .fui-label{vertical-align:middle}.fui-item.fui-item-selected{background:#87a9da}.fui-label-panel .fui-label-panel-label{width:100%;color:#666}.fui-label-panel.fui-no-position .fui-label-panel-label{position:static!important}.fui-label-panel.fui-layout-bottom .fui-label-panel-label{position:absolute;bottom:0;left:0;top:auto;z-index:2}.fui-label{cursor:default;display:inline-block;white-space:nowrap}.fui-mask{position:fixed;z-index:99998}.fui-menu{background-color:#fff;border:1px solid #d3d3d3}.fui-menu .fui-item{padding:2px 5px;display:block!important}.fui-menu .fui-item:HOVER{background:#d5e1f2}.fui-panel{display:inline-block;vertical-align:top;overflow-y:auto;overflow-x:hidden}.fui-panel .fui-panel-content{position:relative;top:0;left:0;width:100%;height:100%}.fui-panel.fui-container-column{font-size:0}.fui-panel.fui-container-column .fui-column{display:block}.fui-ppanel::-webkit-scrollbar{width:15px}.fui-ppanel::-webkit-scrollbar-button:end:decrement,.fui-ppanel::-webkit-scrollbar-button:end:increment,.fui-ppanel::-webkit-scrollbar-button:start:decrement,.fui-ppanel::-webkit-scrollbar-button:start:increment,.fui-ppanel::-webkit-scrollbar-thumb{border:1px solid #e7e7e7}.fui-ppanel.fui-ppanel-position{position:fixed;z-index:99999}.fui-separator{background:#6d6d6d}.fui-spin-button .fui-spin-down-btn .fui-icon,.fui-spin-button .fui-spin-up-btn .fui-icon{width:16px;height:9px;background:url(images/up.png) 3px 1.5px no-repeat}.fui-spin-button .fui-spin-down-btn .fui-icon{background-image:url(images/down.png)}.fui-tabs .fui-selected{background-color:#d5e1f2}.fui-toggle-button.fui-button-pressed{background-color:#aec5e6}.fui-toggle-button.fui-button-pressed.fui-disabled{background-color:#aec5e6!important} \ No newline at end of file diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/images/close.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/images/close.png deleted file mode 100644 index 4f8885f..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/images/close.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/images/down.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/images/down.png deleted file mode 100644 index cf92db6..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/images/down.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/images/open.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/images/open.png deleted file mode 100644 index 861a04e..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/images/open.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/images/up.png b/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/images/up.png deleted file mode 100644 index 4e4a6d1..0000000 Binary files a/dzz/system/ueditor/kityformula-plugin/kityformula/assets/theme/default/images/up.png and /dev/null differ diff --git a/dzz/system/ueditor/kityformula-plugin/kityformula/js/jquery-1.11.0.min.js b/dzz/system/ueditor/kityformula-plugin/kityformula/js/jquery-1.11.0.min.js deleted file mode 100644 index 73f33fb..0000000 --- a/dzz/system/ueditor/kityformula-plugin/kityformula/js/jquery-1.11.0.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="
    ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f -}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML="
    a",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/\s*$/g,sb={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:l.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?""!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("':'"}var i=this;return{outputRule:function(i){t.each(i.getNodesByTagName("img"),function(t){var r,i;t.getAttr("class")=="edui-faked-webapp"&&(r=n({title:t.getAttr("title"),width:t.getAttr("width"),height:t.getAttr("height"),align:t.getAttr("align"),cssfloat:t.getStyle("float"),url:t.getAttr("_url"),logo:t.getAttr("_logo_url")},!0),i=UE.uNode.createElement(r),t.parentNode.replaceChild(i,t))})},inputRule:function(i){t.each(i.getNodesByTagName("iframe"),function(t){if(t.getAttr("class")=="edui-faked-webapp"){var i=UE.uNode.createElement(n({title:t.getAttr("title"),width:t.getAttr("width"),height:t.getAttr("height"),align:t.getAttr("align"),cssfloat:t.getStyle("float"),url:t.getAttr("src"),logo:t.getAttr("logo_url")}));t.parentNode.replaceChild(i,t)}})},commands:{webapp:{execCommand:function(i,r){var f=this,u=n(t.extend(r,{align:"none"}),!1);f.execCommand("inserthtml",u)},queryCommandState:function(){var i=this,n=i.selection.getRange().getClosedNode(),t=n&&n.className=="edui-faked-webapp";return t?1:0}}}}}),UE.plugins.template=function(){UE.commands.template={execCommand:function(n,t){t.html&&this.execCommand("inserthtml",t.html)}},this.addListener("click",function(t,i){var u=i.target||i.srcElement,f=this.selection.getRange(),r=n.findParent(u,function(t){if(t.className&&n.hasClass(t,"ue_t"))return t},!0);r&&f.selectNode(r).shrinkBoundary().select()}),this.addListener("keydown",function(t,i){var u=this.selection.getRange(),r;u.collapsed||!i.ctrlKey&&!i.metaKey&&!i.shiftKey&&!i.altKey&&(r=n.findParent(u.startContainer,function(t){if(t.className&&n.hasClass(t,"ue_t"))return t},!0),r&&n.removeClasses(r,["ue_t"]))})},UE.plugin.register("music",function(){function n(n,t,r,u,f,e){return e?'':"'}var i=this;return{outputRule:function(i){t.each(i.getNodesByTagName("img"),function(t){var u,f,i,r;t.getAttr("class")=="edui-faked-music"&&(f=t.getStyle("float"),i=t.getAttr("align"),u=n(t.getAttr("_url"),t.getAttr("width"),t.getAttr("height"),i,f,!0),r=UE.uNode.createElement(u),t.parentNode.replaceChild(r,t))})},inputRule:function(i){t.each(i.getNodesByTagName("embed"),function(t){var u,r,i;t.getAttr("class")=="edui-faked-music"&&(u=t.getStyle("float"),r=t.getAttr("align"),html=n(t.getAttr("src"),t.getAttr("width"),t.getAttr("height"),r,u,!1),i=UE.uNode.createElement(html),t.parentNode.replaceChild(i,t))})},commands:{music:{execCommand:function(t,i){var u=this,r=n(i.url,i.width||400,i.height||95,"none",!1);u.execCommand("inserthtml",r)},queryCommandState:function(){var i=this,n=i.selection.getRange().getClosedNode(),t=n&&n.className=="edui-faked-music";return t?1:0}}}}}),UE.plugin.register("autoupload",function(){function u(i,r){var u=r,p,a,w,l,y,v,o,c,f=/image\/\w+/i.test(i.type)?"image":"file",e="loading_"+(+new Date).toString(36),b;p=u.getOpt(f+"FieldName"),a=u.getOpt(f+"UrlPrefix"),w=u.getOpt(f+"MaxSize"),l=u.getOpt(f+"AllowFiles"),y=u.getActionUrl(u.getOpt(f+"ActionName")),o=function(t){var i=u.document.getElementById(e);i&&n.remove(i),u.fireEvent("showmessage",{id:e,content:t,type:"error",timeout:4e3})},f=="image"?(v='',c=function(t){var r=a+t.url,i=u.document.getElementById(e);i&&(i.setAttribute("src",r),i.setAttribute("_src",r),i.setAttribute("title",t.title||""),i.setAttribute("alt",t.original||""),i.setAttribute("class","dzz-image"),i.setAttribute("path","attach::"+t.attach.aid),i.setAttribute("apath",t.attach.apath),i.setAttribute("aid",t.attach.aid),i.setAttribute("ext",t.attach.filetype),i.setAttribute("dsize",t.attach.filesize),i.removeAttribute("id"),n.removeClasses(i,"loadingclass"))}):(v='

    ',c=function(n){var r=a+n.url,f=u.document.getElementById(e),t=u.selection.getRange(),i=t.createBookmark();t.selectNode(f).select(),u.execCommand("insertfile",{url:r,attach:n.attach}),t.moveToBookmark(i).select()}),u.execCommand("inserthtml",v);if(!u.getOpt(f+"ActionName")){o(u.getLang("autoupload.errorLoadConfig"));return}if(i.size>w){o(u.getLang("autoupload.exceedSizeError"));return}b=i.name?i.name.substr(i.name.lastIndexOf(".")):"";if(l&&(l.join("")+".").indexOf(b.toLowerCase()+".")==-1){o(u.getLang("autoupload.exceedTypeError"));return}var s=new XMLHttpRequest,h=new FormData,d=t.serializeParam(u.queryCommandValue("serverparam"))||"",k=t.formatUrl(y+(y.indexOf("?")==-1?"?":"&")+d);h.append(p,i,i.name||"blob."+i.type.substr("image/".length)),h.append("type","ajax"),s.open("post",k,!0),s.setRequestHeader("X-Requested-With","XMLHttpRequest"),s.addEventListener("load",function(n){try{var i=new Function("return "+t.trim(n.target.response))();i.state=="SUCCESS"&&i.url?c(i):o(i.state)}catch(r){o(u.getLang("autoupload.loadError"))}}),s.send(h)}function r(n){return n.clipboardData&&n.clipboardData.items&&n.clipboardData.items.length==1&&/^image\//.test(n.clipboardData.items[0].type)?n.clipboardData.items:null}function i(n){return n.dataTransfer&&n.dataTransfer.files?n.dataTransfer.files:null}return{outputRule:function(n){t.each(n.getNodesByTagName("img"),function(n){/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr("class"))&&n.parentNode.removeChild(n)}),t.each(n.getNodesByTagName("p"),function(n){/\bloadpara\b/.test(n.getAttr("class"))&&n.parentNode.removeChild(n)})},bindEvents:{ready:function(){var e=this;if(window.FormData&&window.FileReader){n.on(e.body,"paste drop",function(n){var s=!1,f,o,t;f=n.type=="paste"?r(n):i(n);if(f){o=f.length;while(o--)t=f[o],t.getAsFile&&(t=t.getAsFile()),t&&t.size>0&&(u(t,e),s=!0);s&&n.preventDefault()}});n.on(e.body,"dragover",function(n){n.dataTransfer.types[0]=="Files"&&n.preventDefault()});t.cssRule("loading",".loadingclass{display:inline-block;cursor:default;background: url('"+this.options.themePath+this.options.theme+"/images/loading.gif') no-repeat center center transparent;border:1px solid #cccccc;margin-left:1px;height: 22px;width: 22px;}\n.loaderrorclass{display:inline-block;cursor:default;background: url('"+this.options.themePath+this.options.theme+"/images/loaderror.png') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}",this.document)}}}}}),UE.plugin.register("autosave",function(){function r(n){var r;if(new Date-u0?t._saveFlag=window.setTimeout(function(){r(t)},t.options.saveInterval):r(t)}},commands:{clearlocaldata:{execCommand:function(){i&&t.getPreferences(i)&&t.removePreferences(i)},notNeedUndo:!0,ignoreContentChange:!0},getlocaldata:{execCommand:function(){return i?t.getPreferences(i)||"":""},notNeedUndo:!0,ignoreContentChange:!0},drafts:{execCommand:function(){i&&(t.body.innerHTML=t.getPreferences(i)||"

    "+n.fillHtml+"

    ",t.focus(!0))},queryCommandState:function(){return i?t.getPreferences(i)===null?-1:0:-1},notNeedUndo:!0,ignoreContentChange:!0}}}}),UE.plugin.register("charts",function(){function i(n){var o=null,s=0,i,u,e,r,f;if(n.rows.length<2)return!1;if(n.rows[0].cells.length<2)return!1;for(o=n.rows[0].cells,s=o.length,i=0;r=o[i];i++)if(r.tagName.toLowerCase()!=="th")return!1;for(i=1;u=n.rows[i];i++){if(u.cells.length!=s)return!1;if(u.cells[0].tagName.toLowerCase()!=="th")return!1;for(e=1;r=u.cells[e];e++){f=t.trim(r.innerText||r.textContent||""),f=f.replace(new RegExp(UE.dom.domUtils.fillChar,"g"),"").replace(/^\s+|\s+$/g,"");if(!/^\d*\.?\d+$/.test(f))return!1}}return!0}var r=this;return{bindEvents:{chartserror:function(){}},commands:{charts:{execCommand:function(t,u){var o=n.findParentByTagName(this.selection.getRange().startContainer,"table",!0),s=[],f={},e;if(!o)return!1;if(!i(o))return r.fireEvent("chartserror"),!1;f.title=u.title||"",f.subTitle=u.subTitle||"",f.xTitle=u.xTitle||"",f.yTitle=u.yTitle||"",f.suffix=u.suffix||"",f.tip=u.tip||"",f.dataFormat=u.tableDataFormat||"",f.chartType=u.chartType||0;for(e in f){if(!f.hasOwnProperty(e))continue;s.push(e+":"+f[e])}o.setAttribute("data-chart",s.join(";")),n.addClass(o,"edui-charts-table")},queryCommandState:function(){var u=n.findParentByTagName(this.selection.getRange().startContainer,"table",!0);return u&&i(u)?0:-1}}},inputRule:function(n){t.each(n.getNodesByTagName("table"),function(n){n.getAttr("data-chart")!==undefined&&n.setAttr("style")})},outputRule:function(n){t.each(n.getNodesByTagName("table"),function(n){n.getAttr("data-chart")!==undefined&&n.setAttr("style","display: none;")})}}}),UE.plugin.register("section",function(){function f(){this.tag="",this.level=-1,this.dom=null,this.nextSection=null,this.previousSection=null,this.parentSection=null,this.startAddress=[],this.endAddress=[],this.children=[]}function u(n){var i=new f;return t.extend(i,n)}function r(n,t){for(var r=t,i=0;i=0){y=h.selection.getRange().selectNode(r).createAddress(!0).startAddress,o=u({tag:r.tagName,title:r.innerText||r.textContent||"",level:v,dom:r,startAddress:t.clone(y,[]),endAddress:t.clone(y,[]),children:[]}),e.nextSection=o,o.previousSection=e,f=e;while(v<=f.level)f=f.parentSection;o.parentSection=f,f.children.push(o),a=e=o}else r.nodeType===1&&s(r,i),a&&a.endAddress[a.endAddress.length-1]++}}for(var f=i||["h1","h2","h3","h4","h5","h6"],r=0;r=i.length)break;if(i[r]>n[r]){u=!0;break}else if(i[r]=i.length)break;if(i[r]n[r])break}return u&&f}var c=this,l,o,a,s,e,h;if(!i||!u||u.level==-1)return;l=f?u.endAddress:u.startAddress,o=r(l,c.body);if(!l||!o||v(i.startAddress,i.endAddress,l))return;a=r(i.startAddress,c.body),s=r(i.endAddress,c.body);if(f){e=s;while(e&&!(n.getPosition(a,e)&n.POSITION_FOLLOWING)){h=e.previousSibling,n.insertAfter(o,e);if(e==a)break;e=h}}else{e=a;while(e&&!(n.getPosition(e,s)&n.POSITION_FOLLOWING)){h=e.nextSibling,o.parentNode.insertBefore(e,o);if(e==s)break;e=h}}c.fireEvent("updateSections")}},deletesection:{execCommand:function(t,i,r){function s(n){for(var i=f.body,t=0;t',a.className="edui-"+i.options.theme,a.id=i.ui.id+"_iframeupload",r.style.cssText=e,r.style.width=o+"px",r.style.height=s+"px",r.appendChild(a),r.parentNode&&(r.parentNode.style.width=o+"px",r.parentNode.style.height=o+"px");var y=c.getElementById("edui_form_"+h),l=c.getElementById("edui_input_"+h),v=c.getElementById("edui_iframe_"+h);n.on(l,"change",function(){function h(){try{var e,f,t,o=(v.contentDocument||v.contentWindow.document).body,s=o.innerText||o.textContent||"";f=new Function("return "+s)(),e=i.options.imageUrlPrefix+f.url,f.state=="SUCCESS"&&f.url?(t=i.document.getElementById(u),t.setAttribute("src",e),t.setAttribute("_src",e),t.setAttribute("title",f.title||""),t.setAttribute("alt",f.original||""),t.setAttribute("class","dzz-image"),t.setAttribute("path","attach::"+f.attach.aid),t.setAttribute("apath",f.attach.apath),t.setAttribute("aid",f.attach.aid),t.setAttribute("ext",f.attach.filetype),t.setAttribute("dsize",f.attach.filesize),t.removeAttribute("id"),n.removeClasses(t,"loadingclass")):r&&r(f.state)}catch(c){r&&r(i.getLang("simpleupload.loadError"))}y.reset(),n.un(v,"load",h)}function r(t){if(u){var r=i.document.getElementById(u);r&&n.remove(r),i.fireEvent("showmessage",{id:u,content:t,type:"error",timeout:4e3})}}var f,e;if(!l.value)return;var u="loading_"+(+new Date).toString(36),c=t.serializeParam(i.queryCommandValue("serverparam"))||"",s=i.getActionUrl(i.getOpt("imageActionName")),o=i.getOpt("imageAllowFiles");i.focus(),i.execCommand("inserthtml",'');if(!i.getOpt("imageActionName")){errorHandler(i.getLang("autoupload.errorLoadConfig"));return}f=l.value,e=f?f.substr(f.lastIndexOf(".")):"";if(!e||o&&(o.join("")+".").indexOf(e.toLowerCase()+".")==-1){r(i.getLang("simpleupload.exceedTypeError"));return}n.on(v,"load",h);y.action=t.formatUrl(s+(s.indexOf("?")==-1?"?":"&")+c),y.submit()});i.addListener("selectionchange",function(){clearTimeout(p),p=setTimeout(function(){var n=i.queryCommandState("simpleupload");l.disabled=n==-1?"disabled":!1},400)}),u=!0});f.style.cssText=e,r.appendChild(f)}var i=this,u=!1,r;return{bindEvents:{ready:function(){t.cssRule("loading",".loadingclass{display:inline-block;cursor:default;background: url('"+this.options.themePath+this.options.theme+"/images/loading.gif') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}\n.loaderrorclass{display:inline-block;cursor:default;background: url('"+this.options.themePath+this.options.theme+"/images/loaderror.png') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}",this.document)},simpleuploadbtnready:function(n,t){r=t,i.afterConfigReady(f)}},outputRule:function(n){t.each(n.getNodesByTagName("img"),function(n){/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr("class"))&&n.parentNode.removeChild(n)})},commands:{simpleupload:{queryCommandState:function(){return u?0:-1}}}}}),UE.plugin.register("serverparam",function(){var i=this,n={};return{commands:{serverparam:{execCommand:function(i,r,u){r===undefined||r===null?n={}:t.isString(r)?u===undefined||u===null?delete n[r]:n[r]=u:t.isObject(r)?t.extend(n,r,!0):t.isFunction(r)&&t.extend(n,r(),!0)},queryCommandValue:function(){return n||{}}}}}}),UE.plugin.register("insertfile",function(){function i(n){var i=n.substr(n.lastIndexOf(".")+1).toLowerCase(),t={rar:"icon_rar.gif",zip:"icon_rar.gif",tar:"icon_rar.gif",gz:"icon_rar.gif",bz2:"icon_rar.gif",doc:"icon_doc.gif",docx:"icon_doc.gif",pdf:"icon_pdf.gif",mp3:"icon_mp3.gif",xls:"icon_xls.gif",chm:"icon_chm.gif",ppt:"icon_ppt.gif",pptx:"icon_ppt.gif",avi:"icon_mv.gif",rmvb:"icon_mv.gif",wmv:"icon_mv.gif",flv:"icon_mv.gif",swf:"icon_mv.gif",rm:"icon_mv.gif",exe:"icon_exe.gif",psd:"icon_psd.gif",txt:"icon_txt.gif",jpg:"icon_jpg.gif",png:"icon_jpg.gif",jpeg:"icon_jpg.gif",gif:"icon_jpg.gif",ico:"icon_jpg.gif",bmp:"icon_jpg.gif"};return t[i]?t[i]:t.txt}var n=this;return{commands:{insertfile:{execCommand:function(r,u){u=t.isArray(u)?u:[u];for(var f,o,e,c="",h=n.getOpt("UEDITOR_HOME_URL"),l=h+(h.substr(h.length-1)=="/"?"":"/")+"dialogs/attachment/fileTypeImages/",s=0;s0?''+e+"":'

    '+e+"

    ";n.execCommand("insertHtml",c)}}}}}),u=u||{},u.editor=u.editor||{},UE.ui=u.editor.ui={},(function(){function f(){var n=document.getElementById("edui_fixedlayer");t.setViewportOffset(n,{left:0,top:0})}function h(){i.on(window,"scroll",f);i.on(window,"resize",u.editor.utils.defer(f,0,!0))}var n=u.editor.browser,i=u.editor.dom.domUtils,r="$EDITORUI",o=window[r]={},s="ID"+r,e=0,t=u.editor.ui.uiUtils={uid:function(n){return n?n[s]||(n[s]=++e):++e},hook:function(n,t){var i;return n&&n._callbacks?i=n:(i=function(){var t,u,r,f;n&&(t=n.apply(this,arguments)),u=i._callbacks,r=u.length;while(r--)f=u[r].apply(this,arguments),t===undefined&&(t=f);return t},i._callbacks=[]),i._callbacks.push(t),i},createElementByHtml:function(n){var t=document.createElement("div");return t.innerHTML=n,t=t.firstChild,t.parentNode.removeChild(t),t},getViewportElement:function(){return n.ie&&n.quirks?document.body:document.documentElement},getClientRect:function(n){var t,r,u;try{t=n.getBoundingClientRect()}catch(f){t={left:0,top:0,height:0,width:0}}r={left:Math.round(t.left),top:Math.round(t.top),height:Math.round(t.bottom-t.top),width:Math.round(t.right-t.left)};while((u=n.ownerDocument)!==document&&(n=i.getWindow(u).frameElement))t=n.getBoundingClientRect(),r.left+=t.left,r.top+=t.top;return r.bottom=r.top+r.height,r.right=r.left+r.width,r},getViewportRect:function(){var r=t.getViewportElement(),i=(window.innerWidth||r.clientWidth)|0,n=(window.innerHeight||r.clientHeight)|0;return{left:0,top:0,height:n,width:i,bottom:n,right:i}},setViewportOffset:function(n,r){var f,u=t.getFixedLayer();n.parentNode===u?(n.style.left=r.left+"px",n.style.top=r.top+"px"):i.setViewportOffset(n,r)},getEventOffset:function(n){var u=n.target||n.srcElement,i=t.getClientRect(u),r=t.getViewportOffsetByEvent(n);return{left:r.left-i.left,top:r.top-i.top}},getViewportOffsetByEvent:function(n){var e=n.target||n.srcElement,f=i.getWindow(e).frameElement,r={left:n.clientX,top:n.clientY},u;return f&&e.ownerDocument!==document&&(u=t.getClientRect(f),r.left+=u.left,r.top+=u.top),r},setGlobal:function(n,t){return o[n]=t,r+'["'+n+'"]'},unsetGlobal:function(n){delete o[n]},copyAttributes:function(t,r){var f=r.attributes,e=f.length,u;while(e--)u=f[e],u.nodeName!="style"&&u.nodeName!="class"&&(!n.ie||u.specified)&&t.setAttribute(u.nodeName,u.nodeValue);r.className&&i.addClass(t,r.className),r.style.cssText&&(t.style.cssText+=";"+r.style.cssText)},removeStyle:function(n,t){if(n.style.removeProperty)n.style.removeProperty(t);else if(n.style.removeAttribute)n.style.removeAttribute(t);else throw"";},contains:function(n,t){return n&&t&&(n===t?!1:n.contains?n.contains(t):n.compareDocumentPosition(t)&16)},startDrag:function(n,t,i){function f(n){var r=n.clientX-s,i=n.clientY-o;t.ondragmove(r,i,n);n.stopPropagation?n.stopPropagation():n.cancelBubble=!0}var i=i||document,s=n.clientX,o=n.clientY,r;if(i.addEventListener){function u(){i.removeEventListener("mousemove",f,!0),i.removeEventListener("mouseup",u,!0),window.removeEventListener("mouseup",u,!0),t.ondragstop()}i.addEventListener("mousemove",f,!0),i.addEventListener("mouseup",u,!0),window.addEventListener("mouseup",u,!0),n.preventDefault()}else{r=n.srcElement,r.setCapture();function e(){r.releaseCapture(),r.detachEvent("onmousemove",f),r.detachEvent("onmouseup",e),r.detachEvent("onlosecaptrue",e),t.ondragstop()}r.attachEvent("onmousemove",f),r.attachEvent("onmouseup",e),r.attachEvent("onlosecaptrue",e),n.returnValue=!1}t.ondragstart()},getFixedLayer:function(){var t=document.getElementById("edui_fixedlayer");return t==null&&(t=document.createElement("div"),t.id="edui_fixedlayer",document.body.appendChild(t),n.ie&&n.version<=8?(t.style.position="absolute",h(),setTimeout(f)):t.style.position="fixed",t.style.left="0",t.style.top="0",t.style.width="0",t.style.height="0"),t},makeUnselectable:function(i){if(n.opera||n.ie&&n.version<9){i.unselectable="on";if(i.hasChildNodes())for(var r=0;r'}},t.inherits(n,i)})(),(function(){var i=u.editor.utils,r=u.editor.dom.domUtils,f=u.editor.ui.UIBase,t=u.editor.ui.uiUtils,n=u.editor.ui.Mask=function(n){this.initOptions(n),this.initUIBase()};n.prototype={getHtmlTpl:function(){return'
    '},postRender:function(){var n=this;r.on(window,"resize",function(){setTimeout(function(){n.isHidden()||n._fill()})})},show:function(n){this._fill(),this.getDom().style.display="",this.getDom().style.zIndex=n},hide:function(){this.getDom().style.display="none",this.getDom().style.zIndex=""},isHidden:function(){return this.getDom().style.display=="none"},_onMouseDown:function(){return!1},_onClick:function(n,t){this.fireEvent("click",n,t)},_fill:function(){var i=this.getDom(),n=t.getViewportRect();i.style.width=n.width+"px",i.style.height=n.height+"px"}},i.inherits(n,f)})(),(function(){function r(n,t){for(var r,u=0;u
    '+this.getContentHtmlTpl()+"
    "},getContentHtmlTpl:function(){return this.content?typeof this.content=="string"?this.content:this.content.renderHtml():""},_UIBase_postRender:e.prototype.postRender,postRender:function(){this.content instanceof e&&this.content.postRender();if(this.captureWheel&&!this.captured){this.captured=!0;var o=(document.documentElement.clientHeight||document.body.clientHeight)-80,u=this.getDom().offsetHeight,s=n.getClientRect(this.combox.getDom()).top,r=this.getDom("content"),i=this.getDom("body").getElementsByTagName("iframe"),f=this;i.length&&(i=i[0]);while(s+u>o)u-=30;r.style.height=u+"px",i&&(i.style.height=u+"px");if(window.XMLHttpRequest)t.on(r,"onmousewheel"in document.body?"mousewheel":"DOMMouseScroll",function(n){n.preventDefault?n.preventDefault():n.returnValue=!1,r.scrollTop-=n.wheelDelta?n.wheelDelta/2:n.detail*-20});else t.on(this.getDom(),"mousewheel",function(n){n.returnValue=!1,f.getDom("content").scrollTop-=n.wheelDelta/2})}this.fireEvent("postRenderAfter"),this.hide(!0),this._UIBase_postRender()},_doAutoRender:function(){!this.getDom()&&this.autoRender&&this.render()},mesureSize:function(){var t=this.getDom("content");return n.getClientRect(t)},fitSize:function(){var t,n,i;return this.captureWheel&&this.sized?this.__size:(this.sized=!0,t=this.getDom("body"),t.style.width="",t.style.height="",n=this.mesureSize(),this.captureWheel?(t.style.width=-(-20-n.width)+"px",i=parseInt(this.getDom("content").style.height,10),!window.isNaN(i)&&(n.height=i)):t.style.width=n.width+"px",t.style.height=n.height+"px",this.__size=n,this.captureWheel&&(this.getDom("content").style.overflow="auto"),n)},showAnchor:function(t,i){this.showAnchorRect(n.getClientRect(t),i)},showAnchorRect:function(i,r){var h,e,l,c,a,v,s;this._doAutoRender(),h=n.getViewportRect(),this.getDom().style.visibility="hidden",this._show(),e=this.fitSize(),r?(l=this.canSideLeft&&i.right+e.width>h.right&&i.left>e.width,c=this.canSideUp&&i.top+e.height>h.bottom&&i.bottom>e.height,a=l?i.left-e.width:i.right,v=c?i.bottom-e.height:i.top):(l=this.canSideLeft&&i.right+e.width>h.right&&i.left>e.width,c=this.canSideUp&&i.top+e.height>h.bottom&&i.bottom>e.height,a=l?i.right-e.width:i.left,v=c?i.top-e.height:i.bottom),s=this.getDom(),n.setViewportOffset(s,{left:a,top:v}),t.removeClasses(s,o),s.className+=" "+o[(c?1:0)*2+(l?1:0)],this.editor&&(s.style.zIndex=this.editor.container.style.zIndex*1+10,u.editor.ui.uiUtils.getFixedLayer().style.zIndex=s.style.zIndex-1),this.getDom().style.visibility="visible"},showAt:function(n){var i=n.left,t=n.top,r={left:i,top:t,right:i,bottom:t,height:0,width:0};this.showAnchorRect(r,!1,!0)},_show:function(){if(this._hidden){var n=this.getDom();n.style.display="",this._hidden=!1,this.fireEvent("show")}},isHidden:function(){return this._hidden},show:function(){this._doAutoRender(),this._show()},hide:function(n){!this._hidden&&this.getDom()&&(this.getDom().style.display="none",this._hidden=!0,n||this.fireEvent("hide"))},queryAutoHide:function(t){return!t||!n.contains(this.getDom(),t)}},s.inherits(f,e);t.on(document,"mousedown",function(n){var t=n.target||n.srcElement;r(n,t)});t.on(window,"scroll",function(n,t){r(n,t)})})(),(function(){function i(t,i){for(var u='
    '+t+'
    ',r=0;r"+(r==60?'":"")+""),u+=r<70?'':"";return u+="
    '+i.getLang("themeColor")+'
    '+i.getLang("standardColor")+"
    =60?"border-width:1px;":r>=10&&r<20?"border-width:1px 1px 0 1px;":"border-width:0 1px 0 1px;")+'">
    "}var f=u.editor.utils,r=u.editor.ui.UIBase,t=u.editor.ui.ColorPicker=function(n){this.initOptions(n),this.noColorText=this.noColorText||this.editor.getLang("clearColor"),this.initUIBase()},n;t.prototype={getHtmlTpl:function(){return i(this.noColorText,this.editor)},_onTableClick:function(n){var i=n.target||n.srcElement,t=i.getAttribute("data-color");t&&this.fireEvent("pickcolor",t)},_onTableOver:function(n){var i=n.target||n.srcElement,t=i.getAttribute("data-color");t&&(this.getDom("preview").style.backgroundColor=t)},_onTableOut:function(){this.getDom("preview").style.backgroundColor=""},_onPickNoColor:function(){this.fireEvent("picknocolor")}},f.inherits(t,r),n="ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646,f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada,d8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5,bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f,a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09,7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806,c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,".split(",")})(),(function(){var r=u.editor.utils,n=u.editor.ui.uiUtils,t=u.editor.ui.UIBase,i=u.editor.ui.TablePicker=function(n){this.initOptions(n),this.initTablePicker()};i.prototype={defaultNumRows:10,defaultNumCols:10,maxNumRows:20,maxNumCols:20,numRows:10,numCols:10,lengthOfCellSide:22,initTablePicker:function(){this.initUIBase()},getHtmlTpl:function(){var n=this;return'
    '},_UIBase_render:t.prototype.render,render:function(n){this._UIBase_render(n),this.getDom("label").innerHTML="0"+this.editor.getLang("t_row")+" x 0"+this.editor.getLang("t_col")},_track:function(n,t){var u=this.getDom("overlay").style,r=this.lengthOfCellSide,i;u.width=n*r+"px",u.height=t*r+"px",i=this.getDom("label"),i.innerHTML=n+this.editor.getLang("t_col")+" x "+t+this.editor.getLang("t_row"),this.numCols=n,this.numRows=t},_onMouseOver:function(t,i){var r=t.relatedTarget||t.fromElement;!n.contains(i,r)&&i!==r&&(this.getDom("label").innerHTML="0"+this.editor.getLang("t_col")+" x 0"+this.editor.getLang("t_row"),this.getDom("overlay").style.visibility="")},_onMouseOut:function(t,i){var r=t.relatedTarget||t.toElement;!n.contains(i,r)&&i!==r&&(this.getDom("label").innerHTML="0"+this.editor.getLang("t_col")+" x 0"+this.editor.getLang("t_row"),this.getDom("overlay").style.visibility="hidden")},_onMouseMove:function(t){var o=this.getDom("overlay").style,u=n.getEventOffset(t),r=this.lengthOfCellSide,e=Math.ceil(u.left/r),f=Math.ceil(u.top/r);this._track(e,f)},_onClick:function(){this.fireEvent("picktable",this.numCols,this.numRows)}},r.inherits(i,t)})(),(function(){var r=u.editor.browser,t=u.editor.dom.domUtils,n=u.editor.ui.uiUtils,i='onmousedown="$$.Stateful_onMouseDown(event, this);" onmouseup="$$.Stateful_onMouseUp(event, this);"'+(r.ie?' onmouseenter="$$.Stateful_onMouseEnter(event, this);" onmouseleave="$$.Stateful_onMouseLeave(event, this);"':' onmouseover="$$.Stateful_onMouseOver(event, this);" onmouseout="$$.Stateful_onMouseOut(event, this);"');u.editor.ui.Stateful={alwalysHoverable:!1,target:null,Stateful_init:function(){this._Stateful_dGetHtmlTpl=this.getHtmlTpl,this.getHtmlTpl=this.Stateful_getHtmlTpl},Stateful_getHtmlTpl:function(){var n=this._Stateful_dGetHtmlTpl();return n.replace(/stateful/g,function(){return i})},Stateful_onMouseEnter:function(n,t){this.target=t,(!this.isDisabled()||this.alwalysHoverable)&&(this.addState("hover"),this.fireEvent("over"))},Stateful_onMouseLeave:function(){(!this.isDisabled()||this.alwalysHoverable)&&(this.removeState("hover"),this.removeState("active"),this.fireEvent("out"))},Stateful_onMouseOver:function(t,i){var r=t.relatedTarget;!n.contains(i,r)&&i!==r&&this.Stateful_onMouseEnter(t,i)},Stateful_onMouseOut:function(t,i){var r=t.relatedTarget;!n.contains(i,r)&&i!==r&&this.Stateful_onMouseLeave(t,i)},Stateful_onMouseDown:function(){this.isDisabled()||this.addState("active")},Stateful_onMouseUp:function(){this.isDisabled()||this.removeState("active")},Stateful_postRender:function(){this.disabled&&!this.hasState("disabled")&&this.addState("disabled")},hasState:function(n){return t.hasClass(this.getStateDom(),"edui-state-"+n)},addState:function(n){this.hasState(n)||(this.getStateDom().className+=" edui-state-"+n)},removeState:function(n){this.hasState(n)&&t.removeClasses(this.getStateDom(),["edui-state-"+n])},getStateDom:function(){return this.getDom("state")},isChecked:function(){return this.hasState("checked")},setChecked:function(n){!this.isDisabled()&&n?this.addState("checked"):this.removeState("checked")},isDisabled:function(){return this.hasState("disabled")},setDisabled:function(n){n?(this.removeState("hover"),this.removeState("checked"),this.removeState("active"),this.addState("disabled")):this.removeState("disabled")}}})(),(function(){var t=u.editor.utils,i=u.editor.ui.UIBase,r=u.editor.ui.Stateful,n=u.editor.ui.Button=function(n){if(n.name){var t=n.name,i=n.cssRules;n.className||(n.className="edui-for-"+t),n.cssRules=".edui-default .edui-for-"+t+" .edui-icon {"+i+"}"}this.initOptions(n),this.initButton()};n.prototype={uiName:"button",label:"",title:"",showIcon:!0,showText:!0,cssRules:"",initButton:function(){this.initUIBase(),this.Stateful_init(),this.cssRules&&t.cssRule("edui-customize-"+this.name+"-style",this.cssRules)},getHtmlTpl:function(){return'
    '+(this.showIcon?'
    ':"")+(this.showText?'
    '+this.label+"
    ":"")+"
    "},postRender:function(){this.Stateful_postRender(),this.setDisabled(this.disabled)},_onMouseDown:function(n){var i=n.target||n.srcElement,t=i&&i.tagName&&i.tagName.toLowerCase();if(t=="input"||t=="object"||t=="object")return!1},_onClick:function(){this.isDisabled()||this.fireEvent("click")},setTitle:function(n){var t=this.getDom("label");t.innerHTML=n}},t.inherits(n,i),t.extend(n.prototype,r)})(),(function(){var n=u.editor.utils,i=u.editor.ui.uiUtils,e=u.editor.dom.domUtils,r=u.editor.ui.UIBase,f=u.editor.ui.Stateful,t=u.editor.ui.SplitButton=function(n){this.initOptions(n),this.initSplitButton()};t.prototype={popup:null,uiName:"splitbutton",title:"",initSplitButton:function(){var t,n;this.initUIBase(),this.Stateful_init(),t=this,this.popup!=null&&(n=this.popup,this.popup=null,this.setPopup(n))},_UIBase_postRender:r.prototype.postRender,postRender:function(){this.Stateful_postRender(),this._UIBase_postRender()},setPopup:function(t){if(this.popup===t)return;this.popup!=null&&this.popup.dispose(),t.addListener("show",n.bind(this._onPopupShow,this)),t.addListener("hide",n.bind(this._onPopupHide,this)),t.addListener("postrender",n.bind(function(){t.getDom("body").appendChild(i.createElementByHtml('
    ')),t.getDom().className+=" "+this.className},this)),this.popup=t},_onPopupShow:function(){this.addState("opened")},_onPopupHide:function(){this.removeState("opened")},getHtmlTpl:function(){return'
    '},showPopup:function(){var n=i.getClientRect(this.getDom());n.top-=this.popup.SHADOW_RADIUS,n.height+=this.popup.SHADOW_RADIUS,this.popup.showAnchorRect(n)},_onArrowClick:function(){this.isDisabled()||this.showPopup()},_onButtonClick:function(){this.isDisabled()||this.fireEvent("buttonclick")}},n.inherits(t,r),n.extend(t.prototype,f,!0)})(),(function(){var i=u.editor.utils,f=u.editor.ui.uiUtils,e=u.editor.ui.ColorPicker,r=u.editor.ui.Popup,n=u.editor.ui.SplitButton,t=u.editor.ui.ColorButton=function(n){this.initOptions(n),this.initColorButton()};t.prototype={initColorButton:function(){var n=this;this.popup=new r({content:new e({noColorText:n.editor.getLang("clearColor"),editor:n.editor,onpickcolor:function(t,i){n._onPickColor(i)},onpicknocolor:function(t,i){n._onPickNoColor(i)}}),editor:n.editor}),this.initSplitButton()},_SplitButton_postRender:n.prototype.postRender,postRender:function(){this._SplitButton_postRender(),this.getDom("button_body").appendChild(f.createElementByHtml('
    ')),this.getDom().className+=" edui-colorbutton"},setColor:function(n){this.getDom("colorlump").style.backgroundColor=n,this.color=n},_onPickColor:function(n){this.fireEvent("pickcolor",n)!==!1&&(this.setColor(n),this.popup.hide())},_onPickNoColor:function(){this.fireEvent("picknocolor")!==!1&&this.popup.hide()}},i.inherits(t,n)})(),(function(){var i=u.editor.utils,r=u.editor.ui.Popup,f=u.editor.ui.TablePicker,t=u.editor.ui.SplitButton,n=u.editor.ui.TableButton=function(n){this.initOptions(n),this.initTableButton()};n.prototype={initTableButton:function(){var n=this;this.popup=new r({content:new f({editor:n.editor,onpicktable:function(t,i,r){n._onPickTable(i,r)}}),editor:n.editor}),this.initSplitButton()},_onPickTable:function(n,t){this.fireEvent("picktable",n,t)!==!1&&this.popup.hide()}},i.inherits(n,t)})(),(function(){var i=u.editor.utils,t=u.editor.ui.UIBase,n=u.editor.ui.AutoTypeSetPicker=function(n){this.initOptions(n),this.initAutoTypeSetPicker()};n.prototype={initAutoTypeSetPicker:function(){this.initUIBase()},getHtmlTpl:function(){var i=this.editor,n=i.options.autotypeset,t=i.getLang("autoTypeSet"),u="textAlignValue"+i.uid,r="imageBlockLineValue"+i.uid,f="symbolConverValue"+i.uid;return'
    "+t.mergeLine+'"+t.delLine+'
    "+t.removeFormat+'"+t.indent+'
    "+t.alignment+'"+i.getLang("justifyleft")+'"+i.getLang("justifycenter")+'"+i.getLang("justifyright")+'
    "+t.imageFloat+'"+i.getLang("default")+'"+i.getLang("justifyleft")+'"+i.getLang("justifycenter")+'"+i.getLang("justifyright")+'
    "+t.removeFontsize+'"+t.removeFontFamily+'
    "+t.removeHtml+'
    "+t.pasteFilter+'
    "+t.symbol+'"+t.bdc2sb+'"+t.tobdc+'
    "},_UIBase_render:t.prototype.render},i.inherits(n,t)})(),(function(){function t(t){for(var i={},p=t.getDom(),b=t.editor.uid,y=null,u=null,v=n.getElementsByTagName(p,"input"),f,e,l,w,h,a,c,s,o=v.length-1;f=v[o--];){y=f.getAttribute("type");if(y=="checkbox"){u=f.getAttribute("name"),i[u]&&delete i[u];if(f.checked){e=document.getElementById(u+"Value"+b);if(e){if(/input/ig.test(e.tagName))i[u]=e.value;else for(l=e.getElementsByTagName("input"),w=l.length-1;h=l[w--];)if(h.checked){i[u]=h.value;break}}else i[u]=!0}else i[u]=!1}else i[f.getAttribute("value")]=f.checked}for(a=n.getElementsByTagName(p,"select"),o=0;c=a[o++];)s=c.getAttribute("name"),i[s]=i[s]?c.value:"";r.extend(t.editor.options.autotypeset,i),t.editor.setPreferences("autotypeset",i)}var r=u.editor.utils,e=u.editor.ui.Popup,f=u.editor.ui.AutoTypeSetPicker,o=u.editor.ui.SplitButton,i=u.editor.ui.AutoTypeSetButton=function(n){this.initOptions(n),this.initAutoTypeSetButton()};i.prototype={initAutoTypeSetButton:function(){var i=this,r;this.popup=new e({content:new f({editor:i.editor}),editor:i.editor,hide:function(){!this._hidden&&this.getDom()&&(t(this),this.getDom().style.display="none",this._hidden=!0,this.fireEvent("hide"))}}),r=0,this.popup.addListener("postRenderAfter",function(){var f=this,u,e;if(r)return;u=this.getDom(),e=u.getElementsByTagName("button")[0],e.onclick=function(){t(f),i.editor.execCommand("autotypeset"),f.hide()};n.on(u,"click",function(n){var r=n.target||n.srcElement,s=i.editor.uid,u,o;if(r&&r.tagName=="INPUT"){if(r.name=="imageBlockLine"||r.name=="textAlign"||r.name=="symbolConver"){var c=r.checked,h=document.getElementById(r.name+"Value"+s),e=h.getElementsByTagName("input"),l={imageBlockLine:"none",textAlign:"left",symbolConver:"tobdc"};for(u=0;u"),i.push('
    '),t===2&&i.push("");return'
    '+i.join("")+"
    "},getStateDom:function(){return this.target},_onClick:function(n){var t=n.target||n.srcElement;/icon/.test(t.className)&&(this.items[t.parentNode.getAttribute("index")].onclick(),f.postHide(n))},_UIBase_render:t.prototype.render},i.inherits(n,t),i.extend(n.prototype,r,!0)})(),(function(){var r=u.editor.utils,e=u.editor.ui.Stateful,f=u.editor.ui.uiUtils,i=u.editor.ui.UIBase,t=u.editor.ui.PastePicker=function(n){this.initOptions(n),this.initPastePicker()};t.prototype={initPastePicker:function(){this.initUIBase(),this.Stateful_init()},getHtmlTpl:function(){return'
    '+this.editor.getLang("pasteOpt")+'
    '},getStateDom:function(){return this.target},format:function(n){this.editor.ui._isTransfer=!0,this.editor.fireEvent("pasteTransfer",n)},_onClick:function(t){var i=n.getNextDomNode(t),u=f.getViewportRect().height,r=f.getClientRect(i);i.style.top=r.top+r.height>u?-r.height-t.offsetHeight+"px":"",/hidden/ig.test(n.getComputedStyle(i,"visibility"))?(i.style.visibility="visible",n.addClass(t,"edui-state-opened")):(i.style.visibility="hidden",n.removeClasses(t,"edui-state-opened"))},_UIBase_render:i.prototype.render},r.inherits(t,i),r.extend(t.prototype,e,!0)})(),(function(){var t=u.editor.utils,r=u.editor.ui.uiUtils,i=u.editor.ui.UIBase,n=u.editor.ui.Toolbar=function(n){this.initOptions(n),this.initToolbar()};n.prototype={items:null,initToolbar:function(){this.items=this.items||[],this.initUIBase()},add:function(n,t){t===undefined?this.items.push(n):this.items.splice(t,0,n)},getHtmlTpl:function(){for(var t=[],n=0;n'+t.join("")+""},postRender:function(){for(var t=this.getDom(),n=0;n
    '},postRender:function(){},queryAutoHide:function(){return!0}},n;f.prototype={items:null,uiName:"menu",initMenu:function(){this.items=this.items||[],this.initPopup(),this.initItems()},initItems:function(){for(var t,i=0;i'+t.join("")+""},_Popup_postRender:t.prototype.postRender,postRender:function(){for(var u=this,t,n=0;n
    '+this.renderLabelHtml()+"
    "},postRender:function(){var n=this;this.addListener("over",function(){n.ownerMenu.fireEvent("submenuover",n),n.subMenu&&n.delayShowSubMenu()}),this.subMenu&&(this.getDom().className+=" edui-hassubmenu",this.subMenu.render(),this.addListener("out",function(){n.delayHideSubMenu()}),this.subMenu.addListener("over",function(){clearTimeout(n._closingTimer),n._closingTimer=null,n.addState("opened")}),this.ownerMenu.addListener("hide",function(){n.hideSubMenu()}),this.ownerMenu.addListener("submenuover",function(t,i){i!==n&&n.delayHideSubMenu()}),this.subMenu._bakQueryAutoHide=this.subMenu.queryAutoHide,this.subMenu.queryAutoHide=function(t){return t&&i.contains(n.getDom(),t)?!1:this._bakQueryAutoHide(t)}),this.getDom().style.tabIndex="-1",i.makeUnselectable(this.getDom()),this.Stateful_postRender()},delayShowSubMenu:function(){var n=this;n.isDisabled()||(n.addState("opened"),clearTimeout(n._showingTimer),clearTimeout(n._closingTimer),n._closingTimer=null,n._showingTimer=setTimeout(function(){n.showSubMenu()},250))},delayHideSubMenu:function(){var n=this;n.isDisabled()||(n.removeState("opened"),clearTimeout(n._showingTimer),n._closingTimer||(n._closingTimer=setTimeout(function(){n.hasState("opened")||n.hideSubMenu(),n._closingTimer=null},400)))},renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "},getStateDom:function(){return this.getDom()},queryAutoHide:function(n){if(this.subMenu&&this.hasState("opened"))return this.subMenu.queryAutoHide(n)},_onClick:function(n,i){if(this.hasState("disabled"))return;this.fireEvent("click",n,i)!==!1&&(this.subMenu?this.showSubMenu():t.postHide(n))},showSubMenu:function(){var n=i.getClientRect(this.getDom());n.right-=5,n.left+=2,n.width-=7,n.top-=4,n.bottom+=4,n.height+=8,this.subMenu.showAnchorRect(n,!0,!0)},hideSubMenu:function(){this.subMenu.hide()}},e.inherits(n,o),e.extend(n.prototype,h,!0)})(),(function(){var i=u.editor.utils,r=u.editor.ui.uiUtils,f=u.editor.ui.Menu,n=u.editor.ui.SplitButton,t=u.editor.ui.Combox=function(n){this.initOptions(n),this.initCombox()};t.prototype={uiName:"combox",onbuttonclick:function(){this.showPopup()},initCombox:function(){var i=this,n,t;for(this.items=this.items||[],n=0;nu.right&&(f=u.right-i.width),r=t.top,r+i.height>u.bottom&&(r=u.bottom-i.height),e.style.left=Math.max(f,0)+"px",e.style.top=Math.max(r,0)+"px"},showAtCenter:function(){var r=n.getViewportRect(),i,u,f,e;if(this.fullscreen)i=this.getDom(),u=this.getDom("content"),i.style.display="block",f=UE.ui.uiUtils.getClientRect(i),e=UE.ui.uiUtils.getClientRect(u),i.style.left="-100000px",u.style.width=r.width-f.width+e.width+"px",u.style.height=r.height-f.height+e.height+"px",i.style.width=r.width+"px",i.style.height=r.height+"px",i.style.left=0,this._originalContext={html:{overflowX:document.documentElement.style.overflowX,overflowY:document.documentElement.style.overflowY},body:{overflowX:document.body.style.overflowX,overflowY:document.body.style.overflowY}},document.documentElement.style.overflowX="hidden",document.documentElement.style.overflowY="hidden",document.body.style.overflowX="hidden",document.body.style.overflowY="hidden";else{this.getDom().style.display="";var s=this.fitSize(),o=this.getDom("titlebar").offsetHeight|0,l=r.width/2-s.width/2,c=r.height/2-(s.height-o)/2-o,h=this.getDom();this.safeSetOffset({left:Math.max(l|0,0),top:Math.max(c|0,0)}),t.hasClass(h,"edui-state-centered")||(h.className+=" edui-state-centered")}this._show()},getContentHtml:function(){var n="";return typeof this.content=="string"?n=this.content:this.iframeUrl&&(n=''),n},getHtmlTpl:function(){var i="",t,n;if(this.buttons){for(t=[],n=0;n
    '+t.join("")+"
    "}return'
    '+(this.title||"")+"
    "+this.closeButton.renderHtml()+'
    '+(this.autoReset?"":this.getContentHtml())+"
    "+i+"
    "},postRender:function(){var i,r;this.modalMask.getDom()||(this.modalMask.render(),this.modalMask.hide()),this.dragMask.getDom()||(this.dragMask.render(),this.dragMask.hide()),i=this,this.addListener("show",function(){i.modalMask.show(this.getDom().style.zIndex-2)}),this.addListener("hide",function(){i.modalMask.hide()});if(this.buttons)for(r=0;r',n.editor.container.style.zIndex&&(this.getDom().style.zIndex=n.editor.container.style.zIndex*1+1))}}),this.onbuttonclick=function(){this.showPopup()},this.initSplitButton()}},t.inherits(n,i)})(),(function(){function o(t){var f=t.target||t.srcElement,u=n.findParent(f,function(t){return n.hasClass(t,"edui-shortcutmenu")||n.hasClass(t,"edui-popup")},!0),i,r;if(!u)for(i=0;r=h[i++];)r.hide()}var t=u.editor.ui,l=t.UIBase,s=t.uiUtils,f=u.editor.utils,n=u.editor.dom.domUtils,h=[],c,i=!1,e=t.ShortCutMenu=function(n){this.initOptions(n),this.initShortCutMenu()};e.postHide=o,e.prototype={isHidden:!0,SPACE:5,initShortCutMenu:function(){this.items=this.items||[],this.initUIBase(),this.initItems(),this.initEvent(),h.push(this)},initEvent:function(){var t=this,u=t.editor.document;n.on(u,"mousemove",function(n){if(t.isHidden===!1){if(t.getSubMenuMark()||t.eventType=="contextmenu")return;var o=!0,u=t.getDom(),h=u.offsetWidth,s=u.offsetHeight,e=h/2+t.SPACE,f=s/2,r=Math.abs(n.screenX-t.left),i=Math.abs(n.screenY-t.top);clearTimeout(c),c=setTimeout(function(){i>0&&if&&if+70&&i0&&re&&re+70&&r'+n+""}},f.inherits(e,l);n.on(document,"mousedown",function(n){o(n)});n.on(window,"scroll",function(n){o(n)})})(),(function(){var t=u.editor.utils,i=u.editor.ui.UIBase,n=u.editor.ui.Breakline=function(n){this.initOptions(n),this.initSeparator()};n.prototype={uiName:"Breakline",initSeparator:function(){this.initUIBase()},getHtmlTpl:function(){return"
    "}},t.inherits(n,i)})(),(function(){var t=u.editor.utils,r=u.editor.dom.domUtils,i=u.editor.ui.UIBase,n=u.editor.ui.Message=function(n){this.initOptions(n),this.initMessage()};n.prototype={initMessage:function(){this.initUIBase()},getHtmlTpl:function(){return'
    \u00d7
    '},reset:function(n){var t=this;n.keepshow||(clearTimeout(this.timer),t.timer=setTimeout(function(){t.hide()},n.timeout||4e3)),n.content!==undefined&&t.setContent(n.content),n.type!==undefined&&t.setType(n.type),t.show()},postRender:function(){var t=this,n=this.getDom("closer");n&&r.on(n,"click",function(){t.hide()})},setContent:function(n){this.getDom("content").innerHTML=n},setType:function(n){n=n||"info";var t=this.getDom("body");t.className=t.className.replace(/edui-message-type-[\w-]+/,"edui-message-type-"+n)},getContent:function(){return this.getDom("content").innerHTML},getType:function(){var n=this.getDom("body").match(/edui-message-type-([\w-]+)/);return n?n[1]:""},show:function(){this.getDom().style.display="block"},hide:function(){var n=this.getDom();n&&(n.style.display="none",n.parentNode&&n.parentNode.removeChild(n))}},t.inherits(n,i)})(),(function(){var f=u.editor.utils,n=u.editor.ui,b=n.Dialog,o,y,h,e,t,s,i,p,w,l,c,v,a;for(n.buttons={},n.Dialog=function(n){var t=new b(n);return t.addListener("hide",function(){var n,u,i;if(t.editor){n=t.editor;try{r.gecko?(u=n.window.scrollY,i=n.window.scrollX,n.body.focus(),n.window.scrollTo(i,u)):n.focus()}catch(f){}}}),t},o={anchor:"~/dialogs/anchor/anchor.html",insertimage:"~/dialogs/image/image.html",link:"~/dialogs/link/link.html",spechars:"~/dialogs/spechars/spechars.html",searchreplace:"~/dialogs/searchreplace/searchreplace.html",map:"~/dialogs/map/map.html",gmap:"~/dialogs/gmap/gmap.html",insertvideo:"~/dialogs/video/video.html",help:"~/dialogs/help/help.html",preview:"~/dialogs/preview/preview.html",emotion:"~/dialogs/emotion/emotion.html",wordimage:"~/dialogs/wordimage/wordimage.html",attachment:"~/dialogs/attachment/attachment.html",insertframe:"~/dialogs/insertframe/insertframe.html",edittip:"~/dialogs/table/edittip.html",edittable:"~/dialogs/table/edittable.html",edittd:"~/dialogs/table/edittd.html",webapp:"~/dialogs/webapp/webapp.html",snapscreen:"~/dialogs/snapscreen/snapscreen.html",scrawl:"~/dialogs/scrawl/scrawl.html",music:"~/dialogs/music/music.html",template:"~/dialogs/template/template.html",background:"~/dialogs/background/background.html",charts:"~/dialogs/charts/charts.html"},y=["undo","redo","formatmatch","bold","italic","underline","fontborder","touppercase","tolowercase","strikethrough","subscript","superscript","source","indent","outdent","blockquote","pasteplain","pagebreak","selectall","print","horizontal","removeformat","time","date","unlink","insertparagraphbeforetable","insertrow","insertcol","mergeright","mergedown","deleterow","deletecol","splittorows","splittocols","splittocells","mergecells","deletetable","drafts"],e=0;t=y[e++];)t=t.toLowerCase(),n[t]=function(t){return function(i){var r=new n.Button({className:"edui-for-"+t,title:i.options.labelMap[t]||i.getLang("labelMap."+t)||"",onclick:function(){i.execCommand(t)},theme:i.options.theme,showText:!1});return n.buttons[t]=r,i.addListener("selectionchange",function(n,u,f){var e=i.queryCommandState(t);e==-1?(r.setDisabled(!0),r.setChecked(!1)):f||(r.setDisabled(!1),r.setChecked(e))}),r}}(t);n.cleardoc=function(t){var i=new n.Button({className:"edui-for-cleardoc",title:t.options.labelMap.cleardoc||t.getLang("labelMap.cleardoc")||"",theme:t.options.theme,onclick:function(){confirm(t.getLang("confirmClear"))&&t.execCommand("cleardoc")}});return n.buttons.cleardoc=i,t.addListener("selectionchange",function(){i.setDisabled(t.queryCommandState("cleardoc")==-1)}),i},n.dzzfile=function(t){var i=new n.Button({className:"edui-for-dzzfile",title:t.options.labelMap.dzzfile||t.getLang("labelMap.dzzfile")||"",theme:t.options.theme,onclick:function(){t.execCommand("dzzfile")}});return n.buttons.dzzfile=i,t.addListener("selectionchange",function(){i.setDisabled(t.queryCommandState("dzzfile")==-1)}),i},n.insertcharts=function(t){var i=new n.Button({className:"edui-for-insertcharts",title:t.options.labelMap.insertcharts||t.getLang("labelMap.insertcharts")||"",theme:t.options.theme,onclick:function(){var n=t.options.chartsTmpl||'

    1\u67082\u67083\u6708
    \u90e8\u95e81245932430824932
    \u90e8\u95e82136581654113600
    \u90e8\u95e8399808970012380
    ';t.execCommand("insertHtml",n)}});return n.buttons.insertcharts=i,t.addListener("selectionchange",function(){i.setDisabled(t.queryCommandState("insertcharts")==-1)}),i},h={justify:["left","right","center","justify"],imagefloat:["none","left","center","right"],directionality:["ltr","rtl"]};for(i in h)(function(t,i){for(var u=0,r;r=i[u++];)(function(i){n[t.replace("float","")+i]=function(r){var u=new n.Button({className:"edui-for-"+t.replace("float","")+i,title:r.options.labelMap[t.replace("float","")+i]||r.getLang("labelMap."+t.replace("float","")+i)||"",theme:r.options.theme,onclick:function(){r.execCommand(t,i)}});return n.buttons[t]=u,r.addListener("selectionchange",function(n,f,e){u.setDisabled(r.queryCommandState(t)==-1),u.setChecked(r.queryCommandValue(t)==i&&!e)}),u}})(r)})(i,h[i]);for(e=0;t=(["backcolor","forecolor"])[e++];)n[t]=function(t){return function(i){var r=new n.ColorButton({className:"edui-for-"+t,color:"default",title:i.options.labelMap[t]||i.getLang("labelMap."+t)||"",editor:i,onpickcolor:function(n,r){i.execCommand(t,r)},onpicknocolor:function(){i.execCommand(t,"default"),this.setColor("transparent"),this.color="default"},onbuttonclick:function(){i.execCommand(t,this.color)}});return n.buttons[t]=r,i.addListener("selectionchange",function(){r.setDisabled(i.queryCommandState(t)==-1)}),r}}(t);s={noOk:["searchreplace","help","spechars","webapp","preview"],ok:["attachment","anchor","link","insertimage","map","gmap","insertframe","wordimage","insertvideo","insertframe","edittip","edittable","edittd","scrawl","template","music","background","charts"]};for(i in s)(function(t,i){for(var e=0,u;u=i[e++];){if(r.opera&&u==="searchreplace")continue;(function(i){n[i]=function(r,u,e){var s,h;return u=u||(r.options.iframeUrlMap||{})[i]||o[i],e=r.options.labelMap[i]||r.getLang("labelMap."+i)||"",u&&(s=new n.Dialog(f.extend({iframeUrl:r.ui.mapUrl(u),editor:r,className:"edui-for-"+i,title:e,holdScroll:i==="insertimage",fullscreen:/charts|preview/.test(i),closeDialog:r.getLang("closeDialog")},t=="ok"?{buttons:[{className:"edui-okbutton",label:r.getLang("ok"),editor:r,onclick:function(){s.close(!0)}},{className:"edui-cancelbutton",label:r.getLang("cancel"),editor:r,onclick:function(){s.close(!1)}}]}:{})),r.ui._dialogs[i+"Dialog"]=s),h=new n.Button({className:"edui-for-"+i,title:e,onclick:function(){if(s)switch(i){case"wordimage":var n=r.execCommand("wordimage");n&&n.length&&(s.render(),s.open());break;case"scrawl":r.queryCommandState("scrawl")!=-1&&(s.render(),s.open());break;default:s.render(),s.open()}},theme:r.options.theme,disabled:i=="scrawl"&&r.queryCommandState("scrawl")==-1||i=="charts"}),n.buttons[i]=h,r.addListener("selectionchange",function(){var t={edittable:1},n;if(i in t)return;n=r.queryCommandState(i),h.getDom()&&(h.setDisabled(n==-1),h.setChecked(n))}),h}})(u.toLowerCase())}})(i,s[i]);for(n.snapscreen=function(t,i,r){var f,u;return r=t.options.labelMap.snapscreen||t.getLang("labelMap.snapscreen")||"",f=new n.Button({className:"edui-for-snapscreen",title:r,onclick:function(){t.execCommand("snapscreen")},theme:t.options.theme}),n.buttons.snapscreen=f,i=i||(t.options.iframeUrlMap||{}).snapscreen||o.snapscreen,i&&(u=new n.Dialog({iframeUrl:t.ui.mapUrl(i),editor:t,className:"edui-for-snapscreen",title:r,buttons:[{className:"edui-okbutton",label:t.getLang("ok"),editor:t,onclick:function(){u.close(!0)}},{className:"edui-cancelbutton",label:t.getLang("cancel"),editor:t,onclick:function(){u.close(!1)}}]}),u.render(),t.ui._dialogs.snapscreenDialog=u),t.addListener("selectionchange",function(){f.setDisabled(t.queryCommandState("snapscreen")==-1)}),f},n.insertcode=function(t,i,r){var e,u;return i=t.options.insertcode||[],r=t.options.labelMap.insertcode||t.getLang("labelMap.insertcode")||"",e=[],f.each(i,function(n,i){e.push({label:n,value:i,theme:t.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}})}),u=new n.Combox({editor:t,items:e,onselect:function(n,i){t.execCommand("insertcode",this.items[i].value)},onbuttonclick:function(){this.showPopup()},title:r,initValue:r,className:"edui-for-insertcode",indexByValue:function(n){if(n)for(var t=0,i;i=this.items[t];t++)if(i.value.indexOf(n)!=-1)return t;return-1}}),n.buttons.insertcode=u,t.addListener("selectionchange",function(n,i,f){var o,e;if(!f){o=t.queryCommandState("insertcode");if(o==-1)u.setDisabled(!0);else{u.setDisabled(!1),e=t.queryCommandValue("insertcode");if(!e){u.setValue(r);return}e&&(e=e.replace(/['"]/g,"").split(",")[0]),u.setValue(e)}}}),u},n.fontfamily=function(t,i,r){var o,e,s,h,u;i=t.options.fontfamily||[],r=t.options.labelMap.fontfamily||t.getLang("labelMap.fontfamily")||"";if(!i.length)return;for(o=0,s=[];e=i[o];o++)h=t.getLang("fontfamily")[e.name]||"",(function(n,i){s.push({label:n,value:i,theme:t.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}})})(e.label||h,e.val);return u=new n.Combox({editor:t,items:s,onselect:function(n,i){t.execCommand("FontFamily",this.items[i].value)},onbuttonclick:function(){this.showPopup()},title:r,initValue:r,className:"edui-for-fontfamily",indexByValue:function(n){if(n)for(var t=0,i;i=this.items[t];t++)if(i.value.indexOf(n)!=-1)return t;return-1}}),n.buttons.fontfamily=u,t.addListener("selectionchange",function(n,i,r){var e,f;r||(e=t.queryCommandState("FontFamily"),e==-1?u.setDisabled(!0):(u.setDisabled(!1),f=t.queryCommandValue("FontFamily"),f&&(f=f.replace(/['"]/g,"").split(",")[0]),u.setValue(f)))}),u},n.fontsize=function(t,i,r){var e,f,o,u;r=t.options.labelMap.fontsize||t.getLang("labelMap.fontsize")||"",i=i||t.options.fontsize||[];if(!i.length)return;for(e=[],f=0;f'+(this.label||"")+""}});return u=new n.Combox({editor:t,items:e,title:r,initValue:r,onselect:function(n,i){t.execCommand("FontSize",this.items[i].value)},onbuttonclick:function(){this.showPopup()},className:"edui-for-fontsize"}),n.buttons.fontsize=u,t.addListener("selectionchange",function(n,i,r){if(!r){var f=t.queryCommandState("FontSize");f==-1?u.setDisabled(!0):(u.setDisabled(!1),u.setValue(t.queryCommandValue("FontSize")))}}),u},n.paragraph=function(t,i,r){var o,e,u;r=t.options.labelMap.paragraph||t.getLang("labelMap.paragraph")||"",i=t.options.paragraph||[];if(f.isEmptyObject(i))return;o=[];for(e in i)o.push({value:e,label:i[e]||t.getLang("paragraph")[e],theme:t.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}});return u=new n.Combox({editor:t,items:o,title:r,initValue:r,className:"edui-for-paragraph",onselect:function(n,i){t.execCommand("Paragraph",this.items[i].value)},onbuttonclick:function(){this.showPopup()}}),n.buttons.paragraph=u,t.addListener("selectionchange",function(n,i,r){var o,f,e;r||(o=t.queryCommandState("Paragraph"),o==-1?u.setDisabled(!0):(u.setDisabled(!1),f=t.queryCommandValue("Paragraph"),e=u.indexByValue(f),e!=-1?u.setValue(f):u.setValue(u.initValue)))}),u},n.customstyle=function(t){var o=t.options.customstyle||[],e=t.options.labelMap.customstyle||t.getLang("labelMap.customstyle")||"",u,s,r,f,i;if(!o.length)return;for(u=t.getLang("customstyle"),s=0,r=[];f=o[s++];)(function(n){var i={};i.label=n.label?n.label:u[n.name],i.style=n.style,i.className=n.className,i.tag=n.tag,r.push({label:i.label,value:i,theme:t.options.theme,renderLabelHtml:function(){return'
    <'+i.tag+" "+(i.className?' class="'+i.className+'"':"")+(i.style?' style="'+i.style+'"':"")+">"+i.label+"
    "}})})(f);return i=new n.Combox({editor:t,items:r,title:e,initValue:e,className:"edui-for-customstyle",onselect:function(n,i){t.execCommand("customstyle",this.items[i].value)},onbuttonclick:function(){this.showPopup()},indexByValue:function(n){for(var i=0,t;t=this.items[i++];)if(t.label==n)return i-1;return-1}}),n.buttons.customstyle=i,t.addListener("selectionchange",function(n,r,u){var o,f,e;u||(o=t.queryCommandState("customstyle"),o==-1?i.setDisabled(!0):(i.setDisabled(!1),f=t.queryCommandValue("customstyle"),e=i.indexByValue(f),e!=-1?i.setValue(f):i.setValue(i.initValue)))}),i},n.inserttable=function(t,i,r){r=t.options.labelMap.inserttable||t.getLang("labelMap.inserttable")||"";var u=new n.TableButton({editor:t,title:r,className:"edui-for-inserttable",onpicktable:function(n,i,r){t.execCommand("InsertTable",{numRows:r,numCols:i,border:1})},onbuttonclick:function(){this.showPopup()}});return n.buttons.inserttable=u,t.addListener("selectionchange",function(){u.setDisabled(t.queryCommandState("inserttable")==-1)}),u},n.lineheight=function(t){var e=t.options.lineheight||[],f,u,r,i;if(!e.length)return;for(f=0,r=[];u=e[f++];)r.push({label:u,value:u,theme:t.options.theme,onclick:function(){t.execCommand("lineheight",this.value)}});return i=new n.MenuButton({editor:t,className:"edui-for-lineheight",title:t.options.labelMap.lineheight||t.getLang("labelMap.lineheight")||"",items:r,onbuttonclick:function(){var n=t.queryCommandValue("LineHeight")||this.value;t.execCommand("LineHeight",n)}}),n.buttons.lineheight=i,t.addListener("selectionchange",function(){var r=t.queryCommandState("LineHeight"),n;r==-1?i.setDisabled(!0):(i.setDisabled(!1),n=t.queryCommandValue("LineHeight"),n&&i.setValue((n+"").replace(/cm/,"")),i.setChecked(r))}),i},p=["top","bottom"],w=0;l=p[w++];)(function(t){n["rowspacing"+t]=function(i){var o=i.options["rowspacing"+t]||[],e,f,u,r;if(!o.length)return null;for(e=0,u=[];f=o[e++];)u.push({label:f,value:f,theme:i.options.theme,onclick:function(){i.execCommand("rowspacing",this.value,t)}});return r=new n.MenuButton({editor:i,className:"edui-for-rowspacing"+t,title:i.options.labelMap["rowspacing"+t]||i.getLang("labelMap.rowspacing"+t)||"",items:u,onbuttonclick:function(){var n=i.queryCommandValue("rowspacing",t)||this.value;i.execCommand("rowspacing",n,t)}}),n.buttons[t]=r,i.addListener("selectionchange",function(){var u=i.queryCommandState("rowspacing",t),n;u==-1?r.setDisabled(!0):(r.setDisabled(!1),n=i.queryCommandValue("rowspacing",t),n&&r.setValue((n+"").replace(/%/,"")),r.setChecked(u))}),r}})(l);for(c=["insertorderedlist","insertunorderedlist"],v=0;a=c[v++];)(function(t){n[t]=function(i){var e=i.options[t],o=function(){i.execCommand(t,this.value)},f=[],u,r;for(u in e)f.push({label:e[u]||i.getLang()[t][u]||"",value:u,theme:i.options.theme,onclick:o});return r=new n.MenuButton({editor:i,className:"edui-for-"+t,title:i.getLang("labelMap."+t)||"",items:f,onbuttonclick:function(){var n=i.queryCommandValue(t)||this.value;i.execCommand(t,n)}}),n.buttons[t]=r,i.addListener("selectionchange",function(){var u=i.queryCommandState(t),n;u==-1?r.setDisabled(!0):(r.setDisabled(!1),n=i.queryCommandValue(t),r.setValue(n),r.setChecked(u))}),r}})(a);n.fullscreen=function(t,i){i=t.options.labelMap.fullscreen||t.getLang("labelMap.fullscreen")||"";var r=new n.Button({className:"edui-for-fullscreen",title:i,theme:t.options.theme,onclick:function(){t.ui&&t.ui.setFullScreen(!t.ui.isFullScreen()),this.setChecked(t.ui.isFullScreen())}});return n.buttons.fullscreen=r,t.addListener("selectionchange",function(){var n=t.queryCommandState("fullscreen");r.setDisabled(n==-1),r.setChecked(t.ui.isFullScreen())}),r},n.emotion=function(t,i){var r="emotion",u=new n.MultiMenuPop({title:t.options.labelMap[r]||t.getLang("labelMap."+r+"")||"",editor:t,className:"edui-for-"+r,iframeUrl:t.ui.mapUrl(i||(t.options.iframeUrlMap||{})[r]||o[r])});return n.buttons[r]=u,t.addListener("selectionchange",function(){u.setDisabled(t.queryCommandState(r)==-1)}),u},n.autotypeset=function(t){var i=new n.AutoTypeSetButton({editor:t,title:t.options.labelMap.autotypeset||t.getLang("labelMap.autotypeset")||"",className:"edui-for-autotypeset",onbuttonclick:function(){t.execCommand("autotypeset")}});return n.buttons.autotypeset=i,t.addListener("selectionchange",function(){i.setDisabled(t.queryCommandState("autotypeset")==-1)}),i},n.simpleupload=function(t){var r="simpleupload",i=new n.Button({className:"edui-for-"+r,title:t.options.labelMap[r]||t.getLang("labelMap."+r)||"",onclick:function(){},theme:t.options.theme,showText:!1});return n.buttons[r]=i,t.addListener("ready",function(){var r=i.getDom("body"),n=r.children[0];t.fireEvent("simpleuploadbtnready",n)}),t.addListener("selectionchange",function(n,u,f){var e=t.queryCommandState(r);e==-1?(i.setDisabled(!0),i.setChecked(!1)):f||(i.setDisabled(!1),i.setChecked(e))}),i}})(),(function(){function f(n){this.initOptions(n),this.initEditorUI()}var i=u.editor.utils,s=u.editor.ui.uiUtils,o=u.editor.ui.UIBase,n=u.editor.dom.domUtils,e=[],t;f.prototype={uiName:"editor",initEditorUI:function(){function s(n,t){var i;n.setOpt({wordCount:!0,maximumWords:1e4,wordCountMsg:n.options.wordCountMsg||n.getLang("wordCountMsg"),wordOverFlowMsg:n.options.wordOverFlowMsg||n.getLang("wordOverFlowMsg")});var r=n.options,f=r.maximumWords,o=r.wordCountMsg,e=r.wordOverFlowMsg,u=t.getDom("wordcount");if(!r.wordCount)return;i=n.getContentLength(!0),i>f?(u.innerHTML=e,n.fireEvent("wordcountoverflow")):u.innerHTML=o.replace("{#leave}",f-i).replace("{#count}",i)}var t,f,r,e,o,i;this.editor.ui=this,this._dialogs={},this.initUIBase(),this._initToolbars(),t=this.editor,f=this,t.addListener("ready",function(){t.getDialog=function(n){return t.ui._dialogs[n+"Dialog"]};n.on(t.window,"scroll",function(n){u.editor.ui.Popup.postHide(n)});t.ui._actualFrameWidth=t.options.initialFrameWidth,UE.browser.ie&&UE.browser.version===6&&t.container.ownerDocument.execCommand("BackgroundImageCache",!1,!0),t.options.elementPathEnabled&&(t.ui.getDom("elementpath").innerHTML='
    '+t.getLang("elementPathTip")+":
    ");if(t.options.wordCount){function i(){s(t,f),n.un(t.document,"click",arguments.callee)}n.on(t.document,"click",i);t.ui.getDom("wordcount").innerHTML=t.getLang("wordCountTip")}t.ui._scale(),t.options.scaleEnabled?(t.autoHeightEnabled&&t.disableAutoHeight(),f.enableScale()):f.disableScale(),!t.options.elementPathEnabled&&!t.options.wordCount&&!t.options.scaleEnabled&&(t.ui.getDom("elementpath").style.display="none",t.ui.getDom("wordcount").style.display="none",t.ui.getDom("scale").style.display="none");if(!t.selection.isFocus())return;t.fireEvent("selectionchange",!1,!0)}),t.addListener("mousedown",function(n,t){var i=t.target||t.srcElement;u.editor.ui.Popup.postHide(t,i),u.editor.ui.ShortCutMenu.postHide(t)}),t.addListener("delcells",function(){UE.ui.edittip&&new UE.ui.edittip(t),t.getDialog("edittip").open()}),e=!1,t.addListener("afterpaste",function(){if(t.queryCommandState("pasteplain"))return;u.editor.ui.PastePicker&&(r=new u.editor.ui.Popup({content:new u.editor.ui.PastePicker({editor:t}),editor:t,className:"edui-wordpastepop"}),r.render()),e=!0}),t.addListener("afterinserthtml",function(){clearTimeout(o),o=setTimeout(function(){var u,f,i;r&&(e||t.ui._isTransfer)&&(r.isHidden()?(u=n.createElement(t.document,"span",{style:"line-height:0px;",innerHTML:"\ufeff"}),f=t.selection.getRange(),f.insertNode(u),i=c(u,"firstChild","previousSibling"),i&&r.showAnchor(i.nodeType==3?i.parentNode:i),n.remove(u)):r.show(),delete t.ui._isTransfer,e=!1)},200)}),t.addListener("contextmenu",function(n,t){u.editor.ui.Popup.postHide(t)}),t.addListener("keydown",function(n,t){r&&r.dispose(t);var i=t.keyCode||t.which;t.altKey&&i==90&&UE.ui.buttons.fullscreen.onclick()}),t.addListener("wordcount",function(){s(this,f)}),t.addListener("selectionchange",function(){t.options.elementPathEnabled&&f[(t.queryCommandState("elementpath")==-1?"dis":"en")+"ableElementPath"](),t.options.scaleEnabled&&f[(t.queryCommandState("scale")==-1?"dis":"en")+"ableScale"]()}),i=new u.editor.ui.Popup({editor:t,content:"",className:"edui-bubble",_onEditButtonClick:function(){this.hide(),t.ui._dialogs.linkDialog.open()},_onImgEditButtonClick:function(n){this.hide(),t.ui._dialogs[n]&&t.ui._dialogs[n].open()},_onImgSetFloat:function(n){this.hide(),t.execCommand("imagefloat",n)},_setIframeAlign:function(t){var u=i.anchorEl,r=u.cloneNode(!0);switch(t){case-2:r.setAttribute("align","");break;case-1:r.setAttribute("align","left");break;case 1:r.setAttribute("align","right")}u.parentNode.insertBefore(r,u),n.remove(u),i.anchorEl=r,i.showAnchor(i.anchorEl)},_updateIframe:function(){var r=t._iframe=i.anchorEl;n.hasClass(r,"ueditor_baidumap")?(t.selection.getRange().selectNode(r).select(),t.ui._dialogs.mapDialog.open(),i.hide()):(t.ui._dialogs.insertframeDialog.open(),i.hide())},_onRemoveButtonClick:function(n){t.execCommand(n),this.hide()},queryAutoHide:function(r){if(r&&r.ownerDocument==t.document)if(r.tagName.toLowerCase()=="img"||n.findParentByTagName(r,"a",!0))return r!==i.anchorEl;return u.editor.ui.Popup.prototype.queryAutoHide.call(this,r)}}),i.render(),t.options.imagePopup&&(t.addListener("mouseover",function(n,r){var f,u;r=r||window.event,f=r.target||r.srcElement,t.ui._dialogs.insertframeDialog&&/iframe/ig.test(f.tagName)&&(u=i.formatHtml(""+t.getLang("property")+': '+t.getLang("default")+'  '+t.getLang("justifyleft")+'  '+t.getLang("justifyright")+'   '+t.getLang("modify")+""),u?(i.getDom("content").innerHTML=u,i.anchorEl=f,i.showAnchor(i.anchorEl)):i.hide())}),t.addListener("selectionchange",function(r,u){var e,s,h,c;if(!u)return;var o="",l="",f=t.selection.getRange().getClosedNode(),a=t.ui._dialogs;if(f&&f.tagName=="IMG"){e="insertimageDialog",(f.className.indexOf("edui-faked-video")!=-1||f.className.indexOf("edui-upload-video")!=-1)&&(e="insertvideoDialog"),f.className.indexOf("edui-faked-webapp")!=-1&&(e="webappDialog"),f.src.indexOf("http://api.map.baidu.com")!=-1&&(e="mapDialog"),f.className.indexOf("edui-faked-music")!=-1&&(e="musicDialog"),f.src.indexOf("http://maps.google.com/maps/api/staticmap")!=-1&&(e="gmapDialog"),f.getAttribute("anchorname")&&(e="anchorDialog",o=i.formatHtml(""+t.getLang("property")+': '+t.getLang("modify")+"  "+t.getLang("delete")+"")),f.getAttribute("word_img")&&(t.word_img=[f.getAttribute("word_img")],e="wordimageDialog"),(n.hasClass(f,"loadingclass")||n.hasClass(f,"loaderrorclass"))&&(e="");if(!a[e])return;l=""+t.getLang("property")+': '+t.getLang("default")+'  '+t.getLang("justifyleft")+'  '+t.getLang("justifyright")+'  '+t.getLang("justifycenter")+"  '+t.getLang("modify")+"",!o&&(o=i.formatHtml(l))}t.ui._dialogs.linkDialog&&(s=t.queryCommandValue("link"),s&&(h=s.getAttribute("_href")||s.getAttribute("href",2))&&(c=h,h.length>30&&(c=h.substring(0,20)+"..."),o&&(o+='
    '),o+=i.formatHtml(""+t.getLang("anthorMsg")+': '+c+' '+t.getLang("modify")+' '+t.getLang("clear")+""),i.showAnchor(s))),o?(i.getDom("content").innerHTML=o,i.anchorEl=f||s,i.showAnchor(i.anchorEl)):i.hide()}))},_initToolbars:function(){for(var f=this.editor,c=this.toolbars||[],e=[],h,r,s,n,t,o=0;o
    '+(this.toolbars.length?'
    '+this.renderToolbarBoxHtml()+"
    ":"")+'
    '},showWordImageDialog:function(){this._dialogs.wordimageDialog.open()},renderToolbarBoxHtml:function(){for(var t=[],n=0;n'+i+"");u.innerHTML='
    '+this.editor.getLang("elementPathTip")+": "+t.join(" > ")+"
    "}else u.style.display="none"},disableElementPath:function(){var n=this.getDom("elementpath");n.innerHTML="",n.style.display="none",this.elementPathEnabled=!1},enableElementPath:function(){var n=this.getDom("elementpath");n.style.display="",this.elementPathEnabled=!0,this._updateElementPath()},_scale:function(){function y(){v=n.getXY(h),a||(a=t.options.minFrameHeight+p.offsetHeight+d.offsetHeight),u.style.cssText="position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:"+h.offsetWidth+"px;height:"+h.offsetHeight+"px;z-index:"+(t.options.zIndex+1);n.on(f,"mousemove",b);n.on(w,"mouseup",s);n.on(f,"mouseup",s)}function b(n){g();var t=n||window.event;k=t.pageX||f.documentElement.scrollLeft+t.clientX,nt=t.pageY||f.documentElement.scrollTop+t.clientY,c=k-v.x,l=nt-v.y,c>=tt&&(o=!0,u.style.width=c+"px"),l>=a&&(o=!0,u.style.height=l+"px")}function s(){o&&(o=!1,t.ui._actualFrameWidth=u.offsetWidth-2,h.style.width=t.ui._actualFrameWidth+"px",t.setHeight(u.offsetHeight-d.offsetHeight-p.offsetHeight-2,!0)),u&&(u.style.display="none"),g(),n.un(f,"mousemove",b),n.un(w,"mouseup",s),n.un(f,"mouseup",s)}function g(){r.ie?f.selection.clear():window.getSelection().removeAllRanges()}var f=document,t=this.editor,h=t.container,w=t.document,p=this.getDom("toolbarbox"),d=this.getDom("bottombar"),e=this.getDom("scale"),u=this.getDom("scalelayer"),o=!1,v=null,a=0,tt=t.options.minFrameWidth,k=0,nt=0,c=0,l=0,i=this;this.editor.addListener("fullscreenchanged",function(t,r){if(r)i.disableScale();else if(i.editor.options.scaleEnabled){i.enableScale();var u=i.editor.document.createElement("span");i.editor.body.appendChild(u),i.editor.body.style.height=Math.max(n.getXY(u).y,i.editor.iframe.offsetHeight-20)+"px",n.remove(u)}}),this.enableScale=function(){if(t.queryCommandState("source")==1)return;e.style.display="",this.scaleEnabled=!0;n.on(e,"mousedown",y)},this.disableScale=function(){e.style.display="none",this.scaleEnabled=!1,n.un(e,"mousedown",y)}},isFullScreen:function(){return this._fullscreen},postRender:function(){var n;for(o.prototype.postRender.call(this),n=0;n[\n\r\t]+([ ]{4})+/g,">").replace(/[\n\r\t]+([ ]{4})+[\n\r\t]+<"),r.className&&(o.className=r.className),r.style.cssText&&(o.style.cssText=r.style.cssText),/textarea/i.test(r.tagName)?(u.textarea=r,u.textarea.style.display="none"):r.parentNode.removeChild(r),r.id&&(o.id=r.id,n.removeAttributes(r,"id")),r=o,r.innerHTML="")),n.addClass(r,"edui-"+u.options.theme),u.ui.render(r),t=u.options,u.container=u.ui.getDom(),l=n.findParents(r,!0),a=[],i=0;s=l[i];i++)a[i]=s.style.display,s.style.display="block";for(t.initialFrameWidth?t.minFrameWidth=t.initialFrameWidth:(t.minFrameWidth=t.initialFrameWidth=r.offsetWidth,h=r.style.width,/%$/.test(h)&&(t.initialFrameWidth=h)),t.initialFrameHeight?t.minFrameHeight=t.initialFrameHeight:t.initialFrameHeight=t.minFrameHeight=r.offsetHeight,i=0;s=l[i];i++)s.style.display=a[i];r.style.height&&(r.style.height="");try{u.container.style.width=t.initialFrameWidth+(/%$/.test(t.initialFrameWidth)?"":"px")}catch(v){}u.container.style.zIndex=t.zIndex,e.call(u,u.ui.getDom("iframeholder")),u.fireEvent("afteruiready")}u.langIsReady?t():u.addListener("langReady",t)})},u},UE.getEditor=function(n,i){var r=t[n];return r||(r=t[n]=new UE.ui.Editor(i),r.render(n)),r},UE.delEditor=function(n){var i;(i=t[n])&&(i.key&&i.destroy(),delete t[n])},UE.registerUI=function(n,t,r,u){i.each(n.split(/\s+/),function(n){UE._customizeUI[n]={id:u,execFn:t,index:r}})}})(),UE.registerUI("message",function(n){function f(){var n=i.ui.getDom("toolbarbox");n&&(r.style.top=n.offsetHeight+3+"px"),r.style.zIndex=Math.max(i.options.zIndex,i.iframe.style.zIndex)+1}var s=u.editor.ui,o=s.Message,r,e=[],i=n;i.addListener("ready",function(){r=document.getElementById(i.ui.id+"_message_holder"),f(),setTimeout(function(){f()},500)}),i.addListener("showmessage",function(n,u){u=t.isString(u)?{content:u}:u;var s=new o({timeout:u.timeout,type:u.type,content:u.content,keepshow:u.keepshow,editor:i}),h=u.id||"msg_"+(+new Date).toString(36);return s.render(r),e[h]=s,s.reset(u),f(),h}),i.addListener("updatemessage",function(n,i,u){u=t.isString(u)?{content:u}:u;var f=e[i];f.render(r),f&&f.reset(u)}),i.addListener("hidemessage",function(n,t){var i=e[t];i&&i.hide()})}),UE.registerUI("autosave",function(n){var i=null,t=null;n.on("afterautosave",function(){clearTimeout(i),i=setTimeout(function(){t&&n.trigger("hidemessage",t),t=n.trigger("showmessage",{content:n.getLang("autosave.success"),timeout:2e3})},2e3)})})})() \ No newline at end of file diff --git a/dzz/system/ueditor/ueditor.config.js b/dzz/system/ueditor/ueditor.config.js index 215dcd3..ae04689 100644 --- a/dzz/system/ueditor/ueditor.config.js +++ b/dzz/system/ueditor/ueditor.config.js @@ -141,7 +141,6 @@ "searchreplace", // 查询替换 "|", 'dzzfile', - 'kityminder', "|", "contentimport", "help", // 帮助 @@ -685,24 +684,24 @@ UEDITOR_CONFIG.mode = { mini_exam: [ ['bold', 'italic', 'underline', 'strikethrough','superscript', 'subscript','removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', - 'insertorderedlist', 'insertunorderedlist','|','spechars','inserttable', 'scrawl','wordimage','kityformula','|','simpleupload','dzzfile' + 'insertorderedlist', 'insertunorderedlist','|','spechars','inserttable', 'scrawl','wordimage','|','simpleupload','dzzfile' ] ], mini_shou: [ ['bold', 'italic', 'underline', 'strikethrough','superscript', 'subscript','removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', - 'insertorderedlist', 'insertunorderedlist','|','spechars','inserttable', 'scrawl','wordimage','kityformula','|','simpleupload','attachment' + 'insertorderedlist', 'insertunorderedlist','|','spechars','inserttable', 'scrawl','wordimage','|','simpleupload','attachment' ] ], simple: [ - ["fullscreen","source","|","undo","redo",'drafts',"|","bold","italic","underline","fontborder","strikethrough","superscript","subscript","removeformat","formatmatch","autotypeset","blockquote","pasteplain","|","forecolor","backcolor","insertorderedlist","insertunorderedlist","selectall","cleardoc","|","rowspacingtop","rowspacingbottom","lineheight","|","customstyle","paragraph","fontfamily","fontsize","|","directionalityltr","directionalityrtl","indent","|","justifyleft", "justifycenter","justifyright","justifyjustify","|","touppercase","tolowercase","|","link","unlink","anchor","|","imagenone","imageleft","imagecenter","imageright","|","simpleupload","insertimage","emotion","scrawl","insertvideo","attachment",'map',"insertframe","insertcode","pagebreak","template","background","formula","|","horizontal","date","time","spechars","wordimage","|","inserttable","deletetable","insertparagraphbeforetable","insertrow","deleterow","insertcol","deletecol","mergecells","mergeright","mergedown","splittocells","splittorows","splittocols","|","print","preview","searchreplace","|",'dzzfile',"kityminder","contentimport","help", + ["fullscreen","source","|","undo","redo",'drafts',"|","bold","italic","underline","fontborder","strikethrough","superscript","subscript","removeformat","formatmatch","autotypeset","blockquote","pasteplain","|","forecolor","backcolor","insertorderedlist","insertunorderedlist","selectall","cleardoc","|","rowspacingtop","rowspacingbottom","lineheight","|","customstyle","paragraph","fontfamily","fontsize","|","directionalityltr","directionalityrtl","indent","|","justifyleft", "justifycenter","justifyright","justifyjustify","|","touppercase","tolowercase","|","link","unlink","anchor","|","imagenone","imageleft","imagecenter","imageright","|","simpleupload","insertimage","emotion","scrawl","insertvideo","attachment",'map',"insertframe","insertcode","pagebreak","template","background","formula","|","horizontal","date","time","spechars","wordimage","|","inserttable","deletetable","insertparagraphbeforetable","insertrow","deleterow","insertcol","deletecol","mergecells","mergeright","mergedown","splittocells","splittorows","splittocols","|","print","preview","searchreplace","|","dzzfile","contentimport","help", ] ], simple_source: [ - ["fullscreen","source","|","undo","redo",'drafts',"|","bold","italic","underline","fontborder","strikethrough","superscript","subscript","removeformat","formatmatch","autotypeset","blockquote","pasteplain","|","forecolor","backcolor","insertorderedlist","insertunorderedlist","selectall","cleardoc","|","rowspacingtop","rowspacingbottom","lineheight","|","customstyle","paragraph","fontfamily","fontsize","|","directionalityltr","directionalityrtl","indent","|","justifyleft", "justifycenter","justifyright","justifyjustify","|","touppercase","tolowercase","|","link","unlink","anchor","|","imagenone","imageleft","imagecenter","imageright","|","simpleupload","insertimage","emotion","scrawl","insertvideo","attachment",'map',"insertframe","insertcode","pagebreak","template","background","formula","|","horizontal","date","time","spechars","wordimage","|","inserttable","deletetable","insertparagraphbeforetable","insertrow","deleterow","insertcol","deletecol","mergecells","mergeright","mergedown","splittocells","splittorows","splittocols","|","print","preview","searchreplace","|",'dzzfile',"kityminder","contentimport","help", + ["fullscreen","source","|","undo","redo",'drafts',"|","bold","italic","underline","fontborder","strikethrough","superscript","subscript","removeformat","formatmatch","autotypeset","blockquote","pasteplain","|","forecolor","backcolor","insertorderedlist","insertunorderedlist","selectall","cleardoc","|","rowspacingtop","rowspacingbottom","lineheight","|","customstyle","paragraph","fontfamily","fontsize","|","directionalityltr","directionalityrtl","indent","|","justifyleft", "justifycenter","justifyright","justifyjustify","|","touppercase","tolowercase","|","link","unlink","anchor","|","imagenone","imageleft","imagecenter","imageright","|","simpleupload","insertimage","emotion","scrawl","insertvideo","attachment",'map',"insertframe","insertcode","pagebreak","template","background","formula","|","horizontal","date","time","spechars","wordimage","|","inserttable","deletetable","insertparagraphbeforetable","insertrow","deleterow","insertcol","deletecol","mergecells","mergeright","mergedown","splittocells","splittorows","splittocols","|","print","preview","searchreplace","|","dzzfile","contentimport","help", ] ], full:[[ - "fullscreen","source","|","undo","redo",'drafts',"|","bold","italic","underline","fontborder","strikethrough","superscript","subscript","removeformat","formatmatch","autotypeset","blockquote","pasteplain","|","forecolor","backcolor","insertorderedlist","insertunorderedlist","selectall","cleardoc","|","rowspacingtop","rowspacingbottom","lineheight","|","customstyle","paragraph","fontfamily","fontsize","|","directionalityltr","directionalityrtl","indent","|","justifyleft", "justifycenter","justifyright","justifyjustify","|","touppercase","tolowercase","|","link","unlink","anchor","|","imagenone","imageleft","imagecenter","imageright","|","simpleupload","insertimage","emotion","scrawl","insertvideo","attachment",'map',"insertframe","insertcode","pagebreak","template","background","formula","|","horizontal","date","time","spechars","wordimage","|","inserttable","deletetable","insertparagraphbeforetable","insertrow","deleterow","insertcol","deletecol","mergecells","mergeright","mergedown","splittocells","splittorows","splittocols","|","print","preview","searchreplace","|",'dzzfile',"kityminder","contentimport","help", + "fullscreen","source","|","undo","redo",'drafts',"|","bold","italic","underline","fontborder","strikethrough","superscript","subscript","removeformat","formatmatch","autotypeset","blockquote","pasteplain","|","forecolor","backcolor","insertorderedlist","insertunorderedlist","selectall","cleardoc","|","rowspacingtop","rowspacingbottom","lineheight","|","customstyle","paragraph","fontfamily","fontsize","|","directionalityltr","directionalityrtl","indent","|","justifyleft", "justifycenter","justifyright","justifyjustify","|","touppercase","tolowercase","|","link","unlink","anchor","|","imagenone","imageleft","imagecenter","imageright","|","simpleupload","insertimage","emotion","scrawl","insertvideo","attachment",'map',"insertframe","insertcode","pagebreak","template","background","formula","|","horizontal","date","time","spechars","wordimage","|","inserttable","deletetable","insertparagraphbeforetable","insertrow","deleterow","insertcol","deletecol","mergecells","mergeright","mergedown","splittocells","splittorows","splittocols","|","print","preview","searchreplace","|","dzzfile","contentimport","help", ]], }; \ No newline at end of file diff --git a/dzz/system/ueditor/ueditor.parse.min.js b/dzz/system/ueditor/ueditor.parse.min.js deleted file mode 100644 index 1888454..0000000 --- a/dzz/system/ueditor/ueditor.parse.min.js +++ /dev/null @@ -1,28 +0,0 @@ -(function(){(function(){UE=window.UE||{};var f=!!window.ActiveXObject,h={removeLastbs:function(a){return a.replace(/\/$/,"")},extend:function(a,d){for(var b=arguments,c=this.isBoolean(b[b.length-1])?b[b.length-1]:!1,e=this.isBoolean(b[b.length-1])?b.length-1:b.length,k=1;k=b&&a===d)return c=k,!1});return c},hasClass:function(a,d){d=d.replace(/(^[ ]+)|([ ]+$)/g,"").replace(/[ ]{2,}/g," ").split(" ");for(var b=0,c,e=a.className;c=d[b++];)if(!RegExp("\\b"+c+"\\b","i").test(e))return!1;return b-1==d.length},addClass:function(a,d){if(a){d=this.trim(d).replace(/[ ]{2,}/g, -" ").split(" ");for(var b=0,c,e=a.className;c=d[b++];)RegExp("\\b"+c+"\\b").test(e)||(e+=" "+c);a.className=h.trim(e)}},removeClass:function(a,d){d=this.isArray(d)?d:this.trim(d).replace(/[ ]{2,}/g," ").split(" ");for(var b=0,c,e=a.className;c=d[b++];)e=e.replace(RegExp("\\b"+c+"\\b"),"");e=this.trim(e).replace(/[ ]{2,}/g," ");a.className=e;!e&&a.removeAttribute("className")},on:function(a,d,b){var c=this.isArray(d)?d:d.split(/\s+/),e=c.length;if(e)for(;e--;)if(d=c[e],a.addEventListener)a.addEventListener(d, -b,!1);else{b._d||(b._d={els:[]});var k=d+b.toString(),n=h.indexOf(b._d.els,a);b._d[k]&&-1!=n||(-1==n&&b._d.els.push(a),b._d[k]||(b._d[k]=function(a){return b.call(a.srcElement,a||window.event)}),a.attachEvent("on"+d,b._d[k]))}a=null},off:function(a,d,b){var c=this.isArray(d)?d:d.split(/\s+/),e=c.length;if(e)for(;e--;)if(d=c[e],a.removeEventListener)a.removeEventListener(d,b,!1);else{var k=d+b.toString();try{a.detachEvent("on"+d,b._d?b._d[k]:b)}catch(n){}b._d&&b._d[k]&&(d=h.indexOf(b._d.els,a),-1!= -d&&b._d.els.splice(d,1),0==b._d.els.length&&delete b._d[k])}},loadFile:function(){function a(a,c){try{for(var e=0,k;k=d[e++];)if(k.doc===a&&k.url==(c.src||c.href))return k}catch(n){return null}}var d=[];return function(b,c,e){var k=a(b,c);if(k)k.ready?e&&e():k.funs.push(e);else if(d.push({doc:b,url:c.src||c.href,funs:[e]}),!b.body){e=[];for(var n in c)"tag"!=n&&e.push(n+'="'+c[n]+'"');b.write("<"+c.tag+" "+e.join(" ")+" >")}else if(!c.id||!b.getElementById(c.id)){var l=b.createElement(c.tag); -delete c.tag;for(n in c)l.setAttribute(n,c[n]);l.onload=l.onreadystatechange=function(){if(!this.readyState||/loaded|complete/.test(this.readyState)){k=a(b,c);if(0