Skip to content

Commit 8c84607

Browse files
committed
Move inertia calculations into separate function
1 parent 4746b6f commit 8c84607

File tree

1 file changed

+38
-23
lines changed

1 file changed

+38
-23
lines changed

interact.js

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -903,6 +903,24 @@
903903
return origin;
904904
}
905905

906+
function calcInertia (status) {
907+
var inertiaOptions = status.target.options.inertia,
908+
lambda = inertiaOptions.resistance,
909+
inertiaDur = -Math.log(inertiaOptions.endSpeed / status.v0) / lambda;
910+
911+
status.x0 = prevEvent.pageX;
912+
status.y0 = prevEvent.pageY;
913+
status.t0 = status.startEvent.timeStamp / 1000;
914+
status.sx = status.sy = 0;
915+
916+
status.modifiedXe = status.xe = (status.vx0 - inertiaDur) / lambda;
917+
status.modifiedYe = status.ye = (status.vy0 - inertiaDur) / lambda;
918+
status.te = inertiaDur;
919+
920+
status.lambda_v0 = lambda / status.v0;
921+
status.one_ve_v0 = 1 - inertiaOptions.endSpeed / status.v0;
922+
}
923+
906924
function inertiaFrame () {
907925
var options = inertiaStatus.target.options.inertia,
908926
lambda = options.resistance,
@@ -2670,29 +2688,30 @@
26702688
}
26712689

26722690
var endEvent,
2673-
inertiaOptions = target && target.options.inertia,
2691+
options = target && target.options,
2692+
inertiaOptions = options && options.inertia,
26742693
prop;
26752694

26762695
if (dragging || resizing || gesturing) {
26772696

26782697
if (inertiaStatus.active) { return; }
26792698

26802699
var deltaSource =target.options.deltaSource,
2681-
pointerSpeed = pointerDelta[deltaSource + 'Speed'];
2700+
pointerSpeed = pointerDelta[deltaSource + 'Speed'],
2701+
inertia = false;
26822702

26832703
// check if inertia should be started
2684-
if (target.options.inertiaEnabled
2704+
inertia = (target.options.inertiaEnabled
26852705
&& prepared !== 'gesture'
26862706
&& indexOf(inertiaOptions.actions, prepared) !== -1
26872707
&& event !== inertiaStatus.startEvent
26882708
&& (new Date().getTime() - curCoords.timeStamp) < 50
26892709
&& pointerSpeed > inertiaOptions.minSpeed
2690-
&& pointerSpeed > inertiaOptions.endSpeed) {
2691-
2710+
&& pointerSpeed > inertiaOptions.endSpeed);
26922711

2693-
var lambda = inertiaOptions.resistance,
2694-
inertiaDur = -Math.log(inertiaOptions.endSpeed / pointerSpeed) / lambda,
2695-
startEvent;
2712+
// check if inertia should be started
2713+
if (inertia) {
2714+
var startEvent;
26962715

26972716
inertiaStatus.active = true;
26982717
inertiaStatus.target = target;
@@ -2715,21 +2734,14 @@
27152734
inertiaStatus.vx0 = pointerDelta[deltaSource + 'VX'];
27162735
inertiaStatus.vy0 = pointerDelta[deltaSource + 'VY'];
27172736
inertiaStatus.v0 = pointerSpeed;
2718-
inertiaStatus.x0 = prevEvent.pageX;
2719-
inertiaStatus.y0 = prevEvent.pageY;
2720-
inertiaStatus.t0 = inertiaStatus.startEvent.timeStamp / 1000;
2721-
inertiaStatus.sx = inertiaStatus.sy = 0;
2722-
2723-
inertiaStatus.modifiedXe = inertiaStatus.xe = (inertiaStatus.vx0 - inertiaDur) / lambda;
2724-
inertiaStatus.modifiedYe = inertiaStatus.ye = (inertiaStatus.vy0 - inertiaDur) / lambda;
2725-
inertiaStatus.te = inertiaDur;
27262737

2727-
inertiaStatus.lambda_v0 = lambda / inertiaStatus.v0;
2728-
inertiaStatus.one_ve_v0 = 1 - inertiaOptions.endSpeed / inertiaStatus.v0;
2738+
calcInertia(inertiaStatus);
27292739

27302740
var startX = startEvent.pageX,
27312741
startY = startEvent.pageY,
2732-
statusObject;
2742+
statusObject,
2743+
dx = 0,
2744+
dy = 0;
27332745

27342746
if (startEvent.snap && startEvent.snap.locked) {
27352747
startX -= startEvent.snap.dx;
@@ -2756,18 +2768,21 @@
27562768
var snap = setSnapping(event, statusObject);
27572769

27582770
if (snap.locked) {
2759-
inertiaStatus.modifiedXe += snap.dx;
2760-
inertiaStatus.modifiedYe += snap.dy;
2771+
dx += snap.dx;
2772+
dy += snap.dy;
27612773
}
27622774
}
27632775

27642776
if (target.options.restrictEnabled && target.options.restrict.endOnly) {
27652777
var restrict = setRestriction(event, statusObject);
27662778

2767-
inertiaStatus.modifiedXe += restrict.dx;
2768-
inertiaStatus.modifiedYe += restrict.dy;
2779+
dx += restrict.dx;
2780+
dy += restrict.dy;
27692781
}
27702782

2783+
inertiaStatus.modifiedXe += dx;
2784+
inertiaStatus.modifiedYe += dy;
2785+
27712786
cancelFrame(inertiaStatus.i);
27722787
inertiaStatus.i = reqFrame(inertiaFrame);
27732788

0 commit comments

Comments
 (0)