@visactor/vtable-gantt 1.5.4

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.
Files changed (190) hide show
  1. package/README.md +151 -0
  2. package/cjs/Gantt.d.ts +111 -0
  3. package/cjs/Gantt.js +244 -0
  4. package/cjs/Gantt.js.map +1 -0
  5. package/cjs/data/DataSource.d.ts +9 -0
  6. package/cjs/data/DataSource.js +30 -0
  7. package/cjs/data/DataSource.js.map +1 -0
  8. package/cjs/env.d.ts +19 -0
  9. package/cjs/env.js +48 -0
  10. package/cjs/env.js.map +1 -0
  11. package/cjs/event/EventHandler.d.ts +47 -0
  12. package/cjs/event/EventHandler.js +128 -0
  13. package/cjs/event/EventHandler.js.map +1 -0
  14. package/cjs/event/EventTarget.d.ts +12 -0
  15. package/cjs/event/EventTarget.js +67 -0
  16. package/cjs/event/EventTarget.js.map +1 -0
  17. package/cjs/event/event-manager.d.ts +15 -0
  18. package/cjs/event/event-manager.js +76 -0
  19. package/cjs/event/event-manager.js.map +1 -0
  20. package/cjs/event/scroll.d.ts +22 -0
  21. package/cjs/event/scroll.js +136 -0
  22. package/cjs/event/scroll.js.map +1 -0
  23. package/cjs/gantt-helper.d.ts +28 -0
  24. package/cjs/gantt-helper.js +225 -0
  25. package/cjs/gantt-helper.js.map +1 -0
  26. package/cjs/index.d.ts +7 -0
  27. package/cjs/index.js +48 -0
  28. package/cjs/index.js.map +1 -0
  29. package/cjs/register.d.ts +1 -0
  30. package/cjs/register.js +1 -0
  31. package/cjs/register.js.map +1 -0
  32. package/cjs/scenegraph/frame-border.d.ts +9 -0
  33. package/cjs/scenegraph/frame-border.js +42 -0
  34. package/cjs/scenegraph/frame-border.js.map +1 -0
  35. package/cjs/scenegraph/ganttNode.d.ts +7 -0
  36. package/cjs/scenegraph/ganttNode.js +16 -0
  37. package/cjs/scenegraph/ganttNode.js.map +1 -0
  38. package/cjs/scenegraph/grid.d.ts +30 -0
  39. package/cjs/scenegraph/grid.js +130 -0
  40. package/cjs/scenegraph/grid.js.map +1 -0
  41. package/cjs/scenegraph/mark-line.d.ts +15 -0
  42. package/cjs/scenegraph/mark-line.js +66 -0
  43. package/cjs/scenegraph/mark-line.js.map +1 -0
  44. package/cjs/scenegraph/scenegraph.d.ts +41 -0
  45. package/cjs/scenegraph/scenegraph.js +109 -0
  46. package/cjs/scenegraph/scenegraph.js.map +1 -0
  47. package/cjs/scenegraph/scroll-bar.d.ts +19 -0
  48. package/cjs/scenegraph/scroll-bar.js +150 -0
  49. package/cjs/scenegraph/scroll-bar.js.map +1 -0
  50. package/cjs/scenegraph/task-bar.d.ts +24 -0
  51. package/cjs/scenegraph/task-bar.js +188 -0
  52. package/cjs/scenegraph/task-bar.js.map +1 -0
  53. package/cjs/scenegraph/timeline-header.d.ts +10 -0
  54. package/cjs/scenegraph/timeline-header.js +134 -0
  55. package/cjs/scenegraph/timeline-header.js.map +1 -0
  56. package/cjs/state/gantt-table-sync.d.ts +7 -0
  57. package/cjs/state/gantt-table-sync.js +60 -0
  58. package/cjs/state/gantt-table-sync.js.map +1 -0
  59. package/cjs/state/state-manager.d.ts +58 -0
  60. package/cjs/state/state-manager.js +223 -0
  61. package/cjs/state/state-manager.js.map +1 -0
  62. package/cjs/themes.d.ts +1 -0
  63. package/cjs/themes.js +1 -0
  64. package/cjs/themes.js.map +1 -0
  65. package/cjs/tools/debounce.d.ts +1 -0
  66. package/cjs/tools/debounce.js +51 -0
  67. package/cjs/tools/debounce.js.map +1 -0
  68. package/cjs/tools/index.d.ts +2 -0
  69. package/cjs/tools/index.js +20 -0
  70. package/cjs/tools/index.js.map +1 -0
  71. package/cjs/tools/isx.d.ts +16 -0
  72. package/cjs/tools/isx.js +117 -0
  73. package/cjs/tools/isx.js.map +1 -0
  74. package/cjs/tools/pixel-ratio.d.ts +2 -0
  75. package/cjs/tools/pixel-ratio.js +16 -0
  76. package/cjs/tools/pixel-ratio.js.map +1 -0
  77. package/cjs/tools/util.d.ts +7 -0
  78. package/cjs/tools/util.js +87 -0
  79. package/cjs/tools/util.js.map +1 -0
  80. package/cjs/ts-types/EVENT_TYPE.d.ts +5 -0
  81. package/cjs/ts-types/EVENT_TYPE.js +9 -0
  82. package/cjs/ts-types/EVENT_TYPE.js.map +1 -0
  83. package/cjs/ts-types/common.d.ts +13 -0
  84. package/cjs/ts-types/common.js +14 -0
  85. package/cjs/ts-types/common.js.map +1 -0
  86. package/cjs/ts-types/events.d.ts +14 -0
  87. package/cjs/ts-types/events.js +6 -0
  88. package/cjs/ts-types/events.js.map +1 -0
  89. package/cjs/ts-types/gantt-engine.d.ts +163 -0
  90. package/cjs/ts-types/gantt-engine.js +6 -0
  91. package/cjs/ts-types/gantt-engine.js.map +1 -0
  92. package/cjs/ts-types/index.d.ts +4 -0
  93. package/cjs/ts-types/index.js +22 -0
  94. package/cjs/ts-types/index.js.map +1 -0
  95. package/dist/vtable-gantt.js +53942 -0
  96. package/dist/vtable-gantt.min.js +1 -0
  97. package/es/Gantt.d.ts +111 -0
  98. package/es/Gantt.js +246 -0
  99. package/es/Gantt.js.map +1 -0
  100. package/es/data/DataSource.d.ts +9 -0
  101. package/es/data/DataSource.js +22 -0
  102. package/es/data/DataSource.js.map +1 -0
  103. package/es/env.d.ts +19 -0
  104. package/es/env.js +42 -0
  105. package/es/env.js.map +1 -0
  106. package/es/event/EventHandler.d.ts +47 -0
  107. package/es/event/EventHandler.js +119 -0
  108. package/es/event/EventHandler.js.map +1 -0
  109. package/es/event/EventTarget.d.ts +12 -0
  110. package/es/event/EventTarget.js +58 -0
  111. package/es/event/EventTarget.js.map +1 -0
  112. package/es/event/event-manager.d.ts +15 -0
  113. package/es/event/event-manager.js +78 -0
  114. package/es/event/event-manager.js.map +1 -0
  115. package/es/event/scroll.d.ts +22 -0
  116. package/es/event/scroll.js +126 -0
  117. package/es/event/scroll.js.map +1 -0
  118. package/es/gantt-helper.d.ts +28 -0
  119. package/es/gantt-helper.js +220 -0
  120. package/es/gantt-helper.js.map +1 -0
  121. package/es/index.d.ts +7 -0
  122. package/es/index.js +10 -0
  123. package/es/index.js.map +1 -0
  124. package/es/register.d.ts +1 -0
  125. package/es/register.js +1 -0
  126. package/es/register.js.map +1 -0
  127. package/es/scenegraph/frame-border.d.ts +9 -0
  128. package/es/scenegraph/frame-border.js +34 -0
  129. package/es/scenegraph/frame-border.js.map +1 -0
  130. package/es/scenegraph/ganttNode.d.ts +7 -0
  131. package/es/scenegraph/ganttNode.js +8 -0
  132. package/es/scenegraph/ganttNode.js.map +1 -0
  133. package/es/scenegraph/grid.d.ts +30 -0
  134. package/es/scenegraph/grid.js +122 -0
  135. package/es/scenegraph/grid.js.map +1 -0
  136. package/es/scenegraph/mark-line.d.ts +15 -0
  137. package/es/scenegraph/mark-line.js +58 -0
  138. package/es/scenegraph/mark-line.js.map +1 -0
  139. package/es/scenegraph/scenegraph.d.ts +41 -0
  140. package/es/scenegraph/scenegraph.js +116 -0
  141. package/es/scenegraph/scenegraph.js.map +1 -0
  142. package/es/scenegraph/scroll-bar.d.ts +19 -0
  143. package/es/scenegraph/scroll-bar.js +144 -0
  144. package/es/scenegraph/scroll-bar.js.map +1 -0
  145. package/es/scenegraph/task-bar.d.ts +24 -0
  146. package/es/scenegraph/task-bar.js +188 -0
  147. package/es/scenegraph/task-bar.js.map +1 -0
  148. package/es/scenegraph/timeline-header.d.ts +10 -0
  149. package/es/scenegraph/timeline-header.js +130 -0
  150. package/es/scenegraph/timeline-header.js.map +1 -0
  151. package/es/state/gantt-table-sync.d.ts +7 -0
  152. package/es/state/gantt-table-sync.js +51 -0
  153. package/es/state/gantt-table-sync.js.map +1 -0
  154. package/es/state/state-manager.d.ts +58 -0
  155. package/es/state/state-manager.js +219 -0
  156. package/es/state/state-manager.js.map +1 -0
  157. package/es/themes.d.ts +1 -0
  158. package/es/themes.js +1 -0
  159. package/es/themes.js.map +1 -0
  160. package/es/tools/debounce.d.ts +1 -0
  161. package/es/tools/debounce.js +43 -0
  162. package/es/tools/debounce.js.map +1 -0
  163. package/es/tools/index.d.ts +2 -0
  164. package/es/tools/index.js +4 -0
  165. package/es/tools/index.js.map +1 -0
  166. package/es/tools/isx.d.ts +16 -0
  167. package/es/tools/isx.js +80 -0
  168. package/es/tools/isx.js.map +1 -0
  169. package/es/tools/pixel-ratio.d.ts +2 -0
  170. package/es/tools/pixel-ratio.js +12 -0
  171. package/es/tools/pixel-ratio.js.map +1 -0
  172. package/es/tools/util.d.ts +7 -0
  173. package/es/tools/util.js +78 -0
  174. package/es/tools/util.js.map +1 -0
  175. package/es/ts-types/EVENT_TYPE.d.ts +5 -0
  176. package/es/ts-types/EVENT_TYPE.js +5 -0
  177. package/es/ts-types/EVENT_TYPE.js.map +1 -0
  178. package/es/ts-types/common.d.ts +13 -0
  179. package/es/ts-types/common.js +13 -0
  180. package/es/ts-types/common.js.map +1 -0
  181. package/es/ts-types/events.d.ts +14 -0
  182. package/es/ts-types/events.js +2 -0
  183. package/es/ts-types/events.js.map +1 -0
  184. package/es/ts-types/gantt-engine.d.ts +163 -0
  185. package/es/ts-types/gantt-engine.js +2 -0
  186. package/es/ts-types/gantt-engine.js.map +1 -0
  187. package/es/ts-types/index.d.ts +4 -0
  188. package/es/ts-types/index.js +8 -0
  189. package/es/ts-types/index.js.map +1 -0
  190. package/package.json +122 -0
package/cjs/env.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ export type EnvMode = 'browser' | 'node' | 'worker' | 'miniApp' | 'desktop-miniApp';
2
+ export type LooseFunction = (...args: any) => any;
3
+ export declare class Env {
4
+ static _mode: EnvMode;
5
+ static get mode(): EnvMode;
6
+ static set mode(mode: EnvMode);
7
+ static dpr: number;
8
+ static CreateCanvas?: LooseFunction;
9
+ static LoadImage?: LooseFunction;
10
+ static RequestAnimationFrame?: LooseFunction;
11
+ static CancelAnimationFrame?: LooseFunction;
12
+ static RegisterCreateCanvas(func: LooseFunction): void;
13
+ static RegisterLoadImage(func: LooseFunction): void;
14
+ static GetCreateCanvasFunc(): LooseFunction | undefined;
15
+ static RegisterRequestAnimationFrame(func: LooseFunction): void;
16
+ static GetRequestAnimationFrame(): LooseFunction;
17
+ static RegisterCancelAnimationFrame(func: LooseFunction): void;
18
+ static GetCancelAnimationFrame(): LooseFunction;
19
+ }
package/cjs/env.js ADDED
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.Env = void 0;
6
+
7
+ class Env {
8
+ static get mode() {
9
+ return Env._mode || (Env._mode = defaultMode()), Env._mode;
10
+ }
11
+ static set mode(mode) {
12
+ Env._mode = mode;
13
+ }
14
+ static RegisterCreateCanvas(func) {
15
+ Env.CreateCanvas = func;
16
+ }
17
+ static RegisterLoadImage(func) {
18
+ Env.LoadImage = func;
19
+ }
20
+ static GetCreateCanvasFunc() {
21
+ return Env.CreateCanvas ? Env.CreateCanvas : "worker" === Env.mode ? (width = 200, height = 200) => new OffscreenCanvas(width, height) : void 0;
22
+ }
23
+ static RegisterRequestAnimationFrame(func) {
24
+ Env.RequestAnimationFrame = func();
25
+ }
26
+ static GetRequestAnimationFrame() {
27
+ if (Env.RequestAnimationFrame) return Env.RequestAnimationFrame;
28
+ }
29
+ static RegisterCancelAnimationFrame(func) {
30
+ Env.CancelAnimationFrame = func();
31
+ }
32
+ static GetCancelAnimationFrame() {
33
+ if (Env.CancelAnimationFrame) return Env.CancelAnimationFrame;
34
+ }
35
+ }
36
+
37
+ function defaultMode() {
38
+ let mode = "browser";
39
+ try {
40
+ "node" === window.type ? mode = "node" : "undefined" == typeof window || window.performance ? "undefined" == typeof window && (mode = "node") : mode = "miniApp";
41
+ } catch (err) {
42
+ mode = "node";
43
+ }
44
+ return mode;
45
+ }
46
+
47
+ //# sourceMappingURL=env.js.map
48
+ exports.Env = Env, Env.dpr = 0;
package/cjs/env.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/env.ts"],"names":[],"mappings":";;;AAGA,MAAa,GAAG;IAEP,MAAM,KAAK,IAAI;QACpB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;YACd,GAAG,CAAC,KAAK,GAAG,WAAW,EAAE,CAAC;SAC3B;QACD,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IACM,MAAM,KAAK,IAAI,CAAC,IAAa;QAClC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC;IAYD,MAAM,CAAC,oBAAoB,CAAC,IAAmB;QAC7C,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAmB;QAC1C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,mBAAmB;QACxB,IAAI,GAAG,CAAC,YAAY,EAAE;YACpB,OAAO,GAAG,CAAC,YAAY,CAAC;SACzB;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;YACzB,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAC1E;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,6BAA6B,CAAC,IAAmB;QACtD,GAAG,CAAC,qBAAqB,GAAG,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,wBAAwB;QAC7B,IAAI,GAAG,CAAC,qBAAqB,EAAE;YAC7B,OAAO,GAAG,CAAC,qBAAqB,CAAC;SAClC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,4BAA4B,CAAC,IAAmB;QACrD,GAAG,CAAC,oBAAoB,GAAG,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,uBAAuB;QAC5B,IAAI,GAAG,CAAC,oBAAoB,EAAE;YAC5B,OAAO,GAAG,CAAC,oBAAoB,CAAC;SACjC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;;AA5DH,kBA6DC;AAjDQ,OAAG,GAAG,CAAC,CAAC;AAwDjB,SAAS,WAAW;IAClB,IAAI,IAAI,GAAY,SAAS,CAAC;IAC9B,IAAI;QACF,IAAK,MAAc,CAAC,IAAI,KAAK,MAAM,EAAE;YACnC,IAAI,GAAG,MAAM,CAAC;SACf;aAAM,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC/D,IAAI,GAAG,SAAS,CAAC;SAClB;aAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACxC,IAAI,GAAG,MAAM,CAAC;SACf;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,GAAG,MAAM,CAAC;KACf;IACD,OAAO,IAAI,CAAC;AACd,CAAC","file":"env.js","sourcesContent":["export type EnvMode = 'browser' | 'node' | 'worker' | 'miniApp' | 'desktop-miniApp';\nexport type LooseFunction = (...args: any) => any;\n\nexport class Env {\n static _mode: EnvMode;\n public static get mode() {\n if (!Env._mode) {\n Env._mode = defaultMode();\n }\n return Env._mode;\n }\n public static set mode(mode: EnvMode) {\n Env._mode = mode;\n }\n\n static dpr = 0;\n\n static CreateCanvas?: LooseFunction;\n\n static LoadImage?: LooseFunction;\n\n static RequestAnimationFrame?: LooseFunction;\n\n static CancelAnimationFrame?: LooseFunction;\n\n static RegisterCreateCanvas(func: LooseFunction) {\n Env.CreateCanvas = func;\n }\n\n static RegisterLoadImage(func: LooseFunction) {\n Env.LoadImage = func;\n }\n\n static GetCreateCanvasFunc(): LooseFunction | undefined {\n if (Env.CreateCanvas) {\n return Env.CreateCanvas;\n }\n if (Env.mode === 'worker') {\n return (width = 200, height = 200) => new OffscreenCanvas(width, height);\n }\n return undefined;\n }\n\n static RegisterRequestAnimationFrame(func: LooseFunction) {\n Env.RequestAnimationFrame = func();\n }\n\n static GetRequestAnimationFrame() {\n if (Env.RequestAnimationFrame) {\n return Env.RequestAnimationFrame;\n }\n return undefined;\n }\n\n static RegisterCancelAnimationFrame(func: LooseFunction) {\n Env.CancelAnimationFrame = func();\n }\n\n static GetCancelAnimationFrame() {\n if (Env.CancelAnimationFrame) {\n return Env.CancelAnimationFrame;\n }\n return undefined;\n }\n}\n\n/**\n *\n * 这个默认的判断方法并不能区分出不同的环境,所以这里采用是否判断\n * 满足条件为 'browser',不满足则为 'node'\n */\nfunction defaultMode(): EnvMode {\n let mode: EnvMode = 'browser';\n try {\n if ((window as any).type === 'node') {\n mode = 'node';\n } else if (typeof window !== 'undefined' && !window.performance) {\n mode = 'miniApp';\n } else if (typeof window === 'undefined') {\n mode = 'node';\n }\n } catch (err) {\n mode = 'node';\n }\n return mode;\n}\n"]}
@@ -0,0 +1,47 @@
1
+ import type { EventTarget as CustomEventTarget } from './EventTarget';
2
+ export type EventListenerId = any;
3
+ type EventHandlerTarget = EventTarget | CustomEventTarget;
4
+ type Listener = any;
5
+ export type ResizeObserverCallBack = ({ width, height, windowSizeNotChange }: {
6
+ width: number;
7
+ height: number;
8
+ windowSizeNotChange: boolean;
9
+ }) => void;
10
+ export declare class ResizeObserver {
11
+ resizeTime: number;
12
+ element: HTMLElement;
13
+ cb: ResizeObserverCallBack;
14
+ observer?: MutationObserver;
15
+ lastSize: {
16
+ width: number;
17
+ height: number;
18
+ };
19
+ callBackDebounce: () => void;
20
+ constructor(element: HTMLElement, cb: ResizeObserverCallBack, resizeTime?: number);
21
+ mutationResize: () => void;
22
+ disConnect(): void;
23
+ callBack: () => void;
24
+ setSize(size: {
25
+ width: number;
26
+ height: number;
27
+ }): void;
28
+ private onResize;
29
+ private checkSize;
30
+ getSize(): {
31
+ width: number;
32
+ height: number;
33
+ };
34
+ }
35
+ export declare class EventHandler {
36
+ resizeTime?: number;
37
+ private listeners;
38
+ private reseizeListeners;
39
+ on(target: HTMLElement | Window | EventHandlerTarget, type: string, listener: Listener, ...options: any[]): EventListenerId;
40
+ once(target: EventHandlerTarget, type: string, listener: Listener, ...options: (boolean | AddEventListenerOptions)[]): EventListenerId;
41
+ off(id: EventListenerId | null | undefined): void;
42
+ fire(target: EventTarget, type: string, ...args: any[]): void;
43
+ hasListener(target: EventTarget, type: string): boolean;
44
+ clear(): void;
45
+ release(): void;
46
+ }
47
+ export {};
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.EventHandler = exports.ResizeObserver = void 0;
6
+
7
+ const debounce_1 = require("../tools/debounce"), env_1 = require("../env");
8
+
9
+ let idCount = 1;
10
+
11
+ class ResizeObserver {
12
+ constructor(element, cb, resizeTime) {
13
+ var _a;
14
+ if (this.resizeTime = 100, this.lastSize = {
15
+ width: 0,
16
+ height: 0
17
+ }, this.mutationResize = () => {
18
+ this.onResize();
19
+ }, this.callBack = () => {
20
+ const newSize = this.getSize();
21
+ let windowSizeNotChange = !1;
22
+ newSize.width === this.lastSize.width && newSize.height === this.lastSize.height && (windowSizeNotChange = !0),
23
+ this.lastSize = newSize, this.cb && this.cb(Object.assign(Object.assign({}, this.lastSize), {
24
+ windowSizeNotChange: windowSizeNotChange
25
+ }));
26
+ }, this.onResize = () => {
27
+ this.callBackDebounce();
28
+ }, this.element = element, this.cb = cb, this.lastSize = this.getSize(), resizeTime && (this.resizeTime = Math.max(resizeTime, 16)),
29
+ this.callBackDebounce = (0, debounce_1.debounce)(this.callBack, this.resizeTime),
30
+ null === window || void 0 === window || window.addEventListener("resize", this.onResize),
31
+ "ResizeObserver" in window) {
32
+ const ResizeObserverWindow = window.ResizeObserver;
33
+ this.observer = new ResizeObserverWindow(this.mutationResize), null === (_a = this.observer) || void 0 === _a || _a.observe(this.element);
34
+ } else "MutationObserver" in window && (this.observer = new MutationObserver(this.mutationResize),
35
+ this.observer.observe(this.element, {
36
+ attributes: !0,
37
+ attributeFilter: [ "style" ]
38
+ }));
39
+ }
40
+ disConnect() {
41
+ window.removeEventListener("resize", this.onResize), this.observer && (this.observer.disconnect(),
42
+ this.observer = void 0);
43
+ }
44
+ setSize(size) {
45
+ this.lastSize = size;
46
+ }
47
+ checkSize() {
48
+ const newSize = this.getSize();
49
+ return newSize.width !== this.lastSize.width || newSize.height !== this.lastSize.height;
50
+ }
51
+ getSize() {
52
+ return this.element ? {
53
+ width: Math.floor(this.element.clientWidth),
54
+ height: Math.floor(this.element.clientHeight)
55
+ } : Object.assign({}, this.lastSize);
56
+ }
57
+ }
58
+
59
+ exports.ResizeObserver = ResizeObserver;
60
+
61
+ class EventHandler {
62
+ constructor() {
63
+ this.listeners = {}, this.reseizeListeners = {};
64
+ }
65
+ on(target, type, listener, ...options) {
66
+ if ("node" === env_1.Env.mode) return -1;
67
+ const id = idCount++;
68
+ if (null == target ? void 0 : target.addEventListener) if ("resize" !== type || target === window) null == target || target.addEventListener(type, listener, ...options); else {
69
+ const resizeObserver = new ResizeObserver(target, listener, this.resizeTime);
70
+ this.reseizeListeners[id] = resizeObserver;
71
+ }
72
+ const obj = {
73
+ target: target,
74
+ type: type,
75
+ listener: listener,
76
+ options: options
77
+ };
78
+ return this.listeners[id] = obj, id;
79
+ }
80
+ once(target, type, listener, ...options) {
81
+ if ("node" === env_1.Env.mode) return -1;
82
+ const id = this.on(target, type, ((...args) => {
83
+ this.off(id), listener(...args);
84
+ }), ...options);
85
+ return id;
86
+ }
87
+ off(id) {
88
+ var _a;
89
+ if ("node" === env_1.Env.mode) return;
90
+ if (null == id) return;
91
+ const obj = null === (_a = this.listeners) || void 0 === _a ? void 0 : _a[id];
92
+ obj && (delete this.listeners[id], obj.target.removeEventListener && obj.target.removeEventListener(obj.type, obj.listener, ...obj.options));
93
+ }
94
+ fire(target, type, ...args) {
95
+ if ("node" !== env_1.Env.mode) for (const key in this.listeners) {
96
+ const listener = this.listeners[key];
97
+ listener.target === target && listener.type === type && listener.listener.call(listener.target, ...args);
98
+ }
99
+ }
100
+ hasListener(target, type) {
101
+ if ("node" === env_1.Env.mode) return !1;
102
+ let result = !1;
103
+ for (const key in this.listeners) {
104
+ const listener = this.listeners[key];
105
+ listener.target === target && listener.type === type && (result = !0);
106
+ }
107
+ return result;
108
+ }
109
+ clear() {
110
+ if ("node" !== env_1.Env.mode) {
111
+ for (const key in this.listeners) {
112
+ const listener = this.listeners[key];
113
+ listener.target.removeEventListener && listener.target.removeEventListener(listener.type, listener.listener, ...listener.options);
114
+ }
115
+ for (const key in this.reseizeListeners) {
116
+ const resizeObserver = this.reseizeListeners[key];
117
+ null == resizeObserver || resizeObserver.disConnect();
118
+ }
119
+ this.listeners = {};
120
+ }
121
+ }
122
+ release() {
123
+ "node" !== env_1.Env.mode && (this.clear(), this.listeners = {});
124
+ }
125
+ }
126
+
127
+ exports.EventHandler = EventHandler;
128
+ //# sourceMappingURL=EventHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/event/EventHandler.ts"],"names":[],"mappings":"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","file":"EventHandler.js","sourcesContent":["// import type { AnyFunction, EventListenerId } from '../ts-types';\nimport type { EventTarget as CustomEventTarget } from './EventTarget';\nimport { debounce } from '../tools/debounce';\nimport { Env } from '../env';\nexport type EventListenerId = any; //TODO 类型\nlet idCount = 1;\ntype EventHandlerTarget = EventTarget | CustomEventTarget;\ntype Listener = any; // AnyFunction; TODO 类型\ntype EventListenerObject = {\n target: EventHandlerTarget;\n type: string;\n listener: Listener;\n options: any[];\n};\n\nexport type ResizeObserverCallBack = ({\n width,\n height,\n windowSizeNotChange\n}: {\n width: number;\n height: number;\n windowSizeNotChange: boolean;\n}) => void;\n\nexport class ResizeObserver {\n resizeTime = 100;\n element: HTMLElement;\n cb: ResizeObserverCallBack;\n observer?: MutationObserver;\n lastSize: {\n width: number;\n height: number;\n } = {\n width: 0,\n height: 0\n };\n callBackDebounce: () => void;\n\n constructor(element: HTMLElement, cb: ResizeObserverCallBack, resizeTime?: number) {\n this.element = element;\n this.cb = cb;\n this.lastSize = this.getSize();\n if (resizeTime) {\n this.resizeTime = Math.max(resizeTime, 16);\n }\n\n this.callBackDebounce = debounce(this.callBack, this.resizeTime);\n //TODO: 这个地方的 addEventListener resize 应该更改到下面的else逻辑中,兼容ResizeObserver不存在的情况\n window?.addEventListener('resize', this.onResize);\n // 优先使用 ResizeObserver\n if ('ResizeObserver' in window) {\n // @ts-ignore\n const ResizeObserverWindow: any = window.ResizeObserver;\n this.observer = new ResizeObserverWindow(this.mutationResize);\n this.observer?.observe(this.element);\n } else if ('MutationObserver' in window) {\n this.observer = new MutationObserver(this.mutationResize);\n this.observer.observe(this.element, {\n attributes: true,\n attributeFilter: ['style']\n });\n }\n }\n\n mutationResize = () => {\n this.onResize();\n };\n\n disConnect() {\n window.removeEventListener('resize', this.onResize);\n if (this.observer) {\n this.observer.disconnect();\n this.observer = undefined;\n }\n }\n\n callBack = () => {\n const newSize = this.getSize();\n let windowSizeNotChange = false;\n if (newSize.width === this.lastSize.width && newSize.height === this.lastSize.height) {\n windowSizeNotChange = true;\n }\n this.lastSize = newSize;\n this.cb && this.cb({ ...this.lastSize, windowSizeNotChange });\n };\n\n setSize(size: { width: number; height: number }) {\n this.lastSize = size;\n }\n\n private onResize = () => {\n // if (this.checkSize()) {\n this.callBackDebounce();\n // }\n };\n\n private checkSize() {\n const newSize = this.getSize();\n if (newSize.width === this.lastSize.width && newSize.height === this.lastSize.height) {\n return false;\n }\n return true;\n }\n\n getSize() {\n if (!this.element) {\n return {\n ...this.lastSize\n };\n }\n return {\n width: Math.floor(this.element.clientWidth),\n height: Math.floor(this.element.clientHeight)\n };\n }\n}\n\nexport class EventHandler {\n resizeTime?: number;\n\n private listeners: {\n [key: string]: EventListenerObject;\n } = {};\n\n private reseizeListeners: {\n [key: string]: ResizeObserver;\n } = {};\n\n on(\n target: HTMLElement | Window | EventHandlerTarget,\n type: string,\n listener: Listener,\n ...options: any[]\n ): EventListenerId {\n if (Env.mode === 'node') {\n return -1;\n }\n const id = idCount++;\n if (target?.addEventListener) {\n if (type !== 'resize' || (target as Window) === window) {\n (target as EventTarget)?.addEventListener(type, listener, ...(options as []));\n } else {\n const resizeObserver = new ResizeObserver(target as HTMLElement, listener, this.resizeTime);\n this.reseizeListeners[id] = resizeObserver;\n }\n }\n const obj = { target, type, listener, options };\n this.listeners[id] = obj;\n return id;\n }\n once(\n target: EventHandlerTarget,\n type: string,\n listener: Listener,\n ...options: (boolean | AddEventListenerOptions)[]\n ): EventListenerId {\n if (Env.mode === 'node') {\n return -1;\n }\n const id = this.on(\n target,\n type,\n (...args: any[]) => {\n this.off(id);\n listener(...args);\n },\n ...options\n );\n return id;\n }\n off(id: EventListenerId | null | undefined): void {\n if (Env.mode === 'node') {\n return;\n }\n if (id == null) {\n return;\n }\n const obj = this.listeners?.[id];\n if (!obj) {\n return;\n }\n delete this.listeners[id];\n if (obj.target.removeEventListener) {\n obj.target.removeEventListener(obj.type, obj.listener, ...(obj.options as []));\n }\n }\n fire(target: EventTarget, type: string, ...args: any[]): void {\n if (Env.mode === 'node') {\n return;\n }\n for (const key in this.listeners) {\n const listener = this.listeners[key];\n if (listener.target === target && listener.type === type) {\n listener.listener.call(listener.target, ...args);\n }\n }\n }\n hasListener(target: EventTarget, type: string): boolean {\n if (Env.mode === 'node') {\n return false;\n }\n let result = false;\n for (const key in this.listeners) {\n const listener = this.listeners[key];\n if (listener.target === target && listener.type === type) {\n result = true;\n }\n }\n\n return result;\n }\n clear(): void {\n if (Env.mode === 'node') {\n return;\n }\n for (const key in this.listeners) {\n const listener = this.listeners[key];\n if (listener.target.removeEventListener) {\n listener.target.removeEventListener(listener.type, listener.listener, ...(listener.options as []));\n }\n }\n\n for (const key in this.reseizeListeners) {\n const resizeObserver: ResizeObserver = this.reseizeListeners[key];\n resizeObserver?.disConnect();\n }\n\n this.listeners = {};\n }\n release(): void {\n if (Env.mode === 'node') {\n return;\n }\n this.clear();\n (this as any).listeners = {};\n }\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import type { TableEventListener, EventListenerId, TableEventHandlersEventArgumentMap, TableEventHandlersReturnMap } from '../ts-types';
2
+ export declare class EventTarget {
3
+ private listenersData;
4
+ on<TYPE extends keyof TableEventHandlersEventArgumentMap>(type: TYPE, listener: TableEventListener<TYPE>): EventListenerId;
5
+ off(type: string, listener: TableEventListener<keyof TableEventHandlersEventArgumentMap>): void;
6
+ off(id: EventListenerId): void;
7
+ addEventListener<TYPE extends keyof TableEventHandlersEventArgumentMap>(type: TYPE, listener: TableEventListener<TYPE>, option?: any): void;
8
+ removeEventListener(type: string, listener: TableEventListener<keyof TableEventHandlersEventArgumentMap>): void;
9
+ hasListeners(type: string): boolean;
10
+ fireListeners<TYPE extends keyof TableEventHandlersEventArgumentMap>(type: TYPE, event: TableEventHandlersEventArgumentMap[TYPE]): TableEventHandlersReturnMap[TYPE][];
11
+ release(): void;
12
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.EventTarget = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils");
8
+
9
+ let idCount = 1;
10
+
11
+ class EventTarget {
12
+ constructor() {
13
+ this.listenersData = {
14
+ listeners: {},
15
+ listenerData: {}
16
+ };
17
+ }
18
+ on(type, listener) {
19
+ const list = this.listenersData.listeners[type] || (this.listenersData.listeners[type] = []);
20
+ list.push(listener);
21
+ const id = idCount++;
22
+ return this.listenersData.listenerData[id] = {
23
+ type: type,
24
+ listener: listener,
25
+ remove: () => {
26
+ delete this.listenersData.listenerData[id];
27
+ const index = list.indexOf(listener);
28
+ list.splice(index, 1), this.listenersData.listeners[type].length || delete this.listenersData.listeners[type];
29
+ }
30
+ }, id;
31
+ }
32
+ off(idOrType, listener) {
33
+ var _a;
34
+ if (listener) {
35
+ const type = idOrType;
36
+ this.removeEventListener(type, listener);
37
+ } else {
38
+ const id = idOrType;
39
+ if (!this.listenersData) return;
40
+ null === (_a = this.listenersData.listenerData[id]) || void 0 === _a || _a.remove();
41
+ }
42
+ }
43
+ addEventListener(type, listener, option) {
44
+ this.on(type, listener);
45
+ }
46
+ removeEventListener(type, listener) {
47
+ if (this.listenersData) for (const key in this.listenersData.listenerData) {
48
+ const listenerData = this.listenersData.listenerData[key];
49
+ listenerData.type === type && listenerData.listener === listener && this.off(key);
50
+ }
51
+ }
52
+ hasListeners(type) {
53
+ return !!this.listenersData && !!this.listenersData.listeners[type];
54
+ }
55
+ fireListeners(type, event) {
56
+ if (!this.listenersData) return [];
57
+ const list = this.listenersData.listeners[type];
58
+ return list ? list.map((listener => listener.call(this, event))).filter((r => (0,
59
+ vutils_1.isValid)(r))) : [];
60
+ }
61
+ release() {
62
+ delete this.listenersData;
63
+ }
64
+ }
65
+
66
+ exports.EventTarget = EventTarget;
67
+ //# sourceMappingURL=EventTarget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/event/EventTarget.ts"],"names":[],"mappings":"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","file":"EventTarget.js","sourcesContent":["/* Adapted from cheetah-grid by yosuke ota\n *url:https://github.com/future-architect/cheetah-grid/blob/master/packages/cheetah-grid/src/js/core/EventTarget.ts\n *License: https://github.com/future-architect/cheetah-grid/blob/master/LICENSE\n * @license\n */\nimport type {\n TableEventListener,\n EventListenerId,\n TableEventHandlersEventArgumentMap,\n TableEventHandlersReturnMap\n} from '../ts-types';\nimport { isValid } from '@visactor/vutils';\n\nlet idCount = 1;\n\nexport class EventTarget {\n private listenersData: {\n listeners: { [TYPE in keyof TableEventHandlersEventArgumentMap]?: TableEventListener<TYPE>[] };\n listenerData: {\n [id: number]: {\n type: string;\n listener: TableEventListener<keyof TableEventHandlersEventArgumentMap>;\n remove: () => void;\n };\n };\n } = {\n listeners: {},\n listenerData: {}\n };\n\n /**\n * 监听事件\n * @param type 事件类型\n * @param listener 事件监听器\n * @returns 事件监听器id\n */\n on<TYPE extends keyof TableEventHandlersEventArgumentMap>(\n type: TYPE,\n listener: TableEventListener<TYPE>\n ): EventListenerId {\n const list: TableEventListener<TYPE>[] =\n this.listenersData.listeners[type] || (this.listenersData.listeners[type] = []);\n list.push(listener);\n\n const id = idCount++;\n this.listenersData.listenerData[id] = {\n type,\n listener,\n remove: (): void => {\n delete this.listenersData.listenerData[id];\n const index = list.indexOf(listener);\n list.splice(index, 1);\n if (!this.listenersData.listeners[type].length) {\n delete this.listenersData.listeners[type];\n }\n }\n };\n return id;\n }\n\n off(type: string, listener: TableEventListener<keyof TableEventHandlersEventArgumentMap>): void;\n off(id: EventListenerId): void;\n off(\n idOrType: EventListenerId | string,\n listener?: TableEventListener<keyof TableEventHandlersEventArgumentMap>\n ): void {\n if (listener) {\n const type = idOrType as string;\n this.removeEventListener(type, listener);\n } else {\n const id = idOrType as EventListenerId;\n if (!this.listenersData) {\n return;\n }\n this.listenersData.listenerData[id]?.remove();\n }\n }\n\n addEventListener<TYPE extends keyof TableEventHandlersEventArgumentMap>(\n type: TYPE,\n listener: TableEventListener<TYPE>,\n option?: any\n ): void {\n this.on(type, listener);\n }\n\n removeEventListener(type: string, listener: TableEventListener<keyof TableEventHandlersEventArgumentMap>): void {\n if (!this.listenersData) {\n return;\n }\n for (const key in this.listenersData.listenerData) {\n const listenerData = this.listenersData.listenerData[key];\n if (listenerData.type === type && listenerData.listener === listener) {\n this.off(key as unknown as number);\n }\n }\n }\n\n hasListeners(type: string): boolean {\n if (!this.listenersData) {\n return false;\n }\n return !!this.listenersData.listeners[type];\n }\n\n // fireListeners(type: string, ...args: any[]): any {\n // if (!this.listenersData) {\n // return [];\n // }\n // const list = this.listenersData.listeners[type];\n // if (!list) {\n // return [];\n // }\n // return list.map(listener => listener.call(this, ...args)).filter(r => isValid(r));\n // }\n fireListeners<TYPE extends keyof TableEventHandlersEventArgumentMap>(\n type: TYPE,\n event: TableEventHandlersEventArgumentMap[TYPE]\n ): TableEventHandlersReturnMap[TYPE][] {\n if (!this.listenersData) {\n return [];\n }\n const list = this.listenersData.listeners[type];\n if (!list) {\n return [];\n }\n return list.map(listener => listener.call(this, event)).filter(r => isValid(r));\n }\n release(): void {\n delete this.listenersData;\n }\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import type { Gantt } from '../Gantt';
2
+ import { EventHandler } from '../event/EventHandler';
3
+ export declare class EventManager {
4
+ _gantt: Gantt;
5
+ _eventHandler: EventHandler;
6
+ isDown: boolean;
7
+ isDraging: boolean;
8
+ lastDragPointerXYOnWindow: {
9
+ x: number;
10
+ y: number;
11
+ };
12
+ constructor(gantt: Gantt);
13
+ release(): void;
14
+ bindEvent(): void;
15
+ }
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.EventManager = void 0;
6
+
7
+ const vtable_1 = require("@visactor/vtable"), EventHandler_1 = require("../event/EventHandler"), scroll_1 = require("../event/scroll"), ts_types_1 = require("../ts-types"), vutils_1 = require("@visactor/vutils"), pixel_ratio_1 = require("../tools/pixel-ratio");
8
+
9
+ class EventManager {
10
+ constructor(gantt) {
11
+ this.isDown = !1, this.isDraging = !1, this._gantt = gantt, this._eventHandler = new EventHandler_1.EventHandler,
12
+ this.bindEvent();
13
+ }
14
+ release() {
15
+ this._eventHandler.release();
16
+ }
17
+ bindEvent() {
18
+ bindTableGroupListener(this), bindContainerDomListener(this);
19
+ }
20
+ }
21
+
22
+ function bindTableGroupListener(event) {
23
+ const scene = event._gantt.scenegraph, gantt = event._gantt, stateManager = gantt.stateManager;
24
+ scene.tableGroup.addEventListener("pointerdown", (e => {
25
+ if (0 !== e.button) return;
26
+ const taskBarTarget = e.detailPath.find((pathNode => "task-bar" === pathNode.name));
27
+ taskBarTarget && ("task-bar-hover-shadow-left-icon" === e.target.name ? (stateManager.startResizeTaskBar(taskBarTarget, e.nativeEvent.x, e.nativeEvent.y, "left"),
28
+ stateManager.updateInteractionState(ts_types_1.InteractionState.grabing)) : "task-bar-hover-shadow-right-icon" === e.target.name ? (stateManager.startResizeTaskBar(taskBarTarget, e.nativeEvent.x, e.nativeEvent.y, "right"),
29
+ stateManager.updateInteractionState(ts_types_1.InteractionState.grabing)) : gantt.parsedOptions.taskBarMoveable && (stateManager.startMoveTaskBar(taskBarTarget, e.nativeEvent.x, e.nativeEvent.y),
30
+ stateManager.updateInteractionState(ts_types_1.InteractionState.grabing)));
31
+ })), scene.tableGroup.addEventListener("pointermove", (e => {
32
+ if (stateManager.interactionState === ts_types_1.InteractionState.default) {
33
+ e.detailPath.find((pathNode => "task-bar" === pathNode.name)) ? stateManager.showTaskBarHover(e) : stateManager.hideTaskBarHover();
34
+ }
35
+ })), scene.tableGroup.addEventListener("pointerenter", (e => {
36
+ (gantt.parsedOptions.scrollStyle.horizontalVisible && "focus" === gantt.parsedOptions.scrollStyle.horizontalVisible || !gantt.parsedOptions.scrollStyle.horizontalVisible && "focus" === gantt.parsedOptions.scrollStyle.visible) && scene.scrollbarComponent.showHorizontalScrollBar(),
37
+ (gantt.parsedOptions.scrollStyle.verticalVisible && "focus" === gantt.parsedOptions.scrollStyle.verticalVisible || !gantt.parsedOptions.scrollStyle.verticalVisible && "focus" === gantt.parsedOptions.scrollStyle.visible) && scene.scrollbarComponent.showVerticalScrollBar();
38
+ })), scene.tableGroup.addEventListener("pointerleave", (e => {
39
+ (gantt.parsedOptions.scrollStyle.horizontalVisible && "focus" === gantt.parsedOptions.scrollStyle.horizontalVisible || !gantt.parsedOptions.scrollStyle.horizontalVisible && "focus" === gantt.parsedOptions.scrollStyle.visible) && scene.scrollbarComponent.hideHorizontalScrollBar(),
40
+ (gantt.parsedOptions.scrollStyle.verticalVisible && "focus" === gantt.parsedOptions.scrollStyle.verticalVisible || !gantt.parsedOptions.scrollStyle.verticalVisible && "focus" === gantt.parsedOptions.scrollStyle.visible) && scene.scrollbarComponent.hideVerticalScrollBar();
41
+ }));
42
+ }
43
+
44
+ function bindContainerDomListener(eventManager) {
45
+ const gantt = eventManager._gantt, stateManager = (eventManager._gantt.scenegraph,
46
+ gantt.stateManager), handler = eventManager._eventHandler;
47
+ handler.on(gantt.getElement(), "wheel", (e => {
48
+ (0, scroll_1.handleWhell)(e, stateManager, eventManager._gantt);
49
+ })), handler.on(gantt.getContainer(), "resize", (e => {
50
+ 0 === e.width && 0 === e.height || ((0, vutils_1.isValid)(gantt.options.pixelRatio) || gantt.setPixelRatio((0,
51
+ pixel_ratio_1.getPixelRatio)()), e.windowSizeNotChange || gantt._resize());
52
+ })), handler.on(gantt.resizeLine, "mousedown", (e => {
53
+ stateManager.updateInteractionState(ts_types_1.InteractionState.grabing), stateManager.startResizeTableWidth(e);
54
+ })), vtable_1.VRender.vglobal.addEventListener("mousedown", (e => {
55
+ gantt.eventManager.lastDragPointerXYOnWindow = {
56
+ x: e.x,
57
+ y: e.y
58
+ };
59
+ })), vtable_1.VRender.vglobal.addEventListener("mousemove", (e => {
60
+ var _a, _b, _c, _d;
61
+ if (stateManager.interactionState === ts_types_1.InteractionState.grabing) {
62
+ const lastX = null !== (_b = null === (_a = gantt.eventManager.lastDragPointerXYOnWindow) || void 0 === _a ? void 0 : _a.x) && void 0 !== _b ? _b : e.x, lastY = null !== (_d = null === (_c = gantt.eventManager.lastDragPointerXYOnWindow) || void 0 === _c ? void 0 : _c.y) && void 0 !== _d ? _d : e.y;
63
+ Math.abs(lastX - e.x) + Math.abs(lastY - e.y) >= 1 && (stateManager.isResizingTableWidth() ? stateManager.dealResizeTableWidth(e) : stateManager.isMoveingTaskBar() ? stateManager.dealTaskBarMove(e) : stateManager.isResizingTaskBar() && stateManager.dealTaskBarResize(e),
64
+ gantt.eventManager.lastDragPointerXYOnWindow = {
65
+ x: e.x,
66
+ y: e.y
67
+ });
68
+ }
69
+ })), vtable_1.VRender.vglobal.addEventListener("mouseup", (e => {
70
+ "grabing" === stateManager.interactionState && (stateManager.updateInteractionState(ts_types_1.InteractionState.default),
71
+ stateManager.isResizingTableWidth() ? stateManager.endResizeTableWidth() : stateManager.isMoveingTaskBar() ? stateManager.endMoveTaskBar(e.x) : stateManager.isResizingTaskBar() && stateManager.endResizeTaskBar(e.x));
72
+ }));
73
+ }
74
+
75
+ //# sourceMappingURL=event-manager.js.map
76
+ exports.EventManager = EventManager;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/event/event-manager.ts"],"names":[],"mappings":"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","file":"event-manager.js","sourcesContent":["import { VRender } from '@visactor/vtable';\nimport type { Gantt } from '../Gantt';\nimport { EventHandler } from '../event/EventHandler';\nimport { handleWhell } from '../event/scroll';\nimport { throttle } from '../tools/util';\nimport { InteractionState } from '../ts-types';\nimport { isValid } from '@visactor/vutils';\nimport { getPixelRatio } from '../tools/pixel-ratio';\nimport type { GanttTaskBarNode } from '../scenegraph/ganttNode';\n\nexport class EventManager {\n _gantt: Gantt;\n _eventHandler: EventHandler;\n isDown: boolean = false;\n isDraging: boolean = false;\n lastDragPointerXYOnWindow: { x: number; y: number };\n\n // lastDragPointerXYOnResizeLine: { x: number; y: number };\n constructor(gantt: Gantt) {\n this._gantt = gantt;\n this._eventHandler = new EventHandler();\n this.bindEvent();\n }\n release() {\n this._eventHandler.release();\n }\n // 绑定DOM事件\n bindEvent() {\n bindTableGroupListener(this);\n bindContainerDomListener(this);\n // bindScrollBarListener(this);\n }\n}\nfunction bindTableGroupListener(event: EventManager) {\n const scene = event._gantt.scenegraph;\n const gantt = event._gantt;\n const stateManager = gantt.stateManager;\n scene.tableGroup.addEventListener('pointerdown', (e: VRender.FederatedPointerEvent) => {\n if (e.button !== 0) {\n // 只处理左键\n return;\n }\n const taskBarTarget = e.detailPath.find((pathNode: any) => {\n return pathNode.name === 'task-bar'; // || pathNode.name === 'task-bar-hover-shadow';\n }) as any as GanttTaskBarNode;\n if (taskBarTarget) {\n if (e.target.name === 'task-bar-hover-shadow-left-icon') {\n stateManager.startResizeTaskBar(taskBarTarget, (e.nativeEvent as any).x, (e.nativeEvent as any).y, 'left');\n stateManager.updateInteractionState(InteractionState.grabing);\n } else if (e.target.name === 'task-bar-hover-shadow-right-icon') {\n stateManager.startResizeTaskBar(taskBarTarget, (e.nativeEvent as any).x, (e.nativeEvent as any).y, 'right');\n stateManager.updateInteractionState(InteractionState.grabing);\n } else if (gantt.parsedOptions.taskBarMoveable) {\n stateManager.startMoveTaskBar(taskBarTarget, (e.nativeEvent as any).x, (e.nativeEvent as any).y);\n stateManager.updateInteractionState(InteractionState.grabing);\n }\n }\n });\n\n scene.tableGroup.addEventListener('pointermove', (e: VRender.FederatedPointerEvent) => {\n if (stateManager.interactionState === InteractionState.default) {\n const taksIndex = e.detailPath.find((pathNode: any) => {\n return pathNode.name === 'task-bar'; // || pathNode.name === 'task-bar-hover-shadow';\n });\n if (taksIndex) {\n stateManager.showTaskBarHover(e);\n } else {\n stateManager.hideTaskBarHover();\n }\n }\n });\n // scene.stage.addEventListener('pointerup', (e: FederatedPointerEvent) => {});\n\n scene.tableGroup.addEventListener('pointerenter', (e: VRender.FederatedPointerEvent) => {\n if (\n (gantt.parsedOptions.scrollStyle.horizontalVisible &&\n gantt.parsedOptions.scrollStyle.horizontalVisible === 'focus') ||\n (!gantt.parsedOptions.scrollStyle.horizontalVisible && gantt.parsedOptions.scrollStyle.visible === 'focus')\n ) {\n scene.scrollbarComponent.showHorizontalScrollBar();\n }\n if (\n (gantt.parsedOptions.scrollStyle.verticalVisible &&\n gantt.parsedOptions.scrollStyle.verticalVisible === 'focus') ||\n (!gantt.parsedOptions.scrollStyle.verticalVisible && gantt.parsedOptions.scrollStyle.visible === 'focus')\n ) {\n scene.scrollbarComponent.showVerticalScrollBar();\n }\n });\n\n scene.tableGroup.addEventListener('pointerleave', (e: VRender.FederatedPointerEvent) => {\n if (\n (gantt.parsedOptions.scrollStyle.horizontalVisible &&\n gantt.parsedOptions.scrollStyle.horizontalVisible === 'focus') ||\n (!gantt.parsedOptions.scrollStyle.horizontalVisible && gantt.parsedOptions.scrollStyle.visible === 'focus')\n ) {\n scene.scrollbarComponent.hideHorizontalScrollBar();\n }\n if (\n (gantt.parsedOptions.scrollStyle.verticalVisible &&\n gantt.parsedOptions.scrollStyle.verticalVisible === 'focus') ||\n (!gantt.parsedOptions.scrollStyle.verticalVisible && gantt.parsedOptions.scrollStyle.visible === 'focus')\n ) {\n scene.scrollbarComponent.hideVerticalScrollBar();\n }\n });\n}\n\nfunction bindContainerDomListener(eventManager: EventManager) {\n const gantt = eventManager._gantt;\n const scene = eventManager._gantt.scenegraph;\n const stateManager = gantt.stateManager;\n const handler = eventManager._eventHandler;\n handler.on(gantt.getElement(), 'wheel', (e: WheelEvent) => {\n handleWhell(e, stateManager, eventManager._gantt);\n });\n\n handler.on(gantt.getContainer(), 'resize', (e: any) => {\n // if (table.canvasSizeSeted) {\n // return;\n // }\n if (e.width === 0 && e.height === 0) {\n // 临时绕行解决因为display设置为none产生的问题\n return;\n }\n if (!isValid(gantt.options.pixelRatio)) {\n gantt.setPixelRatio(getPixelRatio());\n }\n if (!e.windowSizeNotChange) {\n gantt._resize();\n }\n });\n\n handler.on(gantt.resizeLine, 'mousedown', (e: MouseEvent) => {\n console.log('mousedown resizeLine');\n stateManager.updateInteractionState(InteractionState.grabing);\n stateManager.startResizeTableWidth(e);\n });\n\n VRender.vglobal.addEventListener('mousedown', (e: VRender.FederatedPointerEvent) => {\n gantt.eventManager.lastDragPointerXYOnWindow = { x: e.x, y: e.y };\n });\n VRender.vglobal.addEventListener('mousemove', (e: VRender.FederatedPointerEvent) => {\n if (stateManager.interactionState === InteractionState.grabing) {\n const lastX = gantt.eventManager.lastDragPointerXYOnWindow?.x ?? e.x;\n const lastY = gantt.eventManager.lastDragPointerXYOnWindow?.y ?? e.y;\n if (Math.abs(lastX - e.x) + Math.abs(lastY - e.y) >= 1) {\n if (stateManager.isResizingTableWidth()) {\n stateManager.dealResizeTableWidth(e);\n } else if (stateManager.isMoveingTaskBar()) {\n stateManager.dealTaskBarMove(e);\n } else if (stateManager.isResizingTaskBar()) {\n stateManager.dealTaskBarResize(e);\n }\n gantt.eventManager.lastDragPointerXYOnWindow = { x: e.x, y: e.y };\n }\n }\n });\n VRender.vglobal.addEventListener('mouseup', (e: MouseEvent) => {\n if (stateManager.interactionState === 'grabing') {\n stateManager.updateInteractionState(InteractionState.default);\n if (stateManager.isResizingTableWidth()) {\n stateManager.endResizeTableWidth();\n } else if (stateManager.isMoveingTaskBar()) {\n stateManager.endMoveTaskBar(e.x);\n } else if (stateManager.isResizingTaskBar()) {\n stateManager.endResizeTaskBar(e.x);\n }\n }\n });\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import type { Gantt } from '../Gantt';
2
+ import type { EventManager } from './event-manager';
3
+ import type { StateManager } from '../state/state-manager';
4
+ export declare function handleWhell(event: WheelEvent, state: StateManager, gantt: Gantt, isWheelEvent?: boolean): void;
5
+ export declare function isVerticalScrollable(deltaY: number, state: StateManager): boolean;
6
+ export declare function isHorizontalScrollable(deltaX: number, state: StateManager): boolean;
7
+ export declare class InertiaScroll {
8
+ friction: number;
9
+ lastTime: number;
10
+ speedX: number;
11
+ speedY: number;
12
+ stateManager: StateManager;
13
+ runingId: number;
14
+ scrollHandle: (dx: number, dy: number) => void;
15
+ constructor(stateManager: StateManager);
16
+ setScrollHandle(scrollHandle: (dx: number, dy: number) => void): void;
17
+ startInertia(speedX: number, speedY: number, friction: number): void;
18
+ inertia(): void;
19
+ endInertia(): void;
20
+ isInertiaScrolling(): boolean;
21
+ }
22
+ export declare function bindScrollBarListener(eventManager: EventManager): void;