Skip to content

Commit ce17798

Browse files
committed
fix: add able request #141
1 parent a76e448 commit ce17798

File tree

7 files changed

+35
-59
lines changed

7 files changed

+35
-59
lines changed

packages/react-moveable/src/App.tsx

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -384,34 +384,27 @@ class App extends React.Component {
384384
const keycon = new KeyController(window);
385385

386386
let requester: any;
387-
let snapRequester: any;
388387
keycon.keydown("shift", () => {
389388
this.setState({ isResizable: false, isShift: true });
390389
}).keydown("right", () => {
391390
if (!requester) {
392-
snapRequester = this.moveable.request("snappable")!;
393391
requester = this.moveable.request("draggable")!;
394392
}
395393
requester.request({ deltaX: 10, deltaY: 0});
396394
}).keydown("left", () => {
397395
if (!requester) {
398396
requester = this.moveable.request("draggable")!;
399-
snapRequester = this.moveable.request("snappable")!;
400397
}
401398
requester.request({ deltaX: -10, deltaY: 0});
402399
}).keyup("left", () => {
403400
if (requester) {
404401
requester.requestEnd();
405-
snapRequester.requestEnd();
406402
requester = null;
407-
snapRequester = null;
408403
}
409404
}).keyup("right", () => {
410405
if (requester) {
411406
requester.requestEnd();
412-
snapRequester.requestEnd();
413407
requester = null;
414-
snapRequester = null;
415408
}
416409
}).keydown("up", e => {
417410
this.moveable.request("draggable", { deltaX: 0, deltaY: -10});

packages/react-moveable/src/react-moveable/MoveableManager.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ import {
1717
import styled from "react-css-styled";
1818
import Dragger from "@daybrush/drag";
1919
import { ref } from "framework-utils";
20-
import { MoveableManagerProps, MoveableManagerState, Able, RectInfo, AbleRequester } from "./types";
21-
import { getAbleDragger } from "./getAbleDragger";
20+
import { MoveableManagerProps, MoveableManagerState, Able, RectInfo, Requester } from "./types";
21+
import { getAbleDragger, triggerAble } from "./getAbleDragger";
2222
import CustomDragger from "./CustomDragger";
2323
import { getRad } from "@moveable/matrix";
2424
import { IObject } from "@daybrush/utils";
@@ -226,28 +226,28 @@ export default class MoveableManager<T = {}, U = {}>
226226
offsetHeight,
227227
};
228228
}
229-
public request(ableName: string, param: IObject<any> = {}): AbleRequester | undefined {
229+
public request(ableName: string, param: IObject<any> = {}, isInstant?: boolean): Requester | undefined {
230230
const requsetAble = this.props.ables!.filter(able => able.name === ableName)[0];
231231

232232
if (!requsetAble || !requsetAble.request) {
233233
return;
234234
}
235235
const self = this;
236-
const ableRequester = requsetAble.request(this, param);
236+
const ableRequester = requsetAble.request();
237237

238238
const requester = {
239-
request(ableParam: IObject<any>, isInstant?: boolean) {
240-
ableRequester.request(ableParam);
241-
!isInstant && self.updateTarget("");
239+
request(ableParam: IObject<any>) {
240+
triggerAble(self, "targetAbles", "drag", "", "", ableRequester.request(ableParam), isInstant);
242241
return this;
243242
},
244243
requestEnd() {
245-
ableRequester.requestEnd();
246-
self.updateTarget("End");
244+
triggerAble(self, "targetAbles", "drag", "", "End", ableRequester.requestEnd());
247245
return this;
248246
},
249247
};
250-
return param.isInstant ? requester.request(param, true).requestEnd() : requester;
248+
triggerAble(self, "targetAbles", "drag", "", "Start", ableRequester.requestStart(param), isInstant);
249+
250+
return param.isInstant ? requester.request(param).requestEnd() : requester;
251251
}
252252
public checkUpdate() {
253253
const { target, container, parentMoveable } = this.props;

packages/react-moveable/src/react-moveable/ables/Draggable.tsx

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,6 @@ export default {
129129
}
130130

131131
if (!isPinch && !parentEvent && !parentFlag && (distX || distY)) {
132-
console.log("??");
133132
const [verticalInfo, horizontalInfo] = checkSnapDrag(moveable, distX, distY, datas);
134133
const {
135134
isSnap: isVerticalSnap,
@@ -312,24 +311,23 @@ export default {
312311

313312
return isDrag;
314313
},
315-
request(moveable: MoveableManager<any, any>, startParam: IObject<any>) {
314+
request() {
316315
const datas = {};
317-
const self = this;
318-
319-
this.dragStart(moveable, { datas });
320316
let distX = 0;
321317
let distY = 0;
318+
322319
return {
323-
request({ deltaX, deltaY }: IObject<any>) {
324-
distX += deltaX;
325-
distY += deltaY;
326-
self.drag(moveable, { datas, distX, distY });
320+
requestStart(e: IObject<any>) {
321+
return { datas };
322+
},
323+
request(e: IObject<any>) {
324+
distX += e.deltaX;
325+
distY += e.deltaY;
327326

328-
return this;
327+
return { datas, distX, distY };
329328
},
330329
requestEnd() {
331-
self.dragEnd(moveable, { datas, isDrag: true });
332-
return this;
330+
return { datas, isDrag: true };
333331
},
334332
};
335333
},

packages/react-moveable/src/react-moveable/ables/Resizable.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,14 @@ export default {
5555
const {
5656
inputEvent,
5757
pinchFlag,
58+
parentDirection,
5859
datas,
5960
} = e;
6061
const {
6162
target: inputTarget,
6263
} = inputEvent;
6364

64-
const direction = pinchFlag ? [1, 1] : getDirection(inputTarget);
65+
const direction = parentDirection || (pinchFlag ? [1, 1] : getDirection(inputTarget));
6566
const { target, width, height } = moveable.state;
6667

6768
if (!direction || !target) {

packages/react-moveable/src/react-moveable/ables/Snappable.tsx

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1403,28 +1403,6 @@ export default {
14031403
dragGroupControlEnd(moveable: any) {
14041404
this.unset(moveable);
14051405
},
1406-
request(moveable: MoveableManager<any, any>, startParam: IObject<any>) {
1407-
const self = this;
1408-
1409-
const {
1410-
type = "drag",
1411-
} = startParam;
1412-
1413-
if (type === "drag") {
1414-
this.dragStart(moveable, {});
1415-
} else if (type === "dragControl") {
1416-
this.dragControlStart(moveable, {});
1417-
}
1418-
return {
1419-
request(param: IObject<any>) {
1420-
return this;
1421-
},
1422-
requestEnd() {
1423-
self.dragEnd(moveable);
1424-
return this;
1425-
},
1426-
};
1427-
},
14281406
unset(moveable: any) {
14291407
const state = moveable.state;
14301408

packages/react-moveable/src/react-moveable/getAbleDragger.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
import MoveableManager from "./MoveableManager";
2-
import Dragger, { OnDragStart, OnDrag, OnDragEnd, OnPinchEnd } from "@daybrush/drag";
2+
import Dragger from "@daybrush/drag";
33
import { Able } from "./types";
44
import { IObject } from "@daybrush/utils";
55
import { triggerRenderStart, triggerRenderEnd, triggerRender } from "./ables/triggerRender";
66
import MoveableGroup from "./MoveableGroup";
77

8-
function triggerAble<T extends IObject<any>>(
8+
export function triggerAble<T extends IObject<any>>(
99
moveable: MoveableManager<any>,
1010
ableType: string,
1111
eventOperation: string,
1212
eventAffix: string,
1313
eventType: any,
14-
e: OnDragStart | OnDrag | OnDragEnd | OnPinchEnd,
14+
e: any,
15+
isReqeust?: boolean,
1516
) {
1617
const isStart = eventType === "Start";
1718

@@ -66,7 +67,7 @@ function triggerAble<T extends IObject<any>>(
6667
moveable.updateRect(eventType, true, false);
6768
}
6869
}
69-
if ((!isStart && isUpdate) || (isEnd && !isUpdate)) {
70+
if (((!isStart && isUpdate) || (isEnd && !isUpdate)) && !isReqeust) {
7071
moveable.forceUpdate();
7172
}
7273
if (!isStart && !isEnd && !isAfter && isUpdate) {

packages/react-moveable/src/react-moveable/types.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export interface Able<T = any> {
137137
dragGroupControl?: (moveable: MoveableManagerProps<any>, e: DraggerTypes.OnDragStart) => any;
138138
dragGroupControlEnd?: (moveable: MoveableManagerProps<any>, e: DraggerTypes.OnDragEnd) => any;
139139

140-
request?: (moveable: MoveableManagerProps<any>, startParam: AbleRequestParam) => AbleRequester;
140+
request?: () => AbleRequester;
141141
}
142142

143143
/**
@@ -162,9 +162,14 @@ export interface AbleRequestParam {
162162
isInstant?: boolean;
163163
[key: string]: any;
164164
}
165+
export interface Requester {
166+
request(param: IObject<any>): this;
167+
requestEnd(param: IObject<any>): this;
168+
}
165169
export interface AbleRequester {
166-
request(param: IObject<any>, isInstant?: boolean): this;
167-
requestEnd(): this;
170+
requestStart(param: IObject<any>): IObject<any>;
171+
request(param: IObject<any>): IObject<any>;
172+
requestEnd(): IObject<any>;
168173
}
169174

170175
/**

0 commit comments

Comments
 (0)