mirror of
https://git.tt-rss.org/git/tt-rss.git
synced 2025-12-19 18:11:30 +00:00
build custom layer of Dojo to speed up loading of tt-rss (refs #293)
This commit is contained in:
@@ -5,121 +5,250 @@
|
||||
*/
|
||||
|
||||
|
||||
if(!dojo._hasResource["dojo.dnd.move"]){
|
||||
dojo._hasResource["dojo.dnd.move"]=true;
|
||||
if(!dojo._hasResource["dojo.dnd.move"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
|
||||
dojo._hasResource["dojo.dnd.move"] = true;
|
||||
dojo.provide("dojo.dnd.move");
|
||||
|
||||
dojo.require("dojo.dnd.Mover");
|
||||
dojo.require("dojo.dnd.Moveable");
|
||||
dojo.declare("dojo.dnd.move.constrainedMoveable",dojo.dnd.Moveable,{constraints:function(){
|
||||
},within:false,markupFactory:function(_1,_2){
|
||||
return new dojo.dnd.move.constrainedMoveable(_2,_1);
|
||||
},constructor:function(_3,_4){
|
||||
if(!_4){
|
||||
_4={};
|
||||
}
|
||||
this.constraints=_4.constraints;
|
||||
this.within=_4.within;
|
||||
},onFirstMove:function(_5){
|
||||
var c=this.constraintBox=this.constraints.call(this,_5);
|
||||
c.r=c.l+c.w;
|
||||
c.b=c.t+c.h;
|
||||
if(this.within){
|
||||
var mb=dojo.marginBox(_5.node);
|
||||
c.r-=mb.w;
|
||||
c.b-=mb.h;
|
||||
}
|
||||
},onMove:function(_6,_7){
|
||||
var c=this.constraintBox,s=_6.node.style;
|
||||
s.left=(_7.l<c.l?c.l:c.r<_7.l?c.r:_7.l)+"px";
|
||||
s.top=(_7.t<c.t?c.t:c.b<_7.t?c.b:_7.t)+"px";
|
||||
}});
|
||||
dojo.declare("dojo.dnd.move.boxConstrainedMoveable",dojo.dnd.move.constrainedMoveable,{box:{},markupFactory:function(_8,_9){
|
||||
return new dojo.dnd.move.boxConstrainedMoveable(_9,_8);
|
||||
},constructor:function(_a,_b){
|
||||
var _c=_b&&_b.box;
|
||||
this.constraints=function(){
|
||||
return _c;
|
||||
|
||||
/*=====
|
||||
dojo.declare("dojo.dnd.move.__constrainedMoveableArgs", [dojo.dnd.__MoveableArgs], {
|
||||
// constraints: Function
|
||||
// Calculates a constraint box.
|
||||
// It is called in a context of the moveable object.
|
||||
constraints: function(){},
|
||||
|
||||
// within: Boolean
|
||||
// restrict move within boundaries.
|
||||
within: false
|
||||
});
|
||||
=====*/
|
||||
|
||||
dojo.declare("dojo.dnd.move.constrainedMoveable", dojo.dnd.Moveable, {
|
||||
// object attributes (for markup)
|
||||
constraints: function(){},
|
||||
within: false,
|
||||
|
||||
// markup methods
|
||||
markupFactory: function(params, node){
|
||||
return new dojo.dnd.move.constrainedMoveable(node, params);
|
||||
},
|
||||
|
||||
constructor: function(node, params){
|
||||
// summary:
|
||||
// an object that makes a node moveable
|
||||
// node: Node
|
||||
// a node (or node's id) to be moved
|
||||
// params: dojo.dnd.move.__constrainedMoveableArgs?
|
||||
// an optional object with additional parameters;
|
||||
// the rest is passed to the base class
|
||||
if(!params){ params = {}; }
|
||||
this.constraints = params.constraints;
|
||||
this.within = params.within;
|
||||
},
|
||||
onFirstMove: function(/* dojo.dnd.Mover */ mover){
|
||||
// summary:
|
||||
// called during the very first move notification;
|
||||
// can be used to initialize coordinates, can be overwritten.
|
||||
var c = this.constraintBox = this.constraints.call(this, mover);
|
||||
c.r = c.l + c.w;
|
||||
c.b = c.t + c.h;
|
||||
if(this.within){
|
||||
var mb = dojo.marginBox(mover.node);
|
||||
c.r -= mb.w;
|
||||
c.b -= mb.h;
|
||||
}
|
||||
},
|
||||
onMove: function(/* dojo.dnd.Mover */ mover, /* Object */ leftTop){
|
||||
// summary:
|
||||
// called during every move notification;
|
||||
// should actually move the node; can be overwritten.
|
||||
var c = this.constraintBox, s = mover.node.style;
|
||||
s.left = (leftTop.l < c.l ? c.l : c.r < leftTop.l ? c.r : leftTop.l) + "px";
|
||||
s.top = (leftTop.t < c.t ? c.t : c.b < leftTop.t ? c.b : leftTop.t) + "px";
|
||||
}
|
||||
});
|
||||
|
||||
/*=====
|
||||
dojo.declare("dojo.dnd.move.__boxConstrainedMoveableArgs", [dojo.dnd.move.__constrainedMoveableArgs], {
|
||||
// box: Object
|
||||
// a constraint box
|
||||
box: {}
|
||||
});
|
||||
=====*/
|
||||
|
||||
dojo.declare("dojo.dnd.move.boxConstrainedMoveable", dojo.dnd.move.constrainedMoveable, {
|
||||
// box:
|
||||
// object attributes (for markup)
|
||||
box: {},
|
||||
|
||||
// markup methods
|
||||
markupFactory: function(params, node){
|
||||
return new dojo.dnd.move.boxConstrainedMoveable(node, params);
|
||||
},
|
||||
|
||||
constructor: function(node, params){
|
||||
// summary:
|
||||
// an object, which makes a node moveable
|
||||
// node: Node
|
||||
// a node (or node's id) to be moved
|
||||
// params: dojo.dnd.move.__boxConstrainedMoveableArgs?
|
||||
// an optional object with parameters
|
||||
var box = params && params.box;
|
||||
this.constraints = function(){ return box; };
|
||||
}
|
||||
});
|
||||
|
||||
/*=====
|
||||
dojo.declare("dojo.dnd.move.__parentConstrainedMoveableArgs", [dojo.dnd.move.__constrainedMoveableArgs], {
|
||||
// area: String
|
||||
// A parent's area to restrict the move.
|
||||
// Can be "margin", "border", "padding", or "content".
|
||||
area: ""
|
||||
});
|
||||
=====*/
|
||||
|
||||
dojo.declare("dojo.dnd.move.parentConstrainedMoveable", dojo.dnd.move.constrainedMoveable, {
|
||||
// area:
|
||||
// object attributes (for markup)
|
||||
area: "content",
|
||||
|
||||
// markup methods
|
||||
markupFactory: function(params, node){
|
||||
return new dojo.dnd.move.parentConstrainedMoveable(node, params);
|
||||
},
|
||||
|
||||
constructor: function(node, params){
|
||||
// summary:
|
||||
// an object, which makes a node moveable
|
||||
// node: Node
|
||||
// a node (or node's id) to be moved
|
||||
// params: dojo.dnd.move.__parentConstrainedMoveableArgs?
|
||||
// an optional object with parameters
|
||||
var area = params && params.area;
|
||||
this.constraints = function(){
|
||||
var n = this.node.parentNode,
|
||||
s = dojo.getComputedStyle(n),
|
||||
mb = dojo._getMarginBox(n, s);
|
||||
if(area == "margin"){
|
||||
return mb; // Object
|
||||
}
|
||||
var t = dojo._getMarginExtents(n, s);
|
||||
mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
|
||||
if(area == "border"){
|
||||
return mb; // Object
|
||||
}
|
||||
t = dojo._getBorderExtents(n, s);
|
||||
mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
|
||||
if(area == "padding"){
|
||||
return mb; // Object
|
||||
}
|
||||
t = dojo._getPadExtents(n, s);
|
||||
mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
|
||||
return mb; // Object
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// WARNING: below are obsolete objects, instead of custom movers use custom moveables (above)
|
||||
|
||||
dojo.dnd.move.constrainedMover = function(fun, within){
|
||||
// summary:
|
||||
// returns a constrained version of dojo.dnd.Mover
|
||||
// description:
|
||||
// this function produces n object, which will put a constraint on
|
||||
// the margin box of dragged object in absolute coordinates
|
||||
// fun: Function
|
||||
// called on drag, and returns a constraint box
|
||||
// within: Boolean
|
||||
// if true, constraints the whole dragged object withtin the rectangle,
|
||||
// otherwise the constraint is applied to the left-top corner
|
||||
|
||||
dojo.deprecated("dojo.dnd.move.constrainedMover, use dojo.dnd.move.constrainedMoveable instead");
|
||||
var mover = function(node, e, notifier){
|
||||
dojo.dnd.Mover.call(this, node, e, notifier);
|
||||
};
|
||||
dojo.extend(mover, dojo.dnd.Mover.prototype);
|
||||
dojo.extend(mover, {
|
||||
onMouseMove: function(e){
|
||||
// summary: event processor for onmousemove
|
||||
// e: Event: mouse event
|
||||
dojo.dnd.autoScroll(e);
|
||||
var m = this.marginBox, c = this.constraintBox,
|
||||
l = m.l + e.pageX, t = m.t + e.pageY;
|
||||
l = l < c.l ? c.l : c.r < l ? c.r : l;
|
||||
t = t < c.t ? c.t : c.b < t ? c.b : t;
|
||||
this.host.onMove(this, {l: l, t: t});
|
||||
},
|
||||
onFirstMove: function(){
|
||||
// summary: called once to initialize things; it is meant to be called only once
|
||||
dojo.dnd.Mover.prototype.onFirstMove.call(this);
|
||||
var c = this.constraintBox = fun.call(this);
|
||||
c.r = c.l + c.w;
|
||||
c.b = c.t + c.h;
|
||||
if(within){
|
||||
var mb = dojo.marginBox(this.node);
|
||||
c.r -= mb.w;
|
||||
c.b -= mb.h;
|
||||
}
|
||||
}
|
||||
});
|
||||
return mover; // Object
|
||||
};
|
||||
}});
|
||||
dojo.declare("dojo.dnd.move.parentConstrainedMoveable",dojo.dnd.move.constrainedMoveable,{area:"content",markupFactory:function(_d,_e){
|
||||
return new dojo.dnd.move.parentConstrainedMoveable(_e,_d);
|
||||
},constructor:function(_f,_10){
|
||||
var _11=_10&&_10.area;
|
||||
this.constraints=function(){
|
||||
var n=this.node.parentNode,s=dojo.getComputedStyle(n),mb=dojo._getMarginBox(n,s);
|
||||
if(_11=="margin"){
|
||||
return mb;
|
||||
}
|
||||
var t=dojo._getMarginExtents(n,s);
|
||||
mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;
|
||||
if(_11=="border"){
|
||||
return mb;
|
||||
}
|
||||
t=dojo._getBorderExtents(n,s);
|
||||
mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;
|
||||
if(_11=="padding"){
|
||||
return mb;
|
||||
}
|
||||
t=dojo._getPadExtents(n,s);
|
||||
mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;
|
||||
return mb;
|
||||
|
||||
dojo.dnd.move.boxConstrainedMover = function(box, within){
|
||||
// summary:
|
||||
// a specialization of dojo.dnd.constrainedMover, which constrains to the specified box
|
||||
// box: Object
|
||||
// a constraint box (l, t, w, h)
|
||||
// within: Boolean
|
||||
// if true, constraints the whole dragged object withtin the rectangle,
|
||||
// otherwise the constraint is applied to the left-top corner
|
||||
|
||||
dojo.deprecated("dojo.dnd.move.boxConstrainedMover, use dojo.dnd.move.boxConstrainedMoveable instead");
|
||||
return dojo.dnd.move.constrainedMover(function(){ return box; }, within); // Object
|
||||
};
|
||||
}});
|
||||
dojo.dnd.move.constrainedMover=function(fun,_12){
|
||||
dojo.deprecated("dojo.dnd.move.constrainedMover, use dojo.dnd.move.constrainedMoveable instead");
|
||||
var _13=function(_14,e,_15){
|
||||
dojo.dnd.Mover.call(this,_14,e,_15);
|
||||
|
||||
dojo.dnd.move.parentConstrainedMover = function(area, within){
|
||||
// summary:
|
||||
// a specialization of dojo.dnd.constrainedMover, which constrains to the parent node
|
||||
// area: String
|
||||
// "margin" to constrain within the parent's margin box, "border" for the border box,
|
||||
// "padding" for the padding box, and "content" for the content box; "content" is the default value.
|
||||
// within: Boolean
|
||||
// if true, constraints the whole dragged object within the rectangle,
|
||||
// otherwise the constraint is applied to the left-top corner
|
||||
|
||||
dojo.deprecated("dojo.dnd.move.parentConstrainedMover, use dojo.dnd.move.parentConstrainedMoveable instead");
|
||||
var fun = function(){
|
||||
var n = this.node.parentNode,
|
||||
s = dojo.getComputedStyle(n),
|
||||
mb = dojo._getMarginBox(n, s);
|
||||
if(area == "margin"){
|
||||
return mb; // Object
|
||||
}
|
||||
var t = dojo._getMarginExtents(n, s);
|
||||
mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
|
||||
if(area == "border"){
|
||||
return mb; // Object
|
||||
}
|
||||
t = dojo._getBorderExtents(n, s);
|
||||
mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
|
||||
if(area == "padding"){
|
||||
return mb; // Object
|
||||
}
|
||||
t = dojo._getPadExtents(n, s);
|
||||
mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
|
||||
return mb; // Object
|
||||
};
|
||||
return dojo.dnd.move.constrainedMover(fun, within); // Object
|
||||
};
|
||||
dojo.extend(_13,dojo.dnd.Mover.prototype);
|
||||
dojo.extend(_13,{onMouseMove:function(e){
|
||||
dojo.dnd.autoScroll(e);
|
||||
var m=this.marginBox,c=this.constraintBox,l=m.l+e.pageX,t=m.t+e.pageY;
|
||||
l=l<c.l?c.l:c.r<l?c.r:l;
|
||||
t=t<c.t?c.t:c.b<t?c.b:t;
|
||||
this.host.onMove(this,{l:l,t:t});
|
||||
},onFirstMove:function(){
|
||||
dojo.dnd.Mover.prototype.onFirstMove.call(this);
|
||||
var c=this.constraintBox=fun.call(this);
|
||||
c.r=c.l+c.w;
|
||||
c.b=c.t+c.h;
|
||||
if(_12){
|
||||
var mb=dojo.marginBox(this.node);
|
||||
c.r-=mb.w;
|
||||
c.b-=mb.h;
|
||||
}
|
||||
}});
|
||||
return _13;
|
||||
};
|
||||
dojo.dnd.move.boxConstrainedMover=function(box,_16){
|
||||
dojo.deprecated("dojo.dnd.move.boxConstrainedMover, use dojo.dnd.move.boxConstrainedMoveable instead");
|
||||
return dojo.dnd.move.constrainedMover(function(){
|
||||
return box;
|
||||
},_16);
|
||||
};
|
||||
dojo.dnd.move.parentConstrainedMover=function(_17,_18){
|
||||
dojo.deprecated("dojo.dnd.move.parentConstrainedMover, use dojo.dnd.move.parentConstrainedMoveable instead");
|
||||
var fun=function(){
|
||||
var n=this.node.parentNode,s=dojo.getComputedStyle(n),mb=dojo._getMarginBox(n,s);
|
||||
if(_17=="margin"){
|
||||
return mb;
|
||||
}
|
||||
var t=dojo._getMarginExtents(n,s);
|
||||
mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;
|
||||
if(_17=="border"){
|
||||
return mb;
|
||||
}
|
||||
t=dojo._getBorderExtents(n,s);
|
||||
mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;
|
||||
if(_17=="padding"){
|
||||
return mb;
|
||||
}
|
||||
t=dojo._getPadExtents(n,s);
|
||||
mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;
|
||||
return mb;
|
||||
};
|
||||
return dojo.dnd.move.constrainedMover(fun,_18);
|
||||
};
|
||||
dojo.dnd.constrainedMover=dojo.dnd.move.constrainedMover;
|
||||
dojo.dnd.boxConstrainedMover=dojo.dnd.move.boxConstrainedMover;
|
||||
dojo.dnd.parentConstrainedMover=dojo.dnd.move.parentConstrainedMover;
|
||||
|
||||
// patching functions one level up for compatibility
|
||||
|
||||
dojo.dnd.constrainedMover = dojo.dnd.move.constrainedMover;
|
||||
dojo.dnd.boxConstrainedMover = dojo.dnd.move.boxConstrainedMover;
|
||||
dojo.dnd.parentConstrainedMover = dojo.dnd.move.parentConstrainedMover;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user