snap.js/dist/savage-min.js

34 lines
65 KiB
JavaScript
Raw Normal View History

// .--.--.
// / / '.
// | : /`. /
// ; | |--` .---. ,----._,.
// | : ;_ ,--.--. /. ./| ,--.--. / / ' / ,---.
// \ \ `. / \ .-' . ' | / \ | : | / \
// `----. \.--. .-. /___/ \: | .--. .-. || | .\ . / / |
// __ \ \ | \__\/: . . \ ' . \__\/: . .. ; '; |. ' / |
// / /`--' / ," .--.; |\ \ ' ," .--.; |' . . |' ; /|
// '--'. / / / ,. | \ \ / / ,. | `---`-'| |' | / |
// `--'---' ; : .' \ \ \ |; : .' \.'__/\_: || : |
// | , .-./ '---" | , .-./| : : \ \ /
// `--`---' `--`---' \ \ / `----'
// `--`-'
// Savage 0.0.1
//
// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// build: 2013-09-09
!function(a){var b,c,d="0.4.2",e="hasOwnProperty",f=/[\.\/]/,g="*",h=function(){},i=function(a,b){return a-b},j={n:{}},k=function(a,d){a=String(a);var e,f=c,g=Array.prototype.slice.call(arguments,2),h=k.listeners(a),j=0,l=[],m={},n=[],o=b;b=a,c=0;for(var p=0,q=h.length;q>p;p++)"zIndex"in h[p]&&(l.push(h[p].zIndex),h[p].zIndex<0&&(m[h[p].zIndex]=h[p]));for(l.sort(i);l[j]<0;)if(e=m[l[j++]],n.push(e.apply(d,g)),c)return c=f,n;for(p=0;q>p;p++)if(e=h[p],"zIndex"in e)if(e.zIndex==l[j]){if(n.push(e.apply(d,g)),c)break;do if(j++,e=m[l[j]],e&&n.push(e.apply(d,g)),c)break;while(e)}else m[e.zIndex]=e;else if(n.push(e.apply(d,g)),c)break;return c=f,b=o,n.length?n:null};k._events=j,k.listeners=function(a){var b,c,d,e,h,i,k,l,m=a.split(f),n=j,o=[n],p=[];for(e=0,h=m.length;h>e;e++){for(l=[],i=0,k=o.length;k>i;i++)for(n=o[i].n,c=[n[m[e]],n[g]],d=2;d--;)b=c[d],b&&(l.push(b),p=p.concat(b.f||[]));o=l}return p},k.on=function(a,b){if(a=String(a),"function"!=typeof b)return function(){};for(var c=a.split(f),d=j,e=0,g=c.length;g>e;e++)d=d.n,d=d.hasOwnProperty(c[e])&&d[c[e]]||(d[c[e]]={n:{}});for(d.f=d.f||[],e=0,g=d.f.length;g>e;e++)if(d.f[e]==b)return h;return d.f.push(b),function(a){+a==+a&&(b.zIndex=+a)}},k.f=function(a){var b=[].slice.call(arguments,1);return function(){k.apply(null,[a,null].concat(b).concat([].slice.call(arguments,0)))}},k.stop=function(){c=1},k.nt=function(a){return a?new RegExp("(?:\\.|\\/|^)"+a+"(?:\\.|\\/|$)").test(b):b},k.nts=function(){return b.split(f)},k.off=k.unbind=function(a,b){if(!a)return k._events=j={n:{}},void 0;var c,d,h,i,l,m,n,o=a.split(f),p=[j];for(i=0,l=o.length;l>i;i++)for(m=0;m<p.length;m+=h.length-2){if(h=[m,1],c=p[m].n,o[i]!=g)c[o[i]]&&h.push(c[o[i]]);else for(d in c)c[e](d)&&h.push(c[d]);p.splice.apply(p,h)}for(i=0,l=p.length;l>i;i++)for(c=p[i];c.n;){if(b){if(c.f){for(m=0,n=c.f.length;n>m;m++)if(c.f[m]==b){c.f.splice(m,1);break}!c.f.length&&delete c.f}for(d in c.n)if(c.n[e](d)&&c.n[d].f){var q=c.n[d].f;for(m=0,n=q.length;n>m;m++)if(q[m]==b){q.splice(m,1);break}!q.length&&delete c.n[d].f}}else{delete c.f;for(d in c.n)c.n[e](d)&&c.n[d].f&&delete c.n[d].f}c=c.n}},k.once=function(a,b){var c=function(){return k.unbind(a,c),b.apply(this,arguments)};return k.on(a,c)},k.version=d,k.toString=function(){return"You are running Eve "+d},"undefined"!=typeof module&&module.exports?module.exports=k:"undefined"!=typeof define?define("eve",[],function(){return k}):a.eve=k}(this);var mina=function(a){var b={},c=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},d=Array.isArray||function(a){return a instanceof Array||"[object Array]"==Object.prototype.toString.call(a)},e=0,f="M"+(+new Date).toString(36),g=function(){return f+(e++).toString(36)},h=function(){return+new Date},i=function(a){var b=this;if(null==a)return b.s;var c=b.s-a;b.b+=b.dur*c,b.B+=b.dur*c,b.s=a},j=function(a){var b=this;return null==a?b.spd:(b.spd=a,void 0)},k=function(a){var b=this;return null==a?b.dur:(b.s=b.s*a/b.dur,b.dur=a,void 0)},l=function(){var c=this;delete b[c.id],a("mina.stop."+c.id,c)},m=function(){var e=0;for(var f in b)if(b.hasOwnProperty(f)){var g,h=b[f],i=h.get();if(e++,h.s=(i-h.b)/(h.dur/h.spd),h.s>=1&&(delete b[f],h.s=1,e--),d(h.start)){g=[];for(var j=0,k=h.start.length;k>j;j++)g[j]=h.start[j]+(h.end[j]-h.start[j])*h.easing(h.s)}else g=h.start+(h.end-h.start)*h.easing(h.s);h.set(g),1==h.s&&a("mina.finish."+h.id,h)}e&&c(m)},n=function(a,d,e,f,h,o,p){var q={id:g(),start:a,end:d,b:e,s:0,dur:f-e,spd:1,get:h,set:o,easing:p||n.linear,status:i,speed:j,duration:k,stop:l};b[q.id]=q;var r,s=0;for(r in b)if(b.hasOwnProperty(r)&&(s++,2==s))break;return 1==s&&c(m),q};return n.time=h,n.getById=function(){return b[anim.id]||null},n.linear=function(a){return a},n.easeout=function(a){return Math.pow(a,1.7)},n.easein=function(a){return Math.pow(a,.48)},n.easeinout=function(a){var b=.48-a/1.04,c=Math.sqrt(.1734+b*b),d=c-b,e=Math.pow(Math.abs(d),1/3)*(0>d?-1:1),f=-c-b,g=Math.pow(Math.abs(f),1/3)*(0>f?-1:1),h=e
}function f(){if("linearGradient"==this.type){var c=b(this.node,"x1")||0,d=b(this.node,"x2")||1,e=b(this.node,"y1")||0,f=b(this.node,"y2")||0;return a._.box(c,e,A.abs(d-c),A.abs(f-e))}var g=this.node.cx||.5,h=this.node.cy||.5,i=this.node.r||0;return a._.box(g-i,h-i,2*i,2*i)}d.gradient=function(a){function c(a,b){for(var c=(b-h)/(a-i),d=i;a>d;d++)f[d].offset=+(+h+c*(d-i)).toFixed(2);i=a,h=b}var d,e=p(eve("savage.util.grad.parse",null,a));d="l"==e.type.toLowerCase()?this.gradientLinear.apply(this,e.params):this.gradientRadial.apply(this,e.params),e.type!=e.type.toLowerCase()&&b(d.node,{gradientUnits:"userSpaceOnUse"});var f=e.stops,g=f.length,h=0,i=0;g--;for(var j=0;g>j;j++)"offset"in f[j]&&c(j,f[j].offset);for(f[g].offset=f[g].offset||100,c(g,f[g].offset),j=0;g>=j;j++){var k=f[j];d.addStop(k.color,k.offset)}return d},d.gradientLinear=function(a,d,g,h){var i=r("linearGradient",this.node);return i.stops=c,i.addStop=e,i.getBBox=f,null!=a&&b(i.node,{x1:a,y1:d,x2:g,y2:h}),i},d.gradientRadial=function(a,d,g,h,i){var j=r("radialGradient",this.node);return j.stops=c,j.addStop=e,j.getBBox=f,null!=a&&b(j.node,{cx:a,cy:d,r:g}),null!=h&&null!=i&&b(j.node,{fx:h,fy:i}),j},d.toString=function(){var a,c=v.doc.createDocumentFragment(),d=v.doc.createElement("div"),e=this.node.cloneNode(!0);return c.appendChild(d),d.appendChild(e),b(e,{xmlns:"http://www.w3.org/2000/svg"}),a=d.innerHTML,c.removeChild(c.firstChild),a}}()}(s.prototype),a.ajax=function(a,b,d,e){var f=new XMLHttpRequest,g=U();if(f){if(c(b,"function"))e=d,d=b,b=null;else if(c(b,"object")){var h=[];for(var i in b)b.hasOwnProperty(i)&&h.push(encodeURIComponent(i)+"="+encodeURIComponent(b[i]));b=h.join("&")}return f.open(b?"POST":"GET",a,!0),f.setRequestHeader("X-Requested-With","XMLHttpRequest"),b&&f.setRequestHeader("Content-type","application/x-www-form-urlencoded"),d&&(eve.once("savage.ajax."+g+".0",d),eve.once("savage.ajax."+g+".200",d),eve.once("savage.ajax."+g+".304",d)),f.onreadystatechange=function(){4==f.readyState&&eve("savage.ajax."+g+"."+f.status,e,f)},4==f.readyState?f:(f.send(b),f)}},a.load=function(b,c,d){a.ajax(b,function(b){var e=a.parse(b.responseText);d?c.call(d,e):c(e)})},eve.on("savage.util.attr.mask",function(a){if(a instanceof o||a instanceof q){if(eve.stop(),a instanceof q&&1==a.node.childNodes.length&&(a=a.node.firstChild,this.paper.defs.appendChild(a),a=t(a)),"mask"==a.type)var c=a;else c=r("mask",this.paper.defs),c.node.appendChild(a.node),!c.node.id&&b(c.node,{id:c.id});b(this.node,{mask:"url(#"+c.id+")"})}}),function(a){eve.on("savage.util.attr.clip",a),eve.on("savage.util.attr.clip-path",a),eve.on("savage.util.attr.clipPath",a)}(function(a){if(a instanceof o||a instanceof q){if(eve.stop(),"clipPath"==a.type)var c=a;else c=r("clipPath",this.paper.defs),c.node.appendChild(a.node),!c.node.id&&b(c.node,{id:c.id});b(this.node,{"clip-path":"url(#"+c.id+")"})}}),eve.on("savage.util.attr.fill",function(c){if(eve.stop(),c instanceof q&&1==c.node.childNodes.length&&("radialGradient"==c.node.firstChild.tagName||"linearGradient"==c.node.firstChild.tagName||"pattern"==c.node.firstChild.tagName)&&(c=c.node.firstChild,this.paper.defs.appendChild(c),c=t(c)),c instanceof o&&("radialGradient"==c.type||"linearGradient"==c.type||"pattern"==c.type)){c.node.id||b(c.node,{id:c.id});var d="url(#"+c.node.id+")"}else if(d=a.color(c),d.error){var e=this.paper.gradient(c);e.node.id||b(e.node,{id:e.id}),d="url(#"+e.node.id+")"}else d=x(d);b(this.node,{fill:d}),this.node.style.fill=F});var eb=/^([lr])(?:\(([^)]*)\))?(.*)$/i;eve.on("savage.util.grad.parse",function(a){a=x(a);var b=a.match(eb),c=b[1],d=b[2],e=b[3];return d=d.split(/\s*,\s*/).map(function(a){return+a==a?+a:a}),1==d.length&&0==d[0]&&(d=[]),e=e.split("-"),e=e.map(function(a){a=a.split(":");var b={color:a[0]};return a[1]&&(b.offset=a[1]),b}),{type:c,params:d,stops:e}}),eve.on("savage.util.attr.d",function(d){eve.stop(),c(d,"array")&&c(d[0],"array")&&(d=a.path.toString.call(d)),d=x(d),d.match(/[ruo]/i)&&(d=a.path.toAbsolute(d)),b(this.node,{d:d})})(-1),eve.on("savage.util.attr.#text",function(a){eve.stop(),a=x(a);for(var
a.filter={},d.filter=function(c){var d=a.parse(f(c)),e=a._.id(),h=this.node.offsetWidth,i=this.node.offsetHeight,j=g("filter");return g(j,{id:e,filterUnits:"userSpaceOnUse",x:0,y:0,width:h,height:i}),j.appendChild(d.node),this.defs.appendChild(j),new b(j)},eve.on("savage.util.getattr.filter",function(){eve.stop();var b=g(this.node,"filter");if(b){var c=f(b).match(e);return c&&a.select(c[1])}}),eve.on("savage.util.attr.filter",function(a){if(a instanceof b&&"filter"==a.type){eve.stop();var c=a.node.id;c||(g(a.node,{id:a.id}),c=a.id),g(this.node,{filter:"url(#"+c+")"})}a&&"none"!=a||(eve.stop(),this.node.removeAttribute("filter"))}),a.filter.blur=function(b,c){null==b&&(b=2);var d=null==c?b:[b,c];return a.format('<feGaussianBlur stdDeviation="{def}"/>',{def:d})},a.filter.blur.toString=function(){return this()},a.filter.shadow=function(b,c,d,e){return e=a.color(e||"#000"),null==d&&(d=4),null==b&&(b=0,c=2),null==c&&(c=b),a.format('<feColorMatrix type="matrix" in="SourceAlpha" result="colored" values="0 0 0 0 {r} 0 0 0 0 {g} 0 0 0 0 {b} 0 0 0 {o} 0"/><feGaussianBlur in="colored" stdDeviation="{blur}" result="blur"/><feOffset in="blur" dx="{dx}" dy="{dy}" result="offsetBlur"/><feMerge><feMergeNode in="offsetBlur"/><feMergeNode in="SourceGraphic"/></feMerge>',{r:e.r,g:e.g,b:e.b,o:e.opacity,dx:b,dy:c,blur:d})},a.filter.shadow.toString=function(){return this()}});