LightboxNano.js 3.54 KB
//>>built
define("dojo/_base/lang dojo/_base/declare dojo/_base/array dojo/_base/fx dojo/dom dojo/dom-construct dojo/dom-geometry dojo/dom-style dojo/dom-class dojo/on dojo/query dojo/fx".split(" "),function(f,r,n,t,m,d,g,h,u,l,v,p){getViewport=function(){var a="BackCompat"==document.compatMode?document.body:document.documentElement,b=g.docScroll();return{w:a.clientWidth,h:a.clientHeight,l:b.x,t:b.y}};return r("dojox.image.LightboxNano",null,{href:"",duration:500,preloadDelay:5E3,constructor:function(a,b){var c=
this;f.mixin(c,a);if(b=c._node=m.byId(b))/a/i.test(b.tagName)||(a=d.create("a",{href:c.href,"class":b.className},b,"after"),b.className="",a.appendChild(b),b=a),h.set(b,"position","relative"),d.create("div",{"class":"nano-enlarge",style:{position:"absolute",display:"none"}},b),m.setSelectable(b,!1),c._onClickEvt=l(b,"click",f.hitch(c,"_load"));c.href&&setTimeout(function(){(new Image).src=c.href;c._hideLoading()},c.preloadDelay)},destroy:function(){var a=this._connects||[];a.push(this._onClickEvt);
n.forEach(a,function(a){a.remove()});d.destroy(this._node)},_load:function(a){a&&a.preventDefault();if(!this._loading){this._loading=!0;this._reset();a=this._img=d.create("img",{"class":"nano-image nano-image-hidden"},document.body);var b,c=this._loadingNode;b=v("img",this._node)[0]||this._node;var k=g.position(b,!0),e=g.getContentBox(b),q=g.getBorderExtents(b);null==c&&(this._loadingNode=c=d.create("div",{"class":"nano-loading",style:{position:"absolute",display:""}},this._node,"after"),b=g.getMarginBox(c),
h.set(c,{left:parseInt((e.w-b.w)/2)+"px",top:parseInt((e.h-b.h)/2)+"px"}));e.x=k.x-10+q.l;e.y=k.y-10+q.t;this._start=e;this._connects=[l(a,"load",f.hitch(this,"_show"))];a.src=this.href}},_hideLoading:function(){this._loadingNode&&h.set(this._loadingNode,"display","none");this._loadingNode=!1},_show:function(){var a=getViewport(),b=this._img.width,c=this._img.height,k=parseInt(.9*(a.w-20)),e=parseInt(.9*(a.h-20)),g=this._bg=d.create("div",{"class":"nano-background",style:{opacity:0}},document.body);
this._loadingNode&&this._hideLoading();u.remove(this._img,"nano-image-hidden");h.set(this._node,"visibility","hidden");this._loading=!1;this._connects=this._connects.concat([l(document,"mousedown",f.hitch(this,"_hide")),l(document,"keypress",f.hitch(this,"_key")),l(window,"resize",f.hitch(this,"_sizeBg"))]);b>k&&(c=c*k/b,b=k);c>e&&(b=b*e/c,c=e);this._end={x:(a.w-20-b)/2+a.l,y:(a.h-20-c)/2+a.t,w:b,h:c};this._sizeBg();p.combine([this._anim(this._img,this._coords(this._start,this._end)),this._anim(g,
{opacity:.5})]).play()},_sizeBg:function(){var a=document.documentElement;h.set(this._bg,{top:0,left:0,width:a.scrollWidth+"px",height:a.scrollHeight+"px"})},_key:function(a){a.preventDefault();this._hide()},_coords:function(a,b){return{left:{start:a.x,end:b.x},top:{start:a.y,end:b.y},width:{start:a.w,end:b.w},height:{start:a.h,end:b.h}}},_hide:function(){n.forEach(this._connects,function(a){a.remove()});this._connects=[];p.combine([this._anim(this._img,this._coords(this._end,this._start),"_reset"),
this._anim(this._bg,{opacity:0})]).play()},_reset:function(){h.set(this._node,"visibility","visible");d.destroy(this._img);d.destroy(this._bg);this._img=this._bg=null;this._node.focus()},_anim:function(a,b,c){return t.animateProperty({node:a,duration:this.duration,properties:b,onEnd:c?f.hitch(this,c):null})},show:function(a){a=a||{};this.href=a.href||this.href;a=m.byId(a.origin);var b=getViewport();this._node=a||d.create("div",{style:{position:"absolute",width:0,hieght:0,left:b.l+b.w/2+"px",top:b.t+
b.h/2+"px"}},document.body);this._load();a||d.destroy(this._node)}})});