@visactor/vrender-kits 0.17.0-alpha.8 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/canvas/contributions/browser/canvas.js +2 -4
- package/cjs/canvas/contributions/browser/canvas.js.map +1 -1
- package/cjs/canvas/contributions/browser/context.d.ts +5 -1
- package/cjs/canvas/contributions/browser/context.js +17 -16
- package/cjs/canvas/contributions/browser/context.js.map +1 -1
- package/cjs/canvas/contributions/feishu/canvas.js +2 -1
- package/cjs/canvas/contributions/feishu/index.js +1 -2
- package/cjs/canvas/contributions/lynx/canvas.d.ts +1 -0
- package/cjs/canvas/contributions/lynx/canvas.js +7 -0
- package/cjs/canvas/contributions/lynx/canvas.js.map +1 -1
- package/cjs/canvas/contributions/lynx/context.d.ts +3 -0
- package/cjs/canvas/contributions/lynx/context.js +4 -0
- package/cjs/canvas/contributions/lynx/context.js.map +1 -1
- package/cjs/canvas/contributions/node/canvas.js +3 -2
- package/cjs/canvas/contributions/node/canvas.js.map +1 -1
- package/cjs/canvas/contributions/node/context.js +1 -1
- package/cjs/env/all.js +9 -5
- package/cjs/env/all.js.map +1 -1
- package/cjs/env/browser.d.ts +2 -1
- package/cjs/env/browser.js +13 -4
- package/cjs/env/browser.js.map +1 -1
- package/cjs/env/contributions/browser-contribution.js +2 -2
- package/cjs/env/contributions/browser-contribution.js.map +1 -1
- package/cjs/env/contributions/lynx-contribution.js +2 -1
- package/cjs/env/contributions/lynx-contribution.js.map +1 -1
- package/cjs/env/contributions/module.d.ts +1 -8
- package/cjs/env/contributions/module.js +1 -25
- package/cjs/env/contributions/module.js.map +1 -1
- package/cjs/env/contributions/node-contribution.js +1 -1
- package/cjs/env/contributions/node-contribution.js.map +1 -1
- package/cjs/env/contributions/wx-contribution.js +1 -2
- package/cjs/env/feishu.d.ts +2 -1
- package/cjs/env/feishu.js +13 -4
- package/cjs/env/feishu.js.map +1 -1
- package/cjs/env/index.d.ts +0 -1
- package/cjs/env/index.js +2 -3
- package/cjs/env/index.js.map +1 -1
- package/cjs/env/lynx.d.ts +2 -1
- package/cjs/env/lynx.js +13 -4
- package/cjs/env/lynx.js.map +1 -1
- package/cjs/env/node.d.ts +2 -1
- package/cjs/env/node.js +13 -4
- package/cjs/env/node.js.map +1 -1
- package/cjs/env/taro.d.ts +2 -1
- package/cjs/env/taro.js +13 -4
- package/cjs/env/taro.js.map +1 -1
- package/cjs/env/wx.d.ts +2 -1
- package/cjs/env/wx.js +13 -4
- package/cjs/env/wx.js.map +1 -1
- package/cjs/event/extension/drag.js +2 -1
- package/cjs/event/extension/gesture.d.ts +5 -1
- package/cjs/event/extension/gesture.js +10 -4
- package/cjs/event/extension/gesture.js.map +1 -1
- package/cjs/event/extension/interface.d.ts +42 -0
- package/cjs/event/extension/interface.js +6 -0
- package/cjs/event/extension/interface.js.map +1 -0
- package/cjs/index.d.ts +0 -1
- package/cjs/index.js +1 -2
- package/cjs/index.js.map +1 -1
- package/cjs/picker/canvas-picker-service.d.ts +1 -13
- package/cjs/picker/canvas-picker-service.js +7 -28
- package/cjs/picker/canvas-picker-service.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/module.js +16 -18
- package/cjs/picker/contributions/canvas-picker/module.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/polygon-picker.js +1 -0
- package/cjs/picker/contributions/canvas-picker/polygon-picker.js.map +1 -1
- package/cjs/picker/contributions/math-picker/module.js +10 -11
- package/cjs/picker/contributions/math-picker/module.js.map +1 -1
- package/cjs/picker/index.d.ts +1 -1
- package/cjs/picker/index.js +1 -21
- package/cjs/picker/index.js.map +1 -1
- package/cjs/picker/math-picker-service.d.ts +1 -2
- package/cjs/picker/math-picker-service.js +4 -7
- package/cjs/picker/math-picker-service.js.map +1 -1
- package/cjs/render/contributions/rough/rough-rect.js +3 -1
- package/cjs/render/contributions/rough/rough-rect.js.map +1 -1
- package/cjs/window/contributions/browser-contribution.d.ts +6 -3
- package/cjs/window/contributions/browser-contribution.js +13 -14
- package/cjs/window/contributions/browser-contribution.js.map +1 -1
- package/cjs/window/contributions/lynx-contribution.js +3 -1
- package/cjs/window/contributions/lynx-contribution.js.map +1 -1
- package/dist/index.js +1215 -1215
- package/dist/index.min.js +1 -1
- package/es/canvas/contributions/browser/canvas.js +2 -4
- package/es/canvas/contributions/browser/canvas.js.map +1 -1
- package/es/canvas/contributions/browser/context.d.ts +5 -1
- package/es/canvas/contributions/browser/context.js +18 -17
- package/es/canvas/contributions/browser/context.js.map +1 -1
- package/es/canvas/contributions/feishu/canvas.js +2 -1
- package/es/canvas/contributions/feishu/index.js +1 -2
- package/es/canvas/contributions/lynx/canvas.d.ts +1 -0
- package/es/canvas/contributions/lynx/canvas.js +7 -0
- package/es/canvas/contributions/lynx/canvas.js.map +1 -1
- package/es/canvas/contributions/lynx/context.d.ts +3 -0
- package/es/canvas/contributions/lynx/context.js +5 -1
- package/es/canvas/contributions/lynx/context.js.map +1 -1
- package/es/canvas/contributions/node/canvas.js +3 -2
- package/es/canvas/contributions/node/canvas.js.map +1 -1
- package/es/canvas/contributions/node/context.js +1 -1
- package/es/env/all.js +7 -5
- package/es/env/all.js.map +1 -1
- package/es/env/browser.d.ts +2 -1
- package/es/env/browser.js +14 -5
- package/es/env/browser.js.map +1 -1
- package/es/env/contributions/browser-contribution.js +2 -2
- package/es/env/contributions/browser-contribution.js.map +1 -1
- package/es/env/contributions/lynx-contribution.js +2 -1
- package/es/env/contributions/lynx-contribution.js.map +1 -1
- package/es/env/contributions/module.d.ts +1 -8
- package/es/env/contributions/module.js +1 -42
- package/es/env/contributions/module.js.map +1 -1
- package/es/env/contributions/node-contribution.js +1 -1
- package/es/env/contributions/node-contribution.js.map +1 -1
- package/es/env/contributions/wx-contribution.js +1 -2
- package/es/env/feishu.d.ts +2 -1
- package/es/env/feishu.js +14 -5
- package/es/env/feishu.js.map +1 -1
- package/es/env/index.d.ts +0 -1
- package/es/env/index.js +0 -2
- package/es/env/index.js.map +1 -1
- package/es/env/lynx.d.ts +2 -1
- package/es/env/lynx.js +13 -4
- package/es/env/lynx.js.map +1 -1
- package/es/env/node.d.ts +2 -1
- package/es/env/node.js +14 -7
- package/es/env/node.js.map +1 -1
- package/es/env/taro.d.ts +2 -1
- package/es/env/taro.js +14 -5
- package/es/env/taro.js.map +1 -1
- package/es/env/wx.d.ts +2 -1
- package/es/env/wx.js +14 -5
- package/es/env/wx.js.map +1 -1
- package/es/event/extension/drag.js +2 -1
- package/es/event/extension/gesture.d.ts +5 -1
- package/es/event/extension/gesture.js +10 -4
- package/es/event/extension/gesture.js.map +1 -1
- package/es/event/extension/interface.d.ts +42 -0
- package/es/event/extension/interface.js +2 -0
- package/es/event/extension/interface.js.map +1 -0
- package/es/index.d.ts +0 -1
- package/es/index.js +0 -2
- package/es/index.js.map +1 -1
- package/es/picker/canvas-picker-service.d.ts +1 -13
- package/es/picker/canvas-picker-service.js +8 -23
- package/es/picker/canvas-picker-service.js.map +1 -1
- package/es/picker/contributions/canvas-picker/module.js +17 -25
- package/es/picker/contributions/canvas-picker/module.js.map +1 -1
- package/es/picker/contributions/canvas-picker/polygon-picker.js +1 -0
- package/es/picker/contributions/canvas-picker/polygon-picker.js.map +1 -1
- package/es/picker/contributions/math-picker/module.js +10 -15
- package/es/picker/contributions/math-picker/module.js.map +1 -1
- package/es/picker/index.d.ts +1 -1
- package/es/picker/index.js +1 -2
- package/es/picker/index.js.map +1 -1
- package/es/picker/math-picker-service.d.ts +1 -2
- package/es/picker/math-picker-service.js +5 -7
- package/es/picker/math-picker-service.js.map +1 -1
- package/es/render/contributions/rough/rough-rect.js +3 -1
- package/es/render/contributions/rough/rough-rect.js.map +1 -1
- package/es/window/contributions/browser-contribution.d.ts +6 -3
- package/es/window/contributions/browser-contribution.js +13 -14
- package/es/window/contributions/browser-contribution.js.map +1 -1
- package/es/window/contributions/lynx-contribution.js +3 -1
- package/es/window/contributions/lynx-contribution.js.map +1 -1
- package/package.json +5 -5
- package/cjs/env/contributions/browser-module.d.ts +0 -2
- package/cjs/env/contributions/browser-module.js +0 -13
- package/cjs/env/contributions/browser-module.js.map +0 -1
- package/cjs/env/contributions/feishu-module.d.ts +0 -2
- package/cjs/env/contributions/feishu-module.js +0 -12
- package/cjs/env/contributions/feishu-module.js.map +0 -1
- package/cjs/picker/module.d.ts +0 -6
- package/cjs/picker/module.js +0 -30
- package/cjs/picker/module.js.map +0 -1
- package/es/env/contributions/browser-module.d.ts +0 -2
- package/es/env/contributions/browser-module.js +0 -8
- package/es/env/contributions/browser-module.js.map +0 -1
- package/es/env/contributions/feishu-module.d.ts +0 -2
- package/es/env/contributions/feishu-module.js +0 -8
- package/es/env/contributions/feishu-module.js.map +0 -1
- package/es/picker/module.d.ts +0 -6
- package/es/picker/module.js +0 -28
- package/es/picker/module.js.map +0 -1
package/cjs/env/taro.js
CHANGED
|
@@ -2,13 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.initTaroEnv = exports.loadTaroEnv = void 0;
|
|
5
|
+
}), exports.initTaroEnv = exports.loadTaroEnv = exports.taroEnvModule = void 0;
|
|
6
6
|
|
|
7
|
-
const vrender_core_1 = require("@visactor/vrender-core"), math_module_1 = require("../picker/math-module"),
|
|
7
|
+
const vrender_core_1 = require("@visactor/vrender-core"), math_module_1 = require("../picker/math-module"), modules_1 = require("../canvas/contributions/taro/modules"), taro_contribution_1 = require("../window/contributions/taro-contribution"), taro_contribution_2 = require("./contributions/taro-contribution");
|
|
8
|
+
|
|
9
|
+
let isTaroBound = !1;
|
|
10
|
+
|
|
11
|
+
exports.taroEnvModule = new vrender_core_1.ContainerModule((bind => {
|
|
12
|
+
isTaroBound || (isTaroBound = !0, bind(taro_contribution_2.TaroEnvContribution).toSelf().inSingletonScope(),
|
|
13
|
+
bind(vrender_core_1.EnvContribution).toService(taro_contribution_2.TaroEnvContribution));
|
|
14
|
+
}));
|
|
15
|
+
|
|
16
|
+
let loaded = !1;
|
|
8
17
|
|
|
9
18
|
function loadTaroEnv(container, loadPicker = !0) {
|
|
10
|
-
container.load(
|
|
11
|
-
container.load(taro_contribution_1.taroWindowModule), loadPicker && (0, math_module_1.loadMathPicker)(container);
|
|
19
|
+
loaded || (loaded = !0, container.load(exports.taroEnvModule), container.load(modules_1.taroCanvasModule),
|
|
20
|
+
container.load(taro_contribution_1.taroWindowModule), loadPicker && (0, math_module_1.loadMathPicker)(container));
|
|
12
21
|
}
|
|
13
22
|
|
|
14
23
|
function initTaroEnv() {
|
package/cjs/env/taro.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/env/taro.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"sources":["../src/env/taro.ts"],"names":[],"mappings":";;;AAAA,yDAAqG;AACrG,uDAAuD;AAEvD,kEAAwE;AACxE,iFAA6E;AAC7E,yEAAwE;AAExE,IAAI,WAAW,GAAG,KAAK,CAAC;AACX,QAAA,aAAa,GAAG,IAAI,8BAAe,CAAC,IAAI,CAAC,EAAE;IAEtD,IAAI,CAAC,WAAW,EAAE;QAChB,WAAW,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,uCAAmB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACtD,IAAI,CAAC,8BAAe,CAAC,CAAC,SAAS,CAAC,uCAAmB,CAAC,CAAC;KACtD;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,SAAgB,WAAW,CAAC,SAAoB,EAAE,aAAsB,IAAI;IAC1E,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,IAAI,CAAC;QACd,SAAS,CAAC,IAAI,CAAC,qBAAa,CAAC,CAAC;QAC9B,SAAS,CAAC,IAAI,CAAC,0BAAgB,CAAC,CAAC;QACjC,SAAS,CAAC,IAAI,CAAC,oCAAgB,CAAC,CAAC;QACjC,UAAU,IAAI,IAAA,4BAAc,EAAC,SAAS,CAAC,CAAC;KACzC;AACH,CAAC;AARD,kCAQC;AAED,SAAgB,WAAW;IACzB,WAAW,CAAC,wBAAS,CAAC,CAAC;AACzB,CAAC;AAFD,kCAEC","file":"taro.js","sourcesContent":["import { container, ContainerModule, type Container, EnvContribution } from '@visactor/vrender-core';\nimport { loadMathPicker } from '../picker/math-module';\n// import { taroEnvModule } from './contributions/module';\nimport { taroCanvasModule } from '../canvas/contributions/taro/modules';\nimport { taroWindowModule } from '../window/contributions/taro-contribution';\nimport { TaroEnvContribution } from './contributions/taro-contribution';\n\nlet isTaroBound = false;\nexport const taroEnvModule = new ContainerModule(bind => {\n // taro\n if (!isTaroBound) {\n isTaroBound = true;\n bind(TaroEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(TaroEnvContribution);\n }\n});\n\nlet loaded = false;\nexport function loadTaroEnv(container: Container, loadPicker: boolean = true) {\n if (!loaded) {\n loaded = true;\n container.load(taroEnvModule);\n container.load(taroCanvasModule);\n container.load(taroWindowModule);\n loadPicker && loadMathPicker(container);\n }\n}\n\nexport function initTaroEnv() {\n loadTaroEnv(container);\n}\n"]}
|
package/cjs/env/wx.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { type Container } from '@visactor/vrender-core';
|
|
1
|
+
import { ContainerModule, type Container } from '@visactor/vrender-core';
|
|
2
|
+
export declare const wxEnvModule: ContainerModule;
|
|
2
3
|
export declare function loadWxEnv(container: Container, loadPicker?: boolean): void;
|
|
3
4
|
export declare function initWxEnv(): void;
|
package/cjs/env/wx.js
CHANGED
|
@@ -2,13 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.initWxEnv = exports.loadWxEnv = void 0;
|
|
5
|
+
}), exports.initWxEnv = exports.loadWxEnv = exports.wxEnvModule = void 0;
|
|
6
6
|
|
|
7
|
-
const vrender_core_1 = require("@visactor/vrender-core"), math_module_1 = require("../picker/math-module"),
|
|
7
|
+
const vrender_core_1 = require("@visactor/vrender-core"), math_module_1 = require("../picker/math-module"), modules_1 = require("../canvas/contributions/wx/modules"), wx_contribution_1 = require("../window/contributions/wx-contribution"), wx_contribution_2 = require("./contributions/wx-contribution");
|
|
8
|
+
|
|
9
|
+
let isWxBound = !1;
|
|
10
|
+
|
|
11
|
+
exports.wxEnvModule = new vrender_core_1.ContainerModule((bind => {
|
|
12
|
+
isWxBound || (isWxBound = !0, bind(wx_contribution_2.WxEnvContribution).toSelf().inSingletonScope(),
|
|
13
|
+
bind(vrender_core_1.EnvContribution).toService(wx_contribution_2.WxEnvContribution));
|
|
14
|
+
}));
|
|
15
|
+
|
|
16
|
+
let loaded = !1;
|
|
8
17
|
|
|
9
18
|
function loadWxEnv(container, loadPicker = !0) {
|
|
10
|
-
container.load(
|
|
11
|
-
container.load(wx_contribution_1.wxWindowModule), loadPicker && (0, math_module_1.loadMathPicker)(container);
|
|
19
|
+
loaded || (loaded = !0, container.load(exports.wxEnvModule), container.load(modules_1.wxCanvasModule),
|
|
20
|
+
container.load(wx_contribution_1.wxWindowModule), loadPicker && (0, math_module_1.loadMathPicker)(container));
|
|
12
21
|
}
|
|
13
22
|
|
|
14
23
|
function initWxEnv() {
|
package/cjs/env/wx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/env/wx.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"sources":["../src/env/wx.ts"],"names":[],"mappings":";;;AAAA,yDAAqG;AACrG,uDAAuD;AAEvD,gEAAoE;AACpE,6EAAyE;AACzE,qEAAoE;AAEpE,IAAI,SAAS,GAAG,KAAK,CAAC;AACT,QAAA,WAAW,GAAG,IAAI,8BAAe,CAAC,IAAI,CAAC,EAAE;IAEpD,IAAI,CAAC,SAAS,EAAE;QACd,SAAS,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,mCAAiB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACpD,IAAI,CAAC,8BAAe,CAAC,CAAC,SAAS,CAAC,mCAAiB,CAAC,CAAC;KACpD;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,SAAgB,SAAS,CAAC,SAAoB,EAAE,aAAsB,IAAI;IACxE,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,IAAI,CAAC;QACd,SAAS,CAAC,IAAI,CAAC,mBAAW,CAAC,CAAC;QAC5B,SAAS,CAAC,IAAI,CAAC,wBAAc,CAAC,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,gCAAc,CAAC,CAAC;QAC/B,UAAU,IAAI,IAAA,4BAAc,EAAC,SAAS,CAAC,CAAC;KACzC;AACH,CAAC;AARD,8BAQC;AAED,SAAgB,SAAS;IACvB,SAAS,CAAC,wBAAS,CAAC,CAAC;AACvB,CAAC;AAFD,8BAEC","file":"wx.js","sourcesContent":["import { container, ContainerModule, type Container, EnvContribution } from '@visactor/vrender-core';\nimport { loadMathPicker } from '../picker/math-module';\n// import { wxEnvModule } from './contributions/module';\nimport { wxCanvasModule } from '../canvas/contributions/wx/modules';\nimport { wxWindowModule } from '../window/contributions/wx-contribution';\nimport { WxEnvContribution } from './contributions/wx-contribution';\n\nlet isWxBound = false;\nexport const wxEnvModule = new ContainerModule(bind => {\n // wx\n if (!isWxBound) {\n isWxBound = true;\n bind(WxEnvContribution).toSelf().inSingletonScope();\n bind(EnvContribution).toService(WxEnvContribution);\n }\n});\n\nlet loaded = false;\nexport function loadWxEnv(container: Container, loadPicker: boolean = true) {\n if (!loaded) {\n loaded = true;\n container.load(wxEnvModule);\n container.load(wxCanvasModule);\n container.load(wxWindowModule);\n loadPicker && loadMathPicker(container);\n }\n}\n\nexport function initWxEnv() {\n loadWxEnv(container);\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IEventTarget, INode } from '@visactor/vrender-core';
|
|
2
2
|
import { EventEmitter } from '@visactor/vutils';
|
|
3
|
+
import type { GestureConfig } from './interface';
|
|
3
4
|
export declare class Gesture extends EventEmitter {
|
|
4
5
|
element: INode | null;
|
|
5
6
|
private cachedEvents;
|
|
@@ -18,6 +19,9 @@ export declare class Gesture extends EventEmitter {
|
|
|
18
19
|
private throttleTimer;
|
|
19
20
|
private emitThrottles;
|
|
20
21
|
private config;
|
|
22
|
+
private tapCount;
|
|
23
|
+
private lastTapTime;
|
|
24
|
+
private lastTapTarget;
|
|
21
25
|
constructor(element: IEventTarget, config?: GestureConfig);
|
|
22
26
|
initEvents(): void;
|
|
23
27
|
removeEvents(): void;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.Gesture = void 0;
|
|
6
6
|
|
|
7
|
-
const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@visactor/vutils"), PRESS_TIME = 251, PRESS_THRESHOLD = 9, SWIPE_VELOCITY = .3, SWIPE_THRESHOLD = 10, calcDirection = (start, end) => {
|
|
7
|
+
const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@visactor/vutils"), PRESS_TIME = 251, PRESS_THRESHOLD = 9, SWIPE_VELOCITY = .3, SWIPE_THRESHOLD = 10, TAP_INTERVAL = 300, calcDirection = (start, end) => {
|
|
8
8
|
const xDistance = end.x - start.x, yDistance = end.y - start.y;
|
|
9
9
|
return Math.abs(xDistance) > Math.abs(yDistance) ? xDistance > 0 ? "right" : "left" : yDistance > 0 ? "down" : "up";
|
|
10
10
|
}, calcDistance = (point1, point2) => {
|
|
@@ -26,9 +26,9 @@ const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@v
|
|
|
26
26
|
|
|
27
27
|
class Gesture extends vutils_1.EventEmitter {
|
|
28
28
|
constructor(element, config = {}) {
|
|
29
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
29
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
30
30
|
super(), this.cachedEvents = [], this.startPoints = [], this.processEvent = {},
|
|
31
|
-
this.throttleTimer = 0, this.emitThrottles = [], this.onStart = ev => {
|
|
31
|
+
this.throttleTimer = 0, this.emitThrottles = [], this.lastTapTarget = null, this.onStart = ev => {
|
|
32
32
|
this.reset(), this.startTime = vrender_core_1.clock.now();
|
|
33
33
|
const {cachedEvents: cachedEvents, startPoints: startPoints} = this;
|
|
34
34
|
ev && cachedEvents.push(ev.clone()), startPoints.length = cachedEvents.length;
|
|
@@ -90,13 +90,16 @@ class Gesture extends vutils_1.EventEmitter {
|
|
|
90
90
|
endEvent.direction = calcDirection(prevMovePoint, lastMovePoint), this.triggerEvent("swipe", endEvent));
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
+
now - this.lastTapTime < this.config.tap.interval && ev.target === this.lastTapTarget ? this.tapCount++ : this.tapCount = 1,
|
|
94
|
+
this.lastTapTime = now, this.lastTapTarget = ev.target, 1 === this.tapCount ? this.triggerEvent("tap", endEvent) : 2 === this.tapCount && (this.triggerEvent("doubletap", endEvent),
|
|
95
|
+
this.tapCount = 0);
|
|
93
96
|
}
|
|
94
97
|
for (let i = 0, len = cachedEvents.length; i < len; i++) if (cachedEvents[i].pointerId === endEvent.pointerId) {
|
|
95
98
|
cachedEvents.splice(i, 1), startPoints.splice(i, 1);
|
|
96
99
|
break;
|
|
97
100
|
}
|
|
98
101
|
this.reset(), cachedEvents.length > 0 && this.onStart();
|
|
99
|
-
}, this.element = element, this.config = {
|
|
102
|
+
}, this.element = element, this.tapCount = 0, this.lastTapTime = 0, this.config = {
|
|
100
103
|
press: {
|
|
101
104
|
time: null !== (_b = null === (_a = null == config ? void 0 : config.press) || void 0 === _a ? void 0 : _a.time) && void 0 !== _b ? _b : 251,
|
|
102
105
|
threshold: null !== (_d = null === (_c = null == config ? void 0 : config.press) || void 0 === _c ? void 0 : _c.threshold) && void 0 !== _d ? _d : 9
|
|
@@ -104,6 +107,9 @@ class Gesture extends vutils_1.EventEmitter {
|
|
|
104
107
|
swipe: {
|
|
105
108
|
threshold: null !== (_f = null === (_e = null == config ? void 0 : config.swipe) || void 0 === _e ? void 0 : _e.threshold) && void 0 !== _f ? _f : 10,
|
|
106
109
|
velocity: null !== (_h = null === (_g = null == config ? void 0 : config.swipe) || void 0 === _g ? void 0 : _g.velocity) && void 0 !== _h ? _h : .3
|
|
110
|
+
},
|
|
111
|
+
tap: {
|
|
112
|
+
interval: null !== (_k = null === (_j = null == config ? void 0 : config.tap) || void 0 === _j ? void 0 : _j.interval) && void 0 !== _k ? _k : 300
|
|
107
113
|
}
|
|
108
114
|
}, this.initEvents();
|
|
109
115
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/event/extension/gesture.ts"],"names":[],"mappings":"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","file":"gesture.js","sourcesContent":["import { application, clock, WILDCARD } from '@visactor/vrender-core';\nimport type {\n DefaultGestureConfig,\n EmitEventObject,\n GestureConfig,\n GestureDirection,\n GestureEvent,\n IEventTarget,\n IFederatedPointerEvent,\n FederatedPointerEvent,\n INode\n} from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\nimport { EventEmitter } from '@visactor/vutils';\n\n/**\n * 代码参考 https://github.com/hammerjs/hammer.js\n * The MIT License (MIT)\n\n Copyright (C) 2011-2017 by Jorik Tangelder (Eight Media)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\nconst PRESS_TIME = 251;\nconst PRESS_THRESHOLD = 9;\nconst SWIPE_VELOCITY = 0.3;\nconst SWIPE_THRESHOLD = 10;\n\nconst calcDirection = (start: IPointLike, end: IPointLike) => {\n const xDistance = end.x - start.x;\n const yDistance = end.y - start.y;\n if (Math.abs(xDistance) > Math.abs(yDistance)) {\n return xDistance > 0 ? 'right' : 'left';\n }\n return yDistance > 0 ? 'down' : 'up';\n};\n\n// 计算2点之间的距离\nconst calcDistance = (point1: IPointLike, point2: IPointLike) => {\n const xDistance = Math.abs(point2.x - point1.x);\n const yDistance = Math.abs(point2.y - point1.y);\n return Math.sqrt(xDistance * xDistance + yDistance * yDistance);\n};\n\nconst getCenter = (points: IPointLike[]) => {\n const pointersLength = points.length;\n\n if (pointersLength === 1) {\n return {\n x: Math.round(points[0].x),\n y: Math.round(points[0].y)\n };\n }\n\n let x = 0;\n let y = 0;\n let i = 0;\n while (i < pointersLength) {\n x += points[i].x;\n y += points[i].y;\n i++;\n }\n\n return {\n x: Math.round(x / pointersLength),\n y: Math.round(y / pointersLength)\n };\n};\n\nexport class Gesture extends EventEmitter {\n element: INode | null;\n\n private cachedEvents: IFederatedPointerEvent[] = [];\n private startTime: number;\n // @ts-ignore\n // eslint-disable-next-line no-undef\n private pressTimeout: NodeJS.Timeout | null;\n private startPoints: IPointLike[] = [];\n // 用来记录当前触发的事件\n private processEvent: Record<string, boolean> = {};\n private startDistance: number;\n private center: IPointLike;\n private eventType: string | null;\n private direction: GestureDirection | null;\n\n private lastMoveTime: number;\n private prevMoveTime: number;\n\n private prevMovePoint: IPointLike | null;\n private lastMovePoint: IPointLike | null;\n\n private throttleTimer: number = 0;\n private emitThrottles: EmitEventObject[] = [];\n\n private config: DefaultGestureConfig;\n\n constructor(element: IEventTarget, config: GestureConfig = {}) {\n super();\n this.element = element;\n this.config = {\n press: {\n time: config?.press?.time ?? PRESS_TIME,\n threshold: config?.press?.threshold ?? PRESS_THRESHOLD\n },\n swipe: {\n threshold: config?.swipe?.threshold ?? SWIPE_THRESHOLD,\n velocity: config?.swipe?.velocity ?? SWIPE_VELOCITY\n }\n };\n this.initEvents();\n }\n\n initEvents() {\n const { element } = this;\n if (!element) {\n return;\n }\n\n element.addEventListener('pointerdown', this.onStart);\n element.addEventListener('pointermove', this.onMove);\n element.addEventListener('pointerup', this.onEnd);\n element.addEventListener('pointerupoutside', this.onEnd);\n }\n\n removeEvents() {\n const { element } = this;\n if (!element) {\n return;\n }\n element.removeEventListener('pointerdown', this.onStart);\n element.removeEventListener('pointermove', this.onMove);\n element.removeEventListener('pointerup', this.onEnd);\n element.removeEventListener('pointerupoutside', this.onEnd);\n }\n\n release() {\n this.removeEvents();\n this.element = null;\n }\n\n private onStart = (ev?: FederatedPointerEvent) => {\n this.reset();\n\n this.startTime = clock.now();\n\n const { cachedEvents, startPoints } = this;\n\n if (ev) {\n cachedEvents.push(ev.clone());\n }\n // 重置 startPoints\n startPoints.length = cachedEvents.length;\n for (let i = 0; i < cachedEvents.length; i++) {\n const { x, y } = cachedEvents[i];\n const point = { x, y };\n startPoints[i] = point;\n }\n\n if (startPoints.length === 1) {\n const event = cachedEvents[0] as unknown as GestureEvent;\n this.pressTimeout = setTimeout(() => {\n const eventType = 'press';\n const direction = 'none';\n event.direction = direction;\n event.deltaX = 0;\n event.deltaY = 0;\n event.points = startPoints;\n this.triggerStartEvent(eventType, event);\n this.triggerEvent(eventType, event);\n this.eventType = eventType;\n this.direction = direction;\n }, this.config.press.time);\n return;\n }\n\n this.startDistance = calcDistance(startPoints[0], startPoints[1]);\n this.center = getCenter([startPoints[0], startPoints[1]]);\n };\n\n private onMove = (ev: FederatedPointerEvent) => {\n this.clearPressTimeout();\n const { startPoints, cachedEvents } = this;\n if (!startPoints.length) {\n return;\n }\n\n const moveEvent = ev.clone() as unknown as GestureEvent;\n const { x, y, pointerId } = moveEvent;\n for (let i = 0, len = cachedEvents.length; i < len; i++) {\n if (pointerId === cachedEvents[i].pointerId) {\n cachedEvents[i] = moveEvent;\n break;\n }\n }\n const point = { x, y };\n const points = cachedEvents.map(cachedEvent => ({ x: cachedEvent.x, y: cachedEvent.y }));\n\n const now = clock.now();\n this.prevMoveTime = this.lastMoveTime;\n this.prevMovePoint = this.lastMovePoint;\n this.lastMoveTime = now;\n this.lastMovePoint = point;\n\n if (startPoints.length === 1) {\n const startPoint = startPoints[0];\n const deltaX = x - startPoint.x;\n const deltaY = y - startPoint.y;\n const direction = this.direction || calcDirection(startPoint, point);\n this.direction = direction;\n\n const eventType = this.getEventType(point);\n moveEvent.direction = direction;\n moveEvent.deltaX = deltaX;\n moveEvent.deltaY = deltaY;\n moveEvent.points = points;\n this.triggerStartEvent(eventType, moveEvent);\n this.triggerEvent(eventType, moveEvent);\n return;\n }\n\n const { startDistance } = this;\n const currentDistance = calcDistance(points[0], points[1]);\n\n // 缩放比例\n moveEvent.scale = currentDistance / startDistance;\n moveEvent.center = this.center;\n moveEvent.points = points;\n this.triggerStartEvent('pinch', moveEvent);\n this.triggerEvent('pinch', moveEvent);\n };\n\n private onEnd = (ev: FederatedPointerEvent) => {\n const endEvent = ev.clone() as unknown as GestureEvent;\n const { cachedEvents, startPoints } = this;\n const points = cachedEvents.map(ev => {\n return { x: ev.x, y: ev.y };\n });\n endEvent.points = points;\n this.triggerEndEvent(endEvent);\n\n if (cachedEvents.length === 1) {\n const now = clock.now();\n const lastMoveTime = this.lastMoveTime;\n // 做这个判断是为了最后一次touchmove后到end前,是否还有一个停顿的过程\n // 100 是拍的一个值,理论这个值会很短,一般不卡顿的话在10ms以内\n if (now - lastMoveTime < 100) {\n const prevMoveTime = this.prevMoveTime || this.startTime;\n const intervalTime = lastMoveTime - prevMoveTime;\n // 时间间隔一定要大于0, 否则计算没意义\n if (intervalTime > 0) {\n const prevMovePoint = this.prevMovePoint || startPoints[0];\n const lastMovePoint = this.lastMovePoint || startPoints[0];\n const distance = calcDistance(prevMovePoint, lastMovePoint);\n // move速率\n const velocity = distance / intervalTime;\n // 0.3 是参考hammerjs的设置\n if (velocity > this.config.swipe.velocity && distance > this.config.swipe.threshold) {\n endEvent.velocity = velocity;\n endEvent.direction = calcDirection(prevMovePoint, lastMovePoint);\n this.triggerEvent('swipe', endEvent);\n }\n }\n }\n }\n\n for (let i = 0, len = cachedEvents.length; i < len; i++) {\n if (cachedEvents[i].pointerId === endEvent.pointerId) {\n cachedEvents.splice(i, 1);\n startPoints.splice(i, 1);\n break;\n }\n }\n\n this.reset();\n\n // 多指离开 1 指后,重新触发一次start\n if (cachedEvents.length > 0) {\n this.onStart();\n }\n };\n\n private getEventType(point: IPointLike) {\n const { eventType, startTime, startPoints } = this;\n if (eventType) {\n return eventType;\n }\n let type;\n const now = clock.now();\n if (now - startTime > this.config.press.time && calcDistance(startPoints[0], point) < this.config.press.threshold) {\n type = 'press';\n } else {\n type = 'pan';\n }\n this.eventType = type;\n return type;\n }\n\n private enable(eventType: string) {\n this.processEvent[eventType] = true;\n }\n\n // 是否进行中的事件\n private isProcess(eventType: string) {\n return this.processEvent[eventType];\n }\n\n private pushEvent(type: string, ev: GestureEvent) {\n const { emitThrottles } = this;\n const newEvent = { type, ev };\n for (let i = 0, len = emitThrottles.length; i < len; i++) {\n if (emitThrottles[i].type === type) {\n emitThrottles.splice(i, 1, newEvent);\n return;\n }\n }\n emitThrottles.push(newEvent);\n }\n\n private clearPressTimeout() {\n if (this.pressTimeout) {\n clearTimeout(this.pressTimeout);\n this.pressTimeout = null;\n }\n }\n\n private reset() {\n this.clearPressTimeout();\n this.startTime = 0;\n this.startDistance = 0;\n this.direction = null;\n this.eventType = null;\n this.prevMoveTime = 0;\n this.prevMovePoint = null;\n this.lastMoveTime = 0;\n this.lastMovePoint = null;\n }\n\n private triggerEvent(type: string, ev: GestureEvent) {\n // 主要是节流处理\n this.pushEvent(type, ev);\n const { throttleTimer, emitThrottles } = this;\n if (throttleTimer) {\n return;\n }\n\n this.throttleTimer = application.global.getRequestAnimationFrame()(() => {\n for (let i = 0, len = emitThrottles.length; i < len; i++) {\n const { type, ev } = emitThrottles[i];\n this.emitEvent(type, ev);\n }\n // 清空\n this.throttleTimer = 0;\n this.emitThrottles.length = 0;\n });\n }\n\n // 触发start事件\n private triggerStartEvent(type: string, ev: GestureEvent) {\n if (this.isProcess(type)) {\n return;\n }\n this.enable(type);\n this.triggerEvent(`${type}start`, ev);\n }\n\n private triggerEndEvent(ev: GestureEvent) {\n const processEvent = this.processEvent;\n Object.keys(processEvent).forEach(type => {\n this.triggerEvent(`${type}end`, ev);\n if (type === 'press') {\n // pressend 别名,pressup\n this.triggerEvent(`${type}up`, ev);\n }\n delete processEvent[type];\n });\n }\n\n private emitEvent(type: string, e: GestureEvent) {\n const events = (this.element as unknown as any)._events;\n const listeners = events[WILDCARD];\n if (listeners) {\n if ('fn' in listeners) {\n listeners.fn.call(listeners.context, e, type);\n } else {\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) {\n listeners[i].fn.call(listeners[i].context, e, type);\n }\n }\n }\n\n this.emit(type, e);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/event/extension/gesture.ts"],"names":[],"mappings":"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","file":"gesture.js","sourcesContent":["import { application, clock, WILDCARD } from '@visactor/vrender-core';\nimport type { IEventTarget, IFederatedPointerEvent, FederatedPointerEvent, INode } from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\nimport { EventEmitter } from '@visactor/vutils';\n\nimport type { DefaultGestureConfig, EmitEventObject, GestureConfig, GestureDirection, GestureEvent } from './interface';\n\n/**\n * 代码参考 https://github.com/hammerjs/hammer.js\n * The MIT License (MIT)\n\n Copyright (C) 2011-2017 by Jorik Tangelder (Eight Media)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\nconst PRESS_TIME = 251;\nconst PRESS_THRESHOLD = 9;\nconst SWIPE_VELOCITY = 0.3;\nconst SWIPE_THRESHOLD = 10;\nconst TAP_INTERVAL = 300;\n\nconst calcDirection = (start: IPointLike, end: IPointLike) => {\n const xDistance = end.x - start.x;\n const yDistance = end.y - start.y;\n if (Math.abs(xDistance) > Math.abs(yDistance)) {\n return xDistance > 0 ? 'right' : 'left';\n }\n return yDistance > 0 ? 'down' : 'up';\n};\n\n// 计算2点之间的距离\nconst calcDistance = (point1: IPointLike, point2: IPointLike) => {\n const xDistance = Math.abs(point2.x - point1.x);\n const yDistance = Math.abs(point2.y - point1.y);\n return Math.sqrt(xDistance * xDistance + yDistance * yDistance);\n};\n\nconst getCenter = (points: IPointLike[]) => {\n const pointersLength = points.length;\n\n if (pointersLength === 1) {\n return {\n x: Math.round(points[0].x),\n y: Math.round(points[0].y)\n };\n }\n\n let x = 0;\n let y = 0;\n let i = 0;\n while (i < pointersLength) {\n x += points[i].x;\n y += points[i].y;\n i++;\n }\n\n return {\n x: Math.round(x / pointersLength),\n y: Math.round(y / pointersLength)\n };\n};\n\nexport class Gesture extends EventEmitter {\n element: INode | null;\n\n private cachedEvents: IFederatedPointerEvent[] = [];\n private startTime: number;\n // @ts-ignore\n // eslint-disable-next-line no-undef\n private pressTimeout: NodeJS.Timeout | null;\n private startPoints: IPointLike[] = [];\n // 用来记录当前触发的事件\n private processEvent: Record<string, boolean> = {};\n private startDistance: number;\n private center: IPointLike;\n private eventType: string | null;\n private direction: GestureDirection | null;\n\n private lastMoveTime: number;\n private prevMoveTime: number;\n\n private prevMovePoint: IPointLike | null;\n private lastMovePoint: IPointLike | null;\n\n private throttleTimer: number = 0;\n private emitThrottles: EmitEventObject[] = [];\n\n private config: DefaultGestureConfig;\n\n private tapCount;\n private lastTapTime;\n private lastTapTarget: IEventTarget | null = null;\n\n constructor(element: IEventTarget, config: GestureConfig = {}) {\n super();\n this.element = element;\n this.tapCount = 0;\n this.lastTapTime = 0;\n this.config = {\n press: {\n time: config?.press?.time ?? PRESS_TIME,\n threshold: config?.press?.threshold ?? PRESS_THRESHOLD\n },\n swipe: {\n threshold: config?.swipe?.threshold ?? SWIPE_THRESHOLD,\n velocity: config?.swipe?.velocity ?? SWIPE_VELOCITY\n },\n tap: {\n interval: config?.tap?.interval ?? TAP_INTERVAL\n }\n };\n this.initEvents();\n }\n\n initEvents() {\n const { element } = this;\n if (!element) {\n return;\n }\n\n element.addEventListener('pointerdown', this.onStart);\n element.addEventListener('pointermove', this.onMove);\n element.addEventListener('pointerup', this.onEnd);\n element.addEventListener('pointerupoutside', this.onEnd);\n }\n\n removeEvents() {\n const { element } = this;\n if (!element) {\n return;\n }\n element.removeEventListener('pointerdown', this.onStart);\n element.removeEventListener('pointermove', this.onMove);\n element.removeEventListener('pointerup', this.onEnd);\n element.removeEventListener('pointerupoutside', this.onEnd);\n }\n\n release() {\n this.removeEvents();\n this.element = null;\n }\n\n private onStart = (ev?: FederatedPointerEvent) => {\n this.reset();\n\n this.startTime = clock.now();\n\n const { cachedEvents, startPoints } = this;\n\n if (ev) {\n cachedEvents.push(ev.clone());\n }\n // 重置 startPoints\n startPoints.length = cachedEvents.length;\n for (let i = 0; i < cachedEvents.length; i++) {\n const { x, y } = cachedEvents[i];\n const point = { x, y };\n startPoints[i] = point;\n }\n\n if (startPoints.length === 1) {\n const event = cachedEvents[0] as unknown as GestureEvent;\n this.pressTimeout = setTimeout(() => {\n const eventType = 'press';\n const direction = 'none';\n event.direction = direction;\n event.deltaX = 0;\n event.deltaY = 0;\n event.points = startPoints;\n this.triggerStartEvent(eventType, event);\n this.triggerEvent(eventType, event);\n this.eventType = eventType;\n this.direction = direction;\n }, this.config.press.time);\n return;\n }\n\n this.startDistance = calcDistance(startPoints[0], startPoints[1]);\n this.center = getCenter([startPoints[0], startPoints[1]]);\n };\n\n private onMove = (ev: FederatedPointerEvent) => {\n this.clearPressTimeout();\n const { startPoints, cachedEvents } = this;\n if (!startPoints.length) {\n return;\n }\n\n const moveEvent = ev.clone() as unknown as GestureEvent;\n const { x, y, pointerId } = moveEvent;\n for (let i = 0, len = cachedEvents.length; i < len; i++) {\n if (pointerId === cachedEvents[i].pointerId) {\n cachedEvents[i] = moveEvent;\n break;\n }\n }\n const point = { x, y };\n const points = cachedEvents.map(cachedEvent => ({ x: cachedEvent.x, y: cachedEvent.y }));\n\n const now = clock.now();\n this.prevMoveTime = this.lastMoveTime;\n this.prevMovePoint = this.lastMovePoint;\n this.lastMoveTime = now;\n this.lastMovePoint = point;\n\n if (startPoints.length === 1) {\n const startPoint = startPoints[0];\n const deltaX = x - startPoint.x;\n const deltaY = y - startPoint.y;\n const direction = this.direction || calcDirection(startPoint, point);\n this.direction = direction;\n\n const eventType = this.getEventType(point);\n moveEvent.direction = direction;\n moveEvent.deltaX = deltaX;\n moveEvent.deltaY = deltaY;\n moveEvent.points = points;\n this.triggerStartEvent(eventType, moveEvent);\n this.triggerEvent(eventType, moveEvent);\n return;\n }\n\n const { startDistance } = this;\n const currentDistance = calcDistance(points[0], points[1]);\n\n // 缩放比例\n moveEvent.scale = currentDistance / startDistance;\n moveEvent.center = this.center;\n moveEvent.points = points;\n this.triggerStartEvent('pinch', moveEvent);\n this.triggerEvent('pinch', moveEvent);\n };\n\n private onEnd = (ev: FederatedPointerEvent) => {\n const endEvent = ev.clone() as unknown as GestureEvent;\n const { cachedEvents, startPoints } = this;\n const points = cachedEvents.map(ev => {\n return { x: ev.x, y: ev.y };\n });\n endEvent.points = points;\n this.triggerEndEvent(endEvent);\n\n if (cachedEvents.length === 1) {\n const now = clock.now();\n const lastMoveTime = this.lastMoveTime;\n // 做这个判断是为了最后一次touchmove后到end前,是否还有一个停顿的过程\n // 100 是拍的一个值,理论这个值会很短,一般不卡顿的话在10ms以内\n if (now - lastMoveTime < 100) {\n const prevMoveTime = this.prevMoveTime || this.startTime;\n const intervalTime = lastMoveTime - prevMoveTime;\n // 时间间隔一定要大于0, 否则计算没意义\n if (intervalTime > 0) {\n const prevMovePoint = this.prevMovePoint || startPoints[0];\n const lastMovePoint = this.lastMovePoint || startPoints[0];\n const distance = calcDistance(prevMovePoint, lastMovePoint);\n // move速率\n const velocity = distance / intervalTime;\n // 0.3 是参考hammerjs的设置\n if (velocity > this.config.swipe.velocity && distance > this.config.swipe.threshold) {\n endEvent.velocity = velocity;\n endEvent.direction = calcDirection(prevMovePoint, lastMovePoint);\n this.triggerEvent('swipe', endEvent);\n }\n }\n }\n\n if (now - this.lastTapTime < this.config.tap.interval && ev.target === this.lastTapTarget) {\n this.tapCount++;\n } else {\n this.tapCount = 1;\n }\n this.lastTapTime = now;\n this.lastTapTarget = ev.target;\n\n if (this.tapCount === 1) {\n this.triggerEvent('tap', endEvent);\n } else if (this.tapCount === 2) {\n this.triggerEvent('doubletap', endEvent);\n this.tapCount = 0; // reset tapCount after doubletap\n }\n }\n\n for (let i = 0, len = cachedEvents.length; i < len; i++) {\n if (cachedEvents[i].pointerId === endEvent.pointerId) {\n cachedEvents.splice(i, 1);\n startPoints.splice(i, 1);\n break;\n }\n }\n\n this.reset();\n\n // 多指离开 1 指后,重新触发一次start\n if (cachedEvents.length > 0) {\n this.onStart();\n }\n };\n\n private getEventType(point: IPointLike) {\n const { eventType, startTime, startPoints } = this;\n if (eventType) {\n return eventType;\n }\n let type;\n const now = clock.now();\n if (now - startTime > this.config.press.time && calcDistance(startPoints[0], point) < this.config.press.threshold) {\n type = 'press';\n } else {\n type = 'pan';\n }\n this.eventType = type;\n return type;\n }\n\n private enable(eventType: string) {\n this.processEvent[eventType] = true;\n }\n\n // 是否进行中的事件\n private isProcess(eventType: string) {\n return this.processEvent[eventType];\n }\n\n private pushEvent(type: string, ev: GestureEvent) {\n const { emitThrottles } = this;\n const newEvent = { type, ev };\n for (let i = 0, len = emitThrottles.length; i < len; i++) {\n if (emitThrottles[i].type === type) {\n emitThrottles.splice(i, 1, newEvent);\n return;\n }\n }\n emitThrottles.push(newEvent);\n }\n\n private clearPressTimeout() {\n if (this.pressTimeout) {\n clearTimeout(this.pressTimeout);\n this.pressTimeout = null;\n }\n }\n\n private reset() {\n this.clearPressTimeout();\n this.startTime = 0;\n this.startDistance = 0;\n this.direction = null;\n this.eventType = null;\n this.prevMoveTime = 0;\n this.prevMovePoint = null;\n this.lastMoveTime = 0;\n this.lastMovePoint = null;\n }\n\n private triggerEvent(type: string, ev: GestureEvent) {\n // 主要是节流处理\n this.pushEvent(type, ev);\n const { throttleTimer, emitThrottles } = this;\n if (throttleTimer) {\n return;\n }\n\n this.throttleTimer = application.global.getRequestAnimationFrame()(() => {\n for (let i = 0, len = emitThrottles.length; i < len; i++) {\n const { type, ev } = emitThrottles[i];\n this.emitEvent(type, ev);\n }\n // 清空\n this.throttleTimer = 0;\n this.emitThrottles.length = 0;\n });\n }\n\n // 触发start事件\n private triggerStartEvent(type: string, ev: GestureEvent) {\n if (this.isProcess(type)) {\n return;\n }\n this.enable(type);\n this.triggerEvent(`${type}start`, ev);\n }\n\n private triggerEndEvent(ev: GestureEvent) {\n const processEvent = this.processEvent;\n Object.keys(processEvent).forEach(type => {\n this.triggerEvent(`${type}end`, ev);\n if (type === 'press') {\n // pressend 别名,pressup\n this.triggerEvent(`${type}up`, ev);\n }\n delete processEvent[type];\n });\n }\n\n private emitEvent(type: string, e: GestureEvent) {\n const events = (this.element as unknown as any)._events;\n const listeners = events[WILDCARD];\n if (listeners) {\n if ('fn' in listeners) {\n listeners.fn.call(listeners.context, e, type);\n } else {\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) {\n listeners[i].fn.call(listeners[i].context, e, type);\n }\n }\n }\n\n this.emit(type, e);\n }\n}\n"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { IFederatedPointerEvent } from '@visactor/vrender-core';
|
|
2
|
+
import type { IPointLike } from '@visactor/vutils';
|
|
3
|
+
export type GestureDirection = 'none' | 'left' | 'right' | 'down' | 'up';
|
|
4
|
+
export interface GestureEvent extends IFederatedPointerEvent {
|
|
5
|
+
points: IPointLike[];
|
|
6
|
+
direction: GestureDirection;
|
|
7
|
+
deltaX: number;
|
|
8
|
+
deltaY: number;
|
|
9
|
+
scale: number;
|
|
10
|
+
center: IPointLike;
|
|
11
|
+
velocity: number;
|
|
12
|
+
}
|
|
13
|
+
export interface GestureConfig {
|
|
14
|
+
press?: {
|
|
15
|
+
time?: number;
|
|
16
|
+
threshold?: number;
|
|
17
|
+
};
|
|
18
|
+
swipe?: {
|
|
19
|
+
threshold?: number;
|
|
20
|
+
velocity?: number;
|
|
21
|
+
};
|
|
22
|
+
tap?: {
|
|
23
|
+
interval?: number;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface DefaultGestureConfig {
|
|
27
|
+
press: {
|
|
28
|
+
time: number;
|
|
29
|
+
threshold: number;
|
|
30
|
+
};
|
|
31
|
+
swipe: {
|
|
32
|
+
threshold: number;
|
|
33
|
+
velocity: number;
|
|
34
|
+
};
|
|
35
|
+
tap: {
|
|
36
|
+
interval: number;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export interface EmitEventObject {
|
|
40
|
+
type: string;
|
|
41
|
+
ev: GestureEvent;
|
|
42
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/event/extension/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IFederatedPointerEvent } from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\n\nexport type GestureDirection = 'none' | 'left' | 'right' | 'down' | 'up';\n\nexport interface GestureEvent extends IFederatedPointerEvent {\n points: IPointLike[];\n direction: GestureDirection;\n deltaX: number;\n deltaY: number;\n scale: number;\n center: IPointLike;\n velocity: number;\n}\n\nexport interface GestureConfig {\n press?: {\n /**\n * @default 251\n * Minimal press time in ms.\n * @see http://hammerjs.github.io/recognizer-press/\n */\n time?: number;\n /**\n * @default 10\n * Minimal movement that is allowed while pressing.\n * @see http://hammerjs.github.io/recognizer-press/\n */\n threshold?: number;\n };\n swipe?: {\n /**\n * Minimal distance required before recognizing.\n * @default 10\n * @see https://hammerjs.github.io/recognizer-swipe/\n */\n threshold?: number;\n /**\n * Minimal velocity required before recognizing, unit is in px per ms.\n * @default 0.3\n * @see http://hammerjs.github.io/recognizer-swipe/\n */\n velocity?: number;\n };\n tap?: {\n /**\n * max time between the multi-tap taps\n * @default 300\n */\n interval?: number;\n };\n}\n\nexport interface DefaultGestureConfig {\n press: {\n time: number;\n threshold: number;\n };\n swipe: {\n threshold: number;\n velocity: number;\n };\n tap: {\n interval: number;\n };\n}\n\nexport interface EmitEventObject {\n type: string;\n ev: GestureEvent;\n}\n"]}
|
package/cjs/index.d.ts
CHANGED
package/cjs/index.js
CHANGED
|
@@ -26,6 +26,5 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
26
26
|
const module_1 = __importDefault(require("./render/contributions/rough/module"));
|
|
27
27
|
|
|
28
28
|
exports.roughModule = module_1.default, __exportStar(require("./jsx"), exports),
|
|
29
|
-
__exportStar(require("./event/extension"), exports), __exportStar(require("./env
|
|
30
|
-
__exportStar(require("./env"), exports);
|
|
29
|
+
__exportStar(require("./event/extension"), exports), __exportStar(require("./env"), exports);
|
|
31
30
|
//# sourceMappingURL=index.js.map
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,iFAA+D;AAGlD,QAAA,WAAW,GAAG,gBAAY,CAAC;AAExC,wCAAsB;AACtB,oDAAkC;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,iFAA+D;AAGlD,QAAA,WAAW,GAAG,gBAAY,CAAC;AAExC,wCAAsB;AACtB,oDAAkC;AAElC,wCAAsB","file":"index.js","sourcesContent":["import _roughModule from './render/contributions/rough/module';\n// import _canvasModuleLoader from './canvas/contributions/canvas-module';\n\nexport const roughModule = _roughModule;\n\nexport * from './jsx';\nexport * from './event/extension';\n// export * from './env/browser';\nexport * from './env';\n// export const canvasModuleLoader = _canvasModuleLoader;\n// export { nodeLoader } from './node-bind'; // nodeLoader只在node入口暴露\n"]}
|
|
@@ -3,25 +3,13 @@ import { DefaultPickService } from '@visactor/vrender-core';
|
|
|
3
3
|
import type { ICanvas, IContext2d, IGraphic, EnvType, IGlobal, IGraphicPicker, IPickerService, IDrawContribution, IContributionProvider, IPickItemInterceptorContribution, IPickParams, PickResult } from '@visactor/vrender-core';
|
|
4
4
|
export declare class DefaultCanvasPickerService extends DefaultPickService implements IPickerService {
|
|
5
5
|
protected readonly contributions: IContributionProvider<IGraphicPicker>;
|
|
6
|
-
private readonly circlePicker;
|
|
7
|
-
private readonly rectPicker;
|
|
8
|
-
private readonly arcPicker;
|
|
9
|
-
private readonly areaPicker;
|
|
10
|
-
private readonly imagePicker;
|
|
11
|
-
private readonly linePicker;
|
|
12
|
-
private readonly pathPicker;
|
|
13
|
-
private readonly symbolPicker;
|
|
14
|
-
private readonly textPicker;
|
|
15
|
-
private readonly polygonPicker;
|
|
16
|
-
private readonly richtextPicker;
|
|
17
6
|
readonly drawContribution: IDrawContribution;
|
|
18
|
-
readonly global: IGlobal;
|
|
19
7
|
protected readonly pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>;
|
|
20
8
|
type: 'default';
|
|
21
9
|
pickCanvas: ICanvas;
|
|
22
10
|
pickContext: IContext2d;
|
|
23
11
|
pickerMap: Map<number, IGraphicPicker>;
|
|
24
|
-
constructor(contributions: IContributionProvider<IGraphicPicker>,
|
|
12
|
+
constructor(contributions: IContributionProvider<IGraphicPicker>, drawContribution: IDrawContribution, pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>);
|
|
25
13
|
init(): void;
|
|
26
14
|
configure(global: IGlobal, env: EnvType): void;
|
|
27
15
|
pickItem(graphic: IGraphic, point: IPointLike, parentMatrix: IMatrix | null, params: IPickParams): PickResult | null;
|
|
@@ -19,16 +19,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
19
19
|
const vrender_core_1 = require("@visactor/vrender-core"), constants_1 = require("./contributions/constants");
|
|
20
20
|
|
|
21
21
|
let DefaultCanvasPickerService = class extends vrender_core_1.DefaultPickService {
|
|
22
|
-
constructor(contributions,
|
|
23
|
-
super(
|
|
24
|
-
this.
|
|
25
|
-
this.areaPicker = areaPicker, this.imagePicker = imagePicker, this.linePicker = linePicker,
|
|
26
|
-
this.pathPicker = pathPicker, this.symbolPicker = symbolPicker, this.textPicker = textPicker,
|
|
27
|
-
this.polygonPicker = polygonPicker, this.richtextPicker = richtextPicker, this.drawContribution = drawContribution,
|
|
28
|
-
this.global = global, this.pickItemInterceptorContributions = pickItemInterceptorContributions,
|
|
29
|
-
this.global.hooks.onSetEnv.tap("canvas-picker-service", ((_, env, global) => {
|
|
22
|
+
constructor(contributions, drawContribution, pickItemInterceptorContributions) {
|
|
23
|
+
super(pickItemInterceptorContributions), this.contributions = contributions, this.drawContribution = drawContribution,
|
|
24
|
+
this.pickItemInterceptorContributions = pickItemInterceptorContributions, this.global.hooks.onSetEnv.tap("canvas-picker-service", ((_, env, global) => {
|
|
30
25
|
this.configure(global, env);
|
|
31
|
-
})), this.configure(this.global, this.global.env), this.pickerMap = new Map;
|
|
26
|
+
})), this.configure(this.global, this.global.env), this.pickerMap = new Map, this.init();
|
|
32
27
|
}
|
|
33
28
|
init() {
|
|
34
29
|
this.contributions.getContributions().forEach((item => {
|
|
@@ -36,16 +31,7 @@ let DefaultCanvasPickerService = class extends vrender_core_1.DefaultPickService
|
|
|
36
31
|
})), super._init();
|
|
37
32
|
}
|
|
38
33
|
configure(global, env) {
|
|
39
|
-
|
|
40
|
-
width: 100,
|
|
41
|
-
height: 100,
|
|
42
|
-
nativeCanvas: global.createCanvas({
|
|
43
|
-
width: 100,
|
|
44
|
-
height: 100
|
|
45
|
-
}),
|
|
46
|
-
id: "for-pick"
|
|
47
|
-
};
|
|
48
|
-
this.pickCanvas = (0, vrender_core_1.wrapCanvas)(options), this.pickContext = this.pickCanvas.getContext("2d");
|
|
34
|
+
this.pickCanvas = vrender_core_1.canvasAllocate.shareCanvas(), this.pickContext = this.pickCanvas.getContext("2d");
|
|
49
35
|
}
|
|
50
36
|
pickItem(graphic, point, parentMatrix, params) {
|
|
51
37
|
if (!1 === graphic.attribute.pickable) return null;
|
|
@@ -77,15 +63,8 @@ let DefaultCanvasPickerService = class extends vrender_core_1.DefaultPickService
|
|
|
77
63
|
}
|
|
78
64
|
};
|
|
79
65
|
|
|
80
|
-
__decorate([ (0, vrender_core_1.postConstruct)(), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], DefaultCanvasPickerService.prototype, "init", null),
|
|
81
66
|
DefaultCanvasPickerService = __decorate([ (0, vrender_core_1.injectable)(), __param(0, (0,
|
|
82
67
|
vrender_core_1.inject)(vrender_core_1.ContributionProvider)), __param(0, (0, vrender_core_1.named)(constants_1.CanvasPickerContribution)), __param(1, (0,
|
|
83
|
-
vrender_core_1.inject)(
|
|
84
|
-
vrender_core_1.
|
|
85
|
-
vrender_core_1.inject)(constants_1.CanvasImagePicker)), __param(6, (0, vrender_core_1.inject)(constants_1.CanvasLinePicker)), __param(7, (0,
|
|
86
|
-
vrender_core_1.inject)(constants_1.CanvasPathPicker)), __param(8, (0, vrender_core_1.inject)(constants_1.CanvasSymbolPicker)), __param(9, (0,
|
|
87
|
-
vrender_core_1.inject)(constants_1.CanvasTextPicker)), __param(10, (0, vrender_core_1.inject)(constants_1.CanvasPolygonPicker)), __param(11, (0,
|
|
88
|
-
vrender_core_1.inject)(constants_1.CanvasRichTextPicker)), __param(12, (0, vrender_core_1.inject)(vrender_core_1.DrawContribution)), __param(13, (0,
|
|
89
|
-
vrender_core_1.inject)(vrender_core_1.VGlobal)), __param(14, (0, vrender_core_1.inject)(vrender_core_1.ContributionProvider)), __param(14, (0,
|
|
90
|
-
vrender_core_1.named)(vrender_core_1.PickItemInterceptor)), __metadata("design:paramtypes", [ Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object ]) ], DefaultCanvasPickerService),
|
|
68
|
+
vrender_core_1.inject)(vrender_core_1.DrawContribution)), __param(2, (0, vrender_core_1.inject)(vrender_core_1.ContributionProvider)), __param(2, (0,
|
|
69
|
+
vrender_core_1.named)(vrender_core_1.PickItemInterceptor)), __metadata("design:paramtypes", [ Object, Object, Object ]) ], DefaultCanvasPickerService),
|
|
91
70
|
exports.DefaultCanvasPickerService = DefaultCanvasPickerService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/canvas-picker-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"sources":["../src/picker/canvas-picker-service.ts"],"names":[],"mappings":"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","file":"canvas-picker-service.js","sourcesContent":["import type { IMatrix, IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line\nimport {\n ContributionProvider,\n inject,\n injectable,\n named,\n DefaultPickService,\n DrawContribution,\n PickItemInterceptor,\n canvasAllocate,\n application\n} from '@visactor/vrender-core';\nimport type {\n ICanvas,\n IContext2d,\n IGraphic,\n EnvType,\n IGlobal,\n IGraphicPicker,\n IPickerService,\n IDrawContribution,\n IContributionProvider,\n IPickItemInterceptorContribution,\n IPickParams,\n PickResult\n} from '@visactor/vrender-core';\nimport {\n CanvasArcPicker,\n CanvasAreaPicker,\n CanvasCirclePicker,\n CanvasImagePicker,\n CanvasLinePicker,\n CanvasPathPicker,\n CanvasPickerContribution,\n CanvasPolygonPicker,\n CanvasRectPicker,\n CanvasSymbolPicker,\n CanvasTextPicker,\n CanvasRichTextPicker\n} from './contributions/constants';\n\n// 默认的pick-service,提供基本的最优选中策略,尽量不需要用户自己实现contribution\n// 用户可以写plugin\n@injectable()\nexport class DefaultCanvasPickerService extends DefaultPickService implements IPickerService {\n declare type: 'default';\n // pcik canvas\n declare pickCanvas: ICanvas;\n declare pickContext: IContext2d;\n declare pickerMap: Map<number, IGraphicPicker>;\n\n constructor(\n @inject(ContributionProvider)\n @named(CanvasPickerContribution)\n protected readonly contributions: IContributionProvider<IGraphicPicker>,\n\n @inject(DrawContribution)\n public readonly drawContribution: IDrawContribution,\n // 拦截器\n @inject(ContributionProvider)\n @named(PickItemInterceptor)\n protected readonly pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>\n ) {\n super(pickItemInterceptorContributions);\n this.global.hooks.onSetEnv.tap('canvas-picker-service', (_, env, global) => {\n this.configure(global, env);\n });\n this.configure(this.global, this.global.env);\n this.pickerMap = new Map();\n this.init();\n }\n\n init() {\n this.contributions.getContributions().forEach(item => {\n this.pickerMap.set(item.numberType, item);\n });\n super._init();\n }\n\n configure(global: IGlobal, env: EnvType) {\n // if (!this.global.env) return;\n // this.contributions.getContributions().forEach(handlerContribution => {\n // handlerContribution.configure(this, this.global);\n // });\n\n // 创建pick canvas\n this.pickCanvas = canvasAllocate.shareCanvas();\n this.pickContext = this.pickCanvas.getContext('2d');\n }\n\n // todo: switch统一改为数字map\n pickItem(graphic: IGraphic, point: IPointLike, parentMatrix: IMatrix | null, params: IPickParams): PickResult | null {\n if (graphic.attribute.pickable === false) {\n return null;\n }\n // 添加拦截器\n if (this.InterceptorContributions.length) {\n for (let i = 0; i < this.InterceptorContributions.length; i++) {\n const drawContribution = this.InterceptorContributions[i];\n if (drawContribution.beforePickItem) {\n const ret = drawContribution.beforePickItem(graphic, this, point, params, { parentMatrix });\n if (ret) {\n return ret;\n }\n }\n }\n }\n const picker = this.pickerMap.get(graphic.numberType);\n if (!picker) {\n return null;\n }\n const g = picker.contains(graphic, point, params) ? graphic : null;\n\n const data = {\n graphic: g\n };\n if (g) {\n return data;\n }\n // 添加拦截器\n if (this.InterceptorContributions.length) {\n for (let i = 0; i < this.InterceptorContributions.length; i++) {\n const drawContribution = this.InterceptorContributions[i];\n if (drawContribution.afterPickItem) {\n const ret = drawContribution.afterPickItem(graphic, this, point, params, { parentMatrix });\n if (ret) {\n return ret;\n }\n }\n }\n }\n return data;\n }\n}\n"]}
|
|
@@ -7,39 +7,37 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
const vrender_core_1 = require("@visactor/vrender-core"), circle_picker_1 = require("./circle-picker"), rect_picker_1 = require("./rect-picker"), arc_picker_1 = require("./arc-picker"), area_picker_1 = require("./area-picker"), image_picker_1 = require("./image-picker"), line_picker_1 = require("./line-picker"), path_picker_1 = require("./path-picker"), symbol_picker_1 = require("./symbol-picker"), text_picker_1 = require("./text-picker"), constants_1 = require("../constants"), polygon_picker_1 = require("./polygon-picker"), richtext_picker_1 = require("./richtext-picker"), glyph_picker_1 = require("./glyph-picker"), rect3d_picker_1 = require("./rect3d-picker"), pyramid3d_picker_1 = require("./pyramid3d-picker"), arc3d_picker_1 = require("./arc3d-picker"), group_picker_1 = require("./group-picker");
|
|
8
8
|
|
|
9
9
|
exports.default = new vrender_core_1.ContainerModule(((bind, unbind, isBound, rebind) => {
|
|
10
|
-
bind(
|
|
10
|
+
bind(constants_1.CanvasCirclePicker).to(circle_picker_1.DefaultCanvasCirclePicker).inSingletonScope(),
|
|
11
11
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasCirclePicker),
|
|
12
|
-
bind(
|
|
12
|
+
bind(constants_1.CanvasRectPicker).to(rect_picker_1.DefaultCanvasRectPicker).inSingletonScope(),
|
|
13
13
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasRectPicker),
|
|
14
|
-
bind(
|
|
14
|
+
bind(constants_1.CanvasRect3dPicker).to(rect3d_picker_1.DefaultCanvasRect3dPicker).inSingletonScope(),
|
|
15
15
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasRect3dPicker),
|
|
16
|
-
bind(
|
|
16
|
+
bind(constants_1.CanvasArcPicker).to(arc_picker_1.DefaultCanvasArcPicker).inSingletonScope(),
|
|
17
17
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasArcPicker),
|
|
18
|
-
bind(
|
|
18
|
+
bind(constants_1.CanvasAreaPicker).to(area_picker_1.DefaultCanvasAreaPicker).inSingletonScope(),
|
|
19
19
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasAreaPicker),
|
|
20
|
-
bind(
|
|
20
|
+
bind(constants_1.CanvasImagePicker).to(image_picker_1.DefaultCanvasImagePicker).inSingletonScope(),
|
|
21
21
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasImagePicker),
|
|
22
|
-
bind(
|
|
22
|
+
bind(constants_1.CanvasLinePicker).to(line_picker_1.DefaultCanvasLinePicker).inSingletonScope(),
|
|
23
23
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasLinePicker),
|
|
24
|
-
bind(
|
|
24
|
+
bind(constants_1.CanvasPathPicker).to(path_picker_1.DefaultCanvasPathPicker).inSingletonScope(),
|
|
25
25
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasPathPicker),
|
|
26
|
-
bind(
|
|
26
|
+
bind(constants_1.CanvasSymbolPicker).to(symbol_picker_1.DefaultCanvasSymbolPicker).inSingletonScope(),
|
|
27
27
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasSymbolPicker),
|
|
28
|
-
bind(
|
|
28
|
+
bind(constants_1.CanvasTextPicker).to(text_picker_1.DefaultCanvasTextPicker).inSingletonScope(),
|
|
29
29
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasTextPicker),
|
|
30
|
-
bind(
|
|
30
|
+
bind(constants_1.CanvasPolygonPicker).to(polygon_picker_1.DefaultCanvasPolygonPicker).inSingletonScope(),
|
|
31
31
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasPolygonPicker),
|
|
32
|
-
bind(
|
|
33
|
-
bind(constants_1.CanvasPyramid3dPicker).toService(pyramid3d_picker_1.DefaultCanvasPyramid3dPicker),
|
|
32
|
+
bind(constants_1.CanvasPyramid3dPicker).to(pyramid3d_picker_1.DefaultCanvasPyramid3dPicker).inSingletonScope(),
|
|
34
33
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasPyramid3dPicker),
|
|
35
|
-
bind(
|
|
34
|
+
bind(constants_1.CanvasArc3dPicker).to(arc3d_picker_1.DefaultCanvasArc3dPicker).inSingletonScope(),
|
|
36
35
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasArc3dPicker),
|
|
37
|
-
bind(
|
|
38
|
-
bind(constants_1.CanvasRichTextPicker).toService(richtext_picker_1.DefaultCanvasRichTextPicker),
|
|
36
|
+
bind(constants_1.CanvasRichTextPicker).to(richtext_picker_1.DefaultCanvasRichTextPicker).inSingletonScope(),
|
|
39
37
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasRichTextPicker),
|
|
40
|
-
bind(
|
|
38
|
+
bind(constants_1.CanvasGlyphPicker).to(glyph_picker_1.DefaultCanvasGlyphPicker).inSingletonScope(),
|
|
41
39
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasGlyphPicker),
|
|
42
|
-
bind(
|
|
40
|
+
bind(constants_1.CanvasGroupPicker).to(group_picker_1.DefaultCanvasGroupPicker).inSingletonScope(),
|
|
43
41
|
bind(constants_1.CanvasPickerContribution).toService(constants_1.CanvasGroupPicker),
|
|
44
42
|
(0, vrender_core_1.bindContributionProvider)(bind, constants_1.CanvasPickerContribution);
|
|
45
43
|
}));
|