@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.
- package/README.md +151 -0
- package/cjs/Gantt.d.ts +111 -0
- package/cjs/Gantt.js +244 -0
- package/cjs/Gantt.js.map +1 -0
- package/cjs/data/DataSource.d.ts +9 -0
- package/cjs/data/DataSource.js +30 -0
- package/cjs/data/DataSource.js.map +1 -0
- package/cjs/env.d.ts +19 -0
- package/cjs/env.js +48 -0
- package/cjs/env.js.map +1 -0
- package/cjs/event/EventHandler.d.ts +47 -0
- package/cjs/event/EventHandler.js +128 -0
- package/cjs/event/EventHandler.js.map +1 -0
- package/cjs/event/EventTarget.d.ts +12 -0
- package/cjs/event/EventTarget.js +67 -0
- package/cjs/event/EventTarget.js.map +1 -0
- package/cjs/event/event-manager.d.ts +15 -0
- package/cjs/event/event-manager.js +76 -0
- package/cjs/event/event-manager.js.map +1 -0
- package/cjs/event/scroll.d.ts +22 -0
- package/cjs/event/scroll.js +136 -0
- package/cjs/event/scroll.js.map +1 -0
- package/cjs/gantt-helper.d.ts +28 -0
- package/cjs/gantt-helper.js +225 -0
- package/cjs/gantt-helper.js.map +1 -0
- package/cjs/index.d.ts +7 -0
- package/cjs/index.js +48 -0
- package/cjs/index.js.map +1 -0
- package/cjs/register.d.ts +1 -0
- package/cjs/register.js +1 -0
- package/cjs/register.js.map +1 -0
- package/cjs/scenegraph/frame-border.d.ts +9 -0
- package/cjs/scenegraph/frame-border.js +42 -0
- package/cjs/scenegraph/frame-border.js.map +1 -0
- package/cjs/scenegraph/ganttNode.d.ts +7 -0
- package/cjs/scenegraph/ganttNode.js +16 -0
- package/cjs/scenegraph/ganttNode.js.map +1 -0
- package/cjs/scenegraph/grid.d.ts +30 -0
- package/cjs/scenegraph/grid.js +130 -0
- package/cjs/scenegraph/grid.js.map +1 -0
- package/cjs/scenegraph/mark-line.d.ts +15 -0
- package/cjs/scenegraph/mark-line.js +66 -0
- package/cjs/scenegraph/mark-line.js.map +1 -0
- package/cjs/scenegraph/scenegraph.d.ts +41 -0
- package/cjs/scenegraph/scenegraph.js +109 -0
- package/cjs/scenegraph/scenegraph.js.map +1 -0
- package/cjs/scenegraph/scroll-bar.d.ts +19 -0
- package/cjs/scenegraph/scroll-bar.js +150 -0
- package/cjs/scenegraph/scroll-bar.js.map +1 -0
- package/cjs/scenegraph/task-bar.d.ts +24 -0
- package/cjs/scenegraph/task-bar.js +188 -0
- package/cjs/scenegraph/task-bar.js.map +1 -0
- package/cjs/scenegraph/timeline-header.d.ts +10 -0
- package/cjs/scenegraph/timeline-header.js +134 -0
- package/cjs/scenegraph/timeline-header.js.map +1 -0
- package/cjs/state/gantt-table-sync.d.ts +7 -0
- package/cjs/state/gantt-table-sync.js +60 -0
- package/cjs/state/gantt-table-sync.js.map +1 -0
- package/cjs/state/state-manager.d.ts +58 -0
- package/cjs/state/state-manager.js +223 -0
- package/cjs/state/state-manager.js.map +1 -0
- package/cjs/themes.d.ts +1 -0
- package/cjs/themes.js +1 -0
- package/cjs/themes.js.map +1 -0
- package/cjs/tools/debounce.d.ts +1 -0
- package/cjs/tools/debounce.js +51 -0
- package/cjs/tools/debounce.js.map +1 -0
- package/cjs/tools/index.d.ts +2 -0
- package/cjs/tools/index.js +20 -0
- package/cjs/tools/index.js.map +1 -0
- package/cjs/tools/isx.d.ts +16 -0
- package/cjs/tools/isx.js +117 -0
- package/cjs/tools/isx.js.map +1 -0
- package/cjs/tools/pixel-ratio.d.ts +2 -0
- package/cjs/tools/pixel-ratio.js +16 -0
- package/cjs/tools/pixel-ratio.js.map +1 -0
- package/cjs/tools/util.d.ts +7 -0
- package/cjs/tools/util.js +87 -0
- package/cjs/tools/util.js.map +1 -0
- package/cjs/ts-types/EVENT_TYPE.d.ts +5 -0
- package/cjs/ts-types/EVENT_TYPE.js +9 -0
- package/cjs/ts-types/EVENT_TYPE.js.map +1 -0
- package/cjs/ts-types/common.d.ts +13 -0
- package/cjs/ts-types/common.js +14 -0
- package/cjs/ts-types/common.js.map +1 -0
- package/cjs/ts-types/events.d.ts +14 -0
- package/cjs/ts-types/events.js +6 -0
- package/cjs/ts-types/events.js.map +1 -0
- package/cjs/ts-types/gantt-engine.d.ts +163 -0
- package/cjs/ts-types/gantt-engine.js +6 -0
- package/cjs/ts-types/gantt-engine.js.map +1 -0
- package/cjs/ts-types/index.d.ts +4 -0
- package/cjs/ts-types/index.js +22 -0
- package/cjs/ts-types/index.js.map +1 -0
- package/dist/vtable-gantt.js +53942 -0
- package/dist/vtable-gantt.min.js +1 -0
- package/es/Gantt.d.ts +111 -0
- package/es/Gantt.js +246 -0
- package/es/Gantt.js.map +1 -0
- package/es/data/DataSource.d.ts +9 -0
- package/es/data/DataSource.js +22 -0
- package/es/data/DataSource.js.map +1 -0
- package/es/env.d.ts +19 -0
- package/es/env.js +42 -0
- package/es/env.js.map +1 -0
- package/es/event/EventHandler.d.ts +47 -0
- package/es/event/EventHandler.js +119 -0
- package/es/event/EventHandler.js.map +1 -0
- package/es/event/EventTarget.d.ts +12 -0
- package/es/event/EventTarget.js +58 -0
- package/es/event/EventTarget.js.map +1 -0
- package/es/event/event-manager.d.ts +15 -0
- package/es/event/event-manager.js +78 -0
- package/es/event/event-manager.js.map +1 -0
- package/es/event/scroll.d.ts +22 -0
- package/es/event/scroll.js +126 -0
- package/es/event/scroll.js.map +1 -0
- package/es/gantt-helper.d.ts +28 -0
- package/es/gantt-helper.js +220 -0
- package/es/gantt-helper.js.map +1 -0
- package/es/index.d.ts +7 -0
- package/es/index.js +10 -0
- package/es/index.js.map +1 -0
- package/es/register.d.ts +1 -0
- package/es/register.js +1 -0
- package/es/register.js.map +1 -0
- package/es/scenegraph/frame-border.d.ts +9 -0
- package/es/scenegraph/frame-border.js +34 -0
- package/es/scenegraph/frame-border.js.map +1 -0
- package/es/scenegraph/ganttNode.d.ts +7 -0
- package/es/scenegraph/ganttNode.js +8 -0
- package/es/scenegraph/ganttNode.js.map +1 -0
- package/es/scenegraph/grid.d.ts +30 -0
- package/es/scenegraph/grid.js +122 -0
- package/es/scenegraph/grid.js.map +1 -0
- package/es/scenegraph/mark-line.d.ts +15 -0
- package/es/scenegraph/mark-line.js +58 -0
- package/es/scenegraph/mark-line.js.map +1 -0
- package/es/scenegraph/scenegraph.d.ts +41 -0
- package/es/scenegraph/scenegraph.js +116 -0
- package/es/scenegraph/scenegraph.js.map +1 -0
- package/es/scenegraph/scroll-bar.d.ts +19 -0
- package/es/scenegraph/scroll-bar.js +144 -0
- package/es/scenegraph/scroll-bar.js.map +1 -0
- package/es/scenegraph/task-bar.d.ts +24 -0
- package/es/scenegraph/task-bar.js +188 -0
- package/es/scenegraph/task-bar.js.map +1 -0
- package/es/scenegraph/timeline-header.d.ts +10 -0
- package/es/scenegraph/timeline-header.js +130 -0
- package/es/scenegraph/timeline-header.js.map +1 -0
- package/es/state/gantt-table-sync.d.ts +7 -0
- package/es/state/gantt-table-sync.js +51 -0
- package/es/state/gantt-table-sync.js.map +1 -0
- package/es/state/state-manager.d.ts +58 -0
- package/es/state/state-manager.js +219 -0
- package/es/state/state-manager.js.map +1 -0
- package/es/themes.d.ts +1 -0
- package/es/themes.js +1 -0
- package/es/themes.js.map +1 -0
- package/es/tools/debounce.d.ts +1 -0
- package/es/tools/debounce.js +43 -0
- package/es/tools/debounce.js.map +1 -0
- package/es/tools/index.d.ts +2 -0
- package/es/tools/index.js +4 -0
- package/es/tools/index.js.map +1 -0
- package/es/tools/isx.d.ts +16 -0
- package/es/tools/isx.js +80 -0
- package/es/tools/isx.js.map +1 -0
- package/es/tools/pixel-ratio.d.ts +2 -0
- package/es/tools/pixel-ratio.js +12 -0
- package/es/tools/pixel-ratio.js.map +1 -0
- package/es/tools/util.d.ts +7 -0
- package/es/tools/util.js +78 -0
- package/es/tools/util.js.map +1 -0
- package/es/ts-types/EVENT_TYPE.d.ts +5 -0
- package/es/ts-types/EVENT_TYPE.js +5 -0
- package/es/ts-types/EVENT_TYPE.js.map +1 -0
- package/es/ts-types/common.d.ts +13 -0
- package/es/ts-types/common.js +13 -0
- package/es/ts-types/common.js.map +1 -0
- package/es/ts-types/events.d.ts +14 -0
- package/es/ts-types/events.js +2 -0
- package/es/ts-types/events.js.map +1 -0
- package/es/ts-types/gantt-engine.d.ts +163 -0
- package/es/ts-types/gantt-engine.js +2 -0
- package/es/ts-types/gantt-engine.js.map +1 -0
- package/es/ts-types/index.d.ts +4 -0
- package/es/ts-types/index.js +8 -0
- package/es/ts-types/index.js.map +1 -0
- package/package.json +122 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function syncScrollStateToTable(gantt) {
|
|
4
|
+
const {scroll: scroll} = gantt.stateManager, {verticalBarPos: verticalBarPos} = scroll;
|
|
5
|
+
gantt.taskListTableInstance.stateManager.setScrollTop(verticalBarPos, !1);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function syncScrollStateFromTable(gantt) {
|
|
9
|
+
var _a;
|
|
10
|
+
gantt.taskListTableInstance && (null === (_a = gantt.taskListTableInstance) || void 0 === _a || _a.on("scroll", (args => {
|
|
11
|
+
if ("vertical" === args.scrollDirection) {
|
|
12
|
+
const {scroll: scroll} = gantt.taskListTableInstance.stateManager, {verticalBarPos: verticalBarPos} = scroll;
|
|
13
|
+
gantt.stateManager.setScrollTop(verticalBarPos, !1);
|
|
14
|
+
}
|
|
15
|
+
})));
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function syncResizeStateFromTable(gantt) {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
gantt.taskListTableInstance && "auto" === (null === (_a = gantt.options.taskListTable) || void 0 === _a ? void 0 : _a.width) && (null === (_b = gantt.taskListTableInstance) || void 0 === _b || _b.on("resize_column", (args => {
|
|
21
|
+
gantt.taskTableWidth = gantt.taskListTableInstance.getAllColsWidth() + 2 * gantt.taskListTableInstance.tableX,
|
|
22
|
+
gantt.element.style.left = gantt.taskTableWidth ? `${gantt.taskTableWidth}px` : "0px",
|
|
23
|
+
gantt._resize();
|
|
24
|
+
})));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function syncEditCellFromTable(gantt) {
|
|
28
|
+
var _a;
|
|
29
|
+
null === (_a = gantt.taskListTableInstance) || void 0 === _a || _a.on("change_cell_value", (args => {
|
|
30
|
+
const {col: col, row: row, rawValue: rawValue, changedValue: changedValue} = args;
|
|
31
|
+
gantt.redrawRecord(row - gantt.taskListTableInstance.columnHeaderLevelCount);
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function syncDragOrderFromTable(gantt) {
|
|
36
|
+
var _a;
|
|
37
|
+
null === (_a = gantt.taskListTableInstance) || void 0 === _a || _a.on("change_header_position", (args => {
|
|
38
|
+
gantt.scenegraph.refreshTaskBars();
|
|
39
|
+
const left = gantt.stateManager.scroll.horizontalBarPos, top = gantt.stateManager.scroll.verticalBarPos;
|
|
40
|
+
gantt.scenegraph.setX(-left), gantt.scenegraph.setY(-top);
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function syncTreeChangeFromTable(gantt) {
|
|
45
|
+
var _a;
|
|
46
|
+
null === (_a = gantt.taskListTableInstance) || void 0 === _a || _a.on("tree_hierarchy_state_change", (args => {
|
|
47
|
+
gantt._syncPropsFromTable(), gantt.resizeLine.style.height = gantt.drawHeight + "px",
|
|
48
|
+
gantt.scenegraph.refreshTaskBarsAndGrid();
|
|
49
|
+
const left = gantt.stateManager.scroll.horizontalBarPos, top = gantt.stateManager.scroll.verticalBarPos;
|
|
50
|
+
gantt.scenegraph.setX(-left), gantt.scenegraph.setY(-top);
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
Object.defineProperty(exports, "__esModule", {
|
|
55
|
+
value: !0
|
|
56
|
+
}), exports.syncTreeChangeFromTable = exports.syncDragOrderFromTable = exports.syncEditCellFromTable = exports.syncResizeStateFromTable = exports.syncScrollStateFromTable = exports.syncScrollStateToTable = void 0,
|
|
57
|
+
exports.syncScrollStateToTable = syncScrollStateToTable, exports.syncScrollStateFromTable = syncScrollStateFromTable,
|
|
58
|
+
exports.syncResizeStateFromTable = syncResizeStateFromTable, exports.syncEditCellFromTable = syncEditCellFromTable,
|
|
59
|
+
exports.syncDragOrderFromTable = syncDragOrderFromTable, exports.syncTreeChangeFromTable = syncTreeChangeFromTable;
|
|
60
|
+
//# sourceMappingURL=gantt-table-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/state/gantt-table-sync.ts"],"names":[],"mappings":"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","file":"gantt-table-sync.js","sourcesContent":["import type { Gantt } from '../Gantt';\n\nexport function syncScrollStateToTable(gantt: Gantt) {\n const { scroll } = gantt.stateManager;\n const { verticalBarPos } = scroll;\n gantt.taskListTableInstance.stateManager.setScrollTop(verticalBarPos, false);\n}\n\nexport function syncScrollStateFromTable(gantt: Gantt) {\n if (gantt.taskListTableInstance) {\n gantt.taskListTableInstance?.on('scroll', (args: any) => {\n if (args.scrollDirection === 'vertical') {\n const { scroll } = gantt.taskListTableInstance.stateManager;\n const { verticalBarPos } = scroll;\n gantt.stateManager.setScrollTop(verticalBarPos, false);\n }\n });\n }\n}\nexport function syncResizeStateFromTable(gantt: Gantt) {\n if (gantt.taskListTableInstance && gantt.options.taskListTable?.width === 'auto') {\n gantt.taskListTableInstance?.on('resize_column', (args: any) => {\n gantt.taskTableWidth = gantt.taskListTableInstance.getAllColsWidth() + gantt.taskListTableInstance.tableX * 2;\n gantt.element.style.left = gantt.taskTableWidth ? `${gantt.taskTableWidth}px` : '0px';\n gantt._resize();\n });\n }\n}\nexport function syncEditCellFromTable(gantt: Gantt) {\n gantt.taskListTableInstance?.on('change_cell_value', (args: any) => {\n const { col, row, rawValue, changedValue } = args;\n gantt.redrawRecord(row - gantt.taskListTableInstance.columnHeaderLevelCount);\n // const record = gantt.getRecordByIndex(row - gantt.listTableInstance.columnHeaderLevelCount);\n // debugger;\n });\n}\n\nexport function syncDragOrderFromTable(gantt: Gantt) {\n gantt.taskListTableInstance?.on('change_header_position', (args: any) => {\n gantt.scenegraph.refreshTaskBars();\n const left = gantt.stateManager.scroll.horizontalBarPos;\n const top = gantt.stateManager.scroll.verticalBarPos;\n gantt.scenegraph.setX(-left);\n gantt.scenegraph.setY(-top);\n });\n}\n\nexport function syncTreeChangeFromTable(gantt: Gantt) {\n gantt.taskListTableInstance?.on('tree_hierarchy_state_change', (args: any) => {\n gantt._syncPropsFromTable();\n gantt.resizeLine.style.height = gantt.drawHeight + 'px'; //'100%';\n gantt.scenegraph.refreshTaskBarsAndGrid();\n const left = gantt.stateManager.scroll.horizontalBarPos;\n const top = gantt.stateManager.scroll.verticalBarPos;\n gantt.scenegraph.setX(-left);\n gantt.scenegraph.setY(-top);\n });\n}\n"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { Gantt } from '../Gantt';
|
|
2
|
+
import { InteractionState } from '../ts-types';
|
|
3
|
+
import type { VRender } from '@visactor/vtable';
|
|
4
|
+
import type { GanttTaskBarNode } from '../scenegraph/ganttNode';
|
|
5
|
+
export declare class StateManager {
|
|
6
|
+
_gantt: Gantt;
|
|
7
|
+
scroll: {
|
|
8
|
+
horizontalBarPos: number;
|
|
9
|
+
verticalBarPos: number;
|
|
10
|
+
};
|
|
11
|
+
fastScrolling: boolean;
|
|
12
|
+
interactionState: InteractionState;
|
|
13
|
+
moveTaskBar: {
|
|
14
|
+
startX: number;
|
|
15
|
+
startY: number;
|
|
16
|
+
targetStartX: number;
|
|
17
|
+
moving: boolean;
|
|
18
|
+
target: GanttTaskBarNode;
|
|
19
|
+
};
|
|
20
|
+
hoverTaskBar: {
|
|
21
|
+
startX: number;
|
|
22
|
+
targetStartX: number;
|
|
23
|
+
target: GanttTaskBarNode;
|
|
24
|
+
};
|
|
25
|
+
resizeTaskBar: {
|
|
26
|
+
startX: number;
|
|
27
|
+
startY: number;
|
|
28
|
+
targetStartX: number;
|
|
29
|
+
target: GanttTaskBarNode;
|
|
30
|
+
resizing: boolean;
|
|
31
|
+
onIconName: string;
|
|
32
|
+
};
|
|
33
|
+
resizeTableWidth: {
|
|
34
|
+
lastX: number;
|
|
35
|
+
resizing: boolean;
|
|
36
|
+
};
|
|
37
|
+
resetInteractionState: (this: any, ...args: any) => any;
|
|
38
|
+
constructor(gantt: Gantt);
|
|
39
|
+
setScrollTop(top: number, triggerEvent?: boolean): void;
|
|
40
|
+
setScrollLeft(left: number, triggerEvent?: boolean): void;
|
|
41
|
+
updateInteractionState(mode: InteractionState): void;
|
|
42
|
+
updateVerticalScrollBar(yRatio: number): void;
|
|
43
|
+
updateHorizontalScrollBar(xRatio: number): void;
|
|
44
|
+
startMoveTaskBar(target: GanttTaskBarNode, x: number, y: number): void;
|
|
45
|
+
isMoveingTaskBar(): boolean;
|
|
46
|
+
endMoveTaskBar(x: number): void;
|
|
47
|
+
dealTaskBarMove(e: VRender.FederatedPointerEvent): void;
|
|
48
|
+
startResizeTaskBar(target: VRender.Group, x: number, y: number, onIconName: string): void;
|
|
49
|
+
isResizingTaskBar(): boolean;
|
|
50
|
+
endResizeTaskBar(x: number): void;
|
|
51
|
+
dealTaskBarResize(e: VRender.FederatedPointerEvent): void;
|
|
52
|
+
startResizeTableWidth(e: MouseEvent): void;
|
|
53
|
+
isResizingTableWidth(): boolean;
|
|
54
|
+
endResizeTableWidth(): void;
|
|
55
|
+
dealResizeTableWidth(e: MouseEvent): void;
|
|
56
|
+
showTaskBarHover(e: VRender.FederatedPointerEvent): void;
|
|
57
|
+
hideTaskBarHover(): void;
|
|
58
|
+
}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.StateManager = void 0;
|
|
6
|
+
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), ts_types_1 = require("../ts-types"), gantt_table_sync_1 = require("./gantt-table-sync"), gantt_helper_1 = require("../gantt-helper"), debounce_1 = require("../tools/debounce");
|
|
8
|
+
|
|
9
|
+
class StateManager {
|
|
10
|
+
constructor(gantt) {
|
|
11
|
+
this.interactionState = ts_types_1.InteractionState.default, this.resetInteractionState = (0,
|
|
12
|
+
debounce_1.debounce)((() => {
|
|
13
|
+
this.updateInteractionState(ts_types_1.InteractionState.default);
|
|
14
|
+
}), 100), this._gantt = gantt, this.scroll = {
|
|
15
|
+
horizontalBarPos: 0,
|
|
16
|
+
verticalBarPos: 0
|
|
17
|
+
}, this.moveTaskBar = {
|
|
18
|
+
targetStartX: null,
|
|
19
|
+
startX: null,
|
|
20
|
+
startY: null,
|
|
21
|
+
moving: !1,
|
|
22
|
+
target: null
|
|
23
|
+
}, this.hoverTaskBar = {
|
|
24
|
+
targetStartX: null,
|
|
25
|
+
startX: null,
|
|
26
|
+
target: null
|
|
27
|
+
}, this.resizeTaskBar = {
|
|
28
|
+
targetStartX: null,
|
|
29
|
+
startX: null,
|
|
30
|
+
startY: null,
|
|
31
|
+
target: null,
|
|
32
|
+
resizing: !1,
|
|
33
|
+
onIconName: ""
|
|
34
|
+
}, this.resizeTableWidth = {
|
|
35
|
+
lastX: null,
|
|
36
|
+
resizing: !1
|
|
37
|
+
}, this.updateVerticalScrollBar = this.updateVerticalScrollBar.bind(this), this.updateHorizontalScrollBar = this.updateHorizontalScrollBar.bind(this),
|
|
38
|
+
(0, gantt_table_sync_1.syncScrollStateFromTable)(this._gantt), (0, gantt_table_sync_1.syncResizeStateFromTable)(this._gantt),
|
|
39
|
+
(0, gantt_table_sync_1.syncEditCellFromTable)(this._gantt), (0, gantt_table_sync_1.syncDragOrderFromTable)(this._gantt),
|
|
40
|
+
(0, gantt_table_sync_1.syncTreeChangeFromTable)(this._gantt);
|
|
41
|
+
}
|
|
42
|
+
setScrollTop(top, triggerEvent = !0) {
|
|
43
|
+
const totalHeight = this._gantt.getAllRowsHeight();
|
|
44
|
+
top = Math.max(0, Math.min(top, totalHeight - this._gantt.scenegraph.height)), top = Math.ceil(top);
|
|
45
|
+
const oldVerticalBarPos = this.scroll.verticalBarPos;
|
|
46
|
+
this.scroll.verticalBarPos = top, (0, vutils_1.isValid)(this.scroll.verticalBarPos) && !isNaN(this.scroll.verticalBarPos) || (this.scroll.verticalBarPos = 0),
|
|
47
|
+
this._gantt.scenegraph.setY(-top);
|
|
48
|
+
const yRatio = top / (totalHeight - this._gantt.scenegraph.height);
|
|
49
|
+
this._gantt.scenegraph.scrollbarComponent.updateVerticalScrollBarPos(yRatio), oldVerticalBarPos !== top && triggerEvent && ((0,
|
|
50
|
+
gantt_table_sync_1.syncScrollStateToTable)(this._gantt), this._gantt.fireListeners(ts_types_1.GANTT_EVENT_TYPE.SCROLL, {
|
|
51
|
+
scrollTop: this.scroll.verticalBarPos,
|
|
52
|
+
scrollLeft: this.scroll.horizontalBarPos,
|
|
53
|
+
scrollDirection: "vertical",
|
|
54
|
+
scrollRatioY: yRatio
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
setScrollLeft(left, triggerEvent = !0) {
|
|
58
|
+
const totalWidth = this._gantt.getAllColsWidth();
|
|
59
|
+
left = Math.max(0, Math.min(left, totalWidth - this._gantt.scenegraph.width)), left = Math.ceil(left);
|
|
60
|
+
const oldHorizontalBarPos = this.scroll.horizontalBarPos;
|
|
61
|
+
this.scroll.horizontalBarPos = left, (0, vutils_1.isValid)(this.scroll.horizontalBarPos) && !isNaN(this.scroll.horizontalBarPos) || (this.scroll.horizontalBarPos = 0),
|
|
62
|
+
this._gantt.scenegraph.setX(-left);
|
|
63
|
+
const xRatio = left / (totalWidth - this._gantt.scenegraph.width);
|
|
64
|
+
this._gantt.scenegraph.scrollbarComponent.updateHorizontalScrollBarPos(xRatio),
|
|
65
|
+
oldHorizontalBarPos !== left && triggerEvent && this._gantt.fireListeners(ts_types_1.GANTT_EVENT_TYPE.SCROLL, {
|
|
66
|
+
scrollTop: this.scroll.verticalBarPos,
|
|
67
|
+
scrollLeft: this.scroll.horizontalBarPos,
|
|
68
|
+
scrollDirection: "horizontal",
|
|
69
|
+
scrollRatioX: xRatio
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
updateInteractionState(mode) {
|
|
73
|
+
if (this.interactionState === mode) return;
|
|
74
|
+
const oldState = this.interactionState;
|
|
75
|
+
this.interactionState = mode, oldState === ts_types_1.InteractionState.scrolling && ts_types_1.InteractionState.default;
|
|
76
|
+
}
|
|
77
|
+
updateVerticalScrollBar(yRatio) {
|
|
78
|
+
const totalHeight = this._gantt.getAllRowsHeight();
|
|
79
|
+
this.scroll.verticalBarPos;
|
|
80
|
+
this.scroll.verticalBarPos = Math.ceil(yRatio * (totalHeight - this._gantt.scenegraph.height)),
|
|
81
|
+
(0, vutils_1.isValid)(this.scroll.verticalBarPos) && !isNaN(this.scroll.verticalBarPos) || (this.scroll.verticalBarPos = 0),
|
|
82
|
+
this._gantt.scenegraph.setY(-this.scroll.verticalBarPos, 1 === yRatio), (0, gantt_table_sync_1.syncScrollStateToTable)(this._gantt),
|
|
83
|
+
this._gantt.fireListeners(ts_types_1.GANTT_EVENT_TYPE.SCROLL, {
|
|
84
|
+
scrollTop: this.scroll.verticalBarPos,
|
|
85
|
+
scrollLeft: this.scroll.horizontalBarPos,
|
|
86
|
+
scrollDirection: "vertical",
|
|
87
|
+
scrollRatioY: yRatio
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
updateHorizontalScrollBar(xRatio) {
|
|
91
|
+
const totalWidth = this._gantt.getAllColsWidth();
|
|
92
|
+
this.scroll.horizontalBarPos;
|
|
93
|
+
this.scroll.horizontalBarPos = Math.ceil(xRatio * (totalWidth - this._gantt.scenegraph.width)),
|
|
94
|
+
(0, vutils_1.isValid)(this.scroll.horizontalBarPos) && !isNaN(this.scroll.horizontalBarPos) || (this.scroll.horizontalBarPos = 0),
|
|
95
|
+
this._gantt.scenegraph.setX(-this.scroll.horizontalBarPos, 1 === xRatio), this._gantt.fireListeners(ts_types_1.GANTT_EVENT_TYPE.SCROLL, {
|
|
96
|
+
scrollTop: this.scroll.verticalBarPos,
|
|
97
|
+
scrollLeft: this.scroll.horizontalBarPos,
|
|
98
|
+
scrollDirection: "horizontal",
|
|
99
|
+
scrollRatioY: xRatio
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
startMoveTaskBar(target, x, y) {
|
|
103
|
+
"task-bar-hover-shadow" === target.name && (target = target.parent), this.moveTaskBar.moving = !0,
|
|
104
|
+
this.moveTaskBar.target = target, this.moveTaskBar.targetStartX = target.attribute.x,
|
|
105
|
+
this.moveTaskBar.startX = x, this.moveTaskBar.startY = y;
|
|
106
|
+
}
|
|
107
|
+
isMoveingTaskBar() {
|
|
108
|
+
return this.moveTaskBar.moving;
|
|
109
|
+
}
|
|
110
|
+
endMoveTaskBar(x) {
|
|
111
|
+
const deltaX = x - this.moveTaskBar.startX, days = Math.round(deltaX / this._gantt.parsedOptions.colWidthPerDay), correctX = days * this._gantt.parsedOptions.colWidthPerDay, targetEndX = this.moveTaskBar.targetStartX + correctX;
|
|
112
|
+
this._gantt.stateManager.moveTaskBar.target.setAttribute("x", targetEndX);
|
|
113
|
+
const taskIndex = (0, gantt_helper_1.getTaskIndexByY)(this.moveTaskBar.startY, this._gantt);
|
|
114
|
+
this._gantt.updateDateToTaskRecord("move", days, taskIndex), this.moveTaskBar.moving = !1,
|
|
115
|
+
this.moveTaskBar.target = null, this._gantt.scenegraph.updateNextFrame();
|
|
116
|
+
}
|
|
117
|
+
dealTaskBarMove(e) {
|
|
118
|
+
const target = this.moveTaskBar.target, x1 = this._gantt.eventManager.lastDragPointerXYOnWindow.x, dx = e.x - x1;
|
|
119
|
+
target.setAttribute("x", target.attribute.x + dx), this._gantt.scenegraph.updateNextFrame();
|
|
120
|
+
}
|
|
121
|
+
startResizeTaskBar(target, x, y, onIconName) {
|
|
122
|
+
this.resizeTaskBar.onIconName = onIconName, this.resizeTaskBar.resizing = !0, this.resizeTaskBar.target = target,
|
|
123
|
+
this.resizeTaskBar.targetStartX = target.attribute.x, this.resizeTaskBar.startX = x,
|
|
124
|
+
this.resizeTaskBar.startY = y;
|
|
125
|
+
}
|
|
126
|
+
isResizingTaskBar() {
|
|
127
|
+
return this.resizeTaskBar.resizing;
|
|
128
|
+
}
|
|
129
|
+
endResizeTaskBar(x) {
|
|
130
|
+
const direction = this._gantt.stateManager.resizeTaskBar.onIconName, deltaX = x - this.resizeTaskBar.startX;
|
|
131
|
+
let diff_days = Math.round(deltaX / this._gantt.parsedOptions.colWidthPerDay);
|
|
132
|
+
diff_days = "left" === direction ? -diff_days : diff_days;
|
|
133
|
+
const taskBarGroup = this._gantt.stateManager.resizeTaskBar.target, rect = this._gantt.stateManager.resizeTaskBar.target.barRect, progressRect = this._gantt.stateManager.resizeTaskBar.target.progressRect, taskIndex = (0,
|
|
134
|
+
gantt_helper_1.getTaskIndexByY)(this.resizeTaskBar.startY, this._gantt), {taskDays: taskDays, progress: progress} = this._gantt.getTaskInfoByTaskListIndex(taskIndex);
|
|
135
|
+
diff_days < 0 && taskDays + diff_days <= 0 && (diff_days = 1 - taskDays);
|
|
136
|
+
const correctX = ("left" === direction ? -diff_days : diff_days) * this._gantt.parsedOptions.colWidthPerDay, targetEndX = this.resizeTaskBar.targetStartX + correctX, taskBarSize = this._gantt.parsedOptions.colWidthPerDay * (taskDays + diff_days);
|
|
137
|
+
"left" === direction ? (taskBarGroup.setAttribute("x", targetEndX), taskBarGroup.setAttribute("width", taskBarSize),
|
|
138
|
+
null == rect || rect.setAttribute("width", taskBarGroup.attribute.width), null == progressRect || progressRect.setAttribute("width", progress / 100 * taskBarGroup.attribute.width),
|
|
139
|
+
this._gantt.updateDateToTaskRecord("start-move", -diff_days, taskIndex)) : "right" === direction && (taskBarGroup.setAttribute("width", taskBarSize),
|
|
140
|
+
null == rect || rect.setAttribute("width", taskBarGroup.attribute.width), null == progressRect || progressRect.setAttribute("width", progress / 100 * taskBarGroup.attribute.width),
|
|
141
|
+
this._gantt.updateDateToTaskRecord("end-move", diff_days, taskIndex)), this._gantt.scenegraph.taskBar.showHoverBar(taskBarGroup.attribute.x, taskBarGroup.attribute.y, taskBarGroup.attribute.width, taskBarGroup.attribute.height),
|
|
142
|
+
reCreateCustomNode(this._gantt, taskBarGroup, taskIndex), this.resizeTaskBar.resizing = !1,
|
|
143
|
+
this.resizeTaskBar.target = null, this._gantt.scenegraph.updateNextFrame();
|
|
144
|
+
}
|
|
145
|
+
dealTaskBarResize(e) {
|
|
146
|
+
const x1 = this._gantt.eventManager.lastDragPointerXYOnWindow.x, dx = e.x - x1, taskBarGroup = this._gantt.stateManager.resizeTaskBar.target, rect = taskBarGroup.barRect, progressRect = taskBarGroup.progressRect, textLabel = taskBarGroup.textLabel, progressField = this._gantt.parsedOptions.progressField, taskIndex = (0,
|
|
147
|
+
gantt_helper_1.getTaskIndexByY)(this.resizeTaskBar.startY, this._gantt), progress = this._gantt.getRecordByIndex(taskIndex)[progressField];
|
|
148
|
+
let diffWidth = "left" === this._gantt.stateManager.resizeTaskBar.onIconName ? -dx : dx, taskBarSize = taskBarGroup.attribute.width + diffWidth;
|
|
149
|
+
diffWidth < 0 && taskBarSize <= this._gantt.parsedOptions.colWidthPerDay && (diffWidth = this._gantt.parsedOptions.colWidthPerDay - taskBarGroup.attribute.width,
|
|
150
|
+
taskBarSize += diffWidth), taskBarGroup.setAttribute("width", taskBarSize), "left" === this._gantt.stateManager.resizeTaskBar.onIconName && taskBarGroup.setAttribute("x", taskBarGroup.attribute.x - diffWidth),
|
|
151
|
+
null == rect || rect.setAttribute("width", taskBarGroup.attribute.width), null == progressRect || progressRect.setAttribute("width", progress / 100 * taskBarGroup.attribute.width),
|
|
152
|
+
null == textLabel || textLabel.setAttribute("x", "center" === this._gantt.parsedOptions.taskBarLabelStyle.textAlign ? taskBarSize / 2 : "left" === this._gantt.parsedOptions.taskBarLabelStyle.textAlign ? 10 : taskBarSize - 10),
|
|
153
|
+
null == textLabel || textLabel.setAttribute("maxLineWidth", taskBarSize - 20);
|
|
154
|
+
const x = taskBarGroup.attribute.x, y = taskBarGroup.attribute.y, width = taskBarGroup.attribute.width, height = taskBarGroup.attribute.height;
|
|
155
|
+
this._gantt.scenegraph.taskBar.showHoverBar(x, y, width, height, this.resizeTaskBar.target),
|
|
156
|
+
reCreateCustomNode(this._gantt, taskBarGroup, taskIndex), this._gantt.scenegraph.updateNextFrame();
|
|
157
|
+
}
|
|
158
|
+
startResizeTableWidth(e) {
|
|
159
|
+
this.resizeTableWidth.resizing = !0, this.resizeTableWidth.lastX = e.pageX;
|
|
160
|
+
}
|
|
161
|
+
isResizingTableWidth() {
|
|
162
|
+
return this.resizeTableWidth.resizing;
|
|
163
|
+
}
|
|
164
|
+
endResizeTableWidth() {
|
|
165
|
+
this.resizeTableWidth.resizing = !1;
|
|
166
|
+
}
|
|
167
|
+
dealResizeTableWidth(e) {
|
|
168
|
+
var _a, _b;
|
|
169
|
+
if (!this.resizeTableWidth.resizing) return;
|
|
170
|
+
const deltaX = e.pageX - this.resizeTableWidth.lastX;
|
|
171
|
+
if (Math.abs(deltaX) >= 1) {
|
|
172
|
+
let width = this._gantt.taskTableWidth + deltaX;
|
|
173
|
+
const maxWidth = Math.min(this._gantt.taskListTableInstance.getAllColsWidth() + 2 * this._gantt.tableX, null !== (_a = this._gantt.options.taskListTable.maxWidth) && void 0 !== _a ? _a : 1e5), minWidth = Math.max(2 * this._gantt.tableX, null !== (_b = this._gantt.options.taskListTable.minWidth) && void 0 !== _b ? _b : 0);
|
|
174
|
+
deltaX > 0 && width > maxWidth && (width = maxWidth), deltaX < 0 && width < minWidth && (width = minWidth),
|
|
175
|
+
this._gantt.taskTableWidth = width, this._gantt.element.style.left = this._gantt.taskTableWidth ? `${this._gantt.taskTableWidth}px` : "0px",
|
|
176
|
+
this._gantt.resizeLine.style.left = this._gantt.taskTableWidth ? this._gantt.taskTableWidth - 7 + "px" : "0px",
|
|
177
|
+
this._gantt._resize(), this.resizeTableWidth.lastX = e.pageX;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
showTaskBarHover(e) {
|
|
181
|
+
const taskBarTarget = e.detailPath.find((pathNode => "task-bar" === pathNode.name));
|
|
182
|
+
if (this._gantt.stateManager.hoverTaskBar.target !== taskBarTarget) {
|
|
183
|
+
this._gantt.stateManager.hoverTaskBar.target = taskBarTarget;
|
|
184
|
+
const target = this._gantt.stateManager.hoverTaskBar.target, x = target.attribute.x, y = target.attribute.y, width = target.attribute.width, height = target.attribute.height;
|
|
185
|
+
this._gantt.scenegraph.taskBar.showHoverBar(x, y, width, height, taskBarTarget),
|
|
186
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
hideTaskBarHover() {
|
|
190
|
+
this._gantt.stateManager.hoverTaskBar.target = null, this._gantt.scenegraph.taskBar.hideHoverBar(),
|
|
191
|
+
this._gantt.scenegraph.updateNextFrame();
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
function reCreateCustomNode(gantt, taskBarGroup, taskIndex) {
|
|
196
|
+
const taskBarCustomLayout = gantt.parsedOptions.taskBarCustomLayout;
|
|
197
|
+
if (taskBarCustomLayout) {
|
|
198
|
+
let customLayoutObj;
|
|
199
|
+
if ("function" == typeof taskBarCustomLayout) {
|
|
200
|
+
const {startDate: startDate, endDate: endDate, taskDays: taskDays, progress: progress, taskRecord: taskRecord} = gantt.getTaskInfoByTaskListIndex(taskIndex);
|
|
201
|
+
customLayoutObj = taskBarCustomLayout({
|
|
202
|
+
width: taskBarGroup.attribute.width,
|
|
203
|
+
height: taskBarGroup.attribute.height,
|
|
204
|
+
index: taskIndex,
|
|
205
|
+
startDate: startDate,
|
|
206
|
+
endDate: endDate,
|
|
207
|
+
taskDays: taskDays,
|
|
208
|
+
progress: progress,
|
|
209
|
+
taskRecord: taskRecord,
|
|
210
|
+
ganttInstance: gantt
|
|
211
|
+
});
|
|
212
|
+
} else customLayoutObj = taskBarCustomLayout;
|
|
213
|
+
if (customLayoutObj) {
|
|
214
|
+
const rootContainer = customLayoutObj.rootContainer;
|
|
215
|
+
rootContainer.name = "task-bar-custom-render";
|
|
216
|
+
const oldCustomIndex = taskBarGroup.children.findIndex((node => "task-bar-custom-render" === node.name)), oldCustomNode = taskBarGroup.children[oldCustomIndex];
|
|
217
|
+
taskBarGroup.removeChild(oldCustomNode), taskBarGroup.insertInto(rootContainer, oldCustomIndex);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
//# sourceMappingURL=state-manager.js.map
|
|
223
|
+
exports.StateManager = StateManager;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/state/state-manager.ts"],"names":[],"mappings":"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","file":"state-manager.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { Gantt } from '../Gantt';\nimport { InteractionState, GANTT_EVENT_TYPE } from '../ts-types';\nimport type { VRender } from '@visactor/vtable';\nimport {\n syncEditCellFromTable,\n syncResizeStateFromTable,\n syncScrollStateFromTable,\n syncScrollStateToTable,\n syncDragOrderFromTable,\n syncTreeChangeFromTable\n} from './gantt-table-sync';\nimport { getTaskIndexByY } from '../gantt-helper';\nimport { debounce } from '../tools/debounce';\nimport type { GanttTaskBarNode } from '../scenegraph/ganttNode';\nexport class StateManager {\n _gantt: Gantt;\n\n scroll: {\n horizontalBarPos: number;\n verticalBarPos: number;\n };\n fastScrolling: boolean;\n /**\n * Default 默认展示\n * grabing 拖拽中\n * -Resize column 改变列宽\n * -column move 调整列顺序\n * -drag select 拖拽多选\n * Scrolling 滚动中\n */\n interactionState: InteractionState = InteractionState.default;\n\n moveTaskBar: {\n /** x坐标是相对table内坐标 */\n startX: number;\n startY: number;\n targetStartX: number;\n moving: boolean;\n target: GanttTaskBarNode;\n };\n\n hoverTaskBar: {\n /** x坐标是相对table内坐标 */\n startX: number;\n targetStartX: number;\n target: GanttTaskBarNode;\n };\n resizeTaskBar: {\n /** x坐标是相对table内坐标 */\n startX: number;\n startY: number;\n targetStartX: number;\n target: GanttTaskBarNode;\n resizing: boolean;\n onIconName: string;\n };\n resizeTableWidth: {\n /** x坐标是相对table内坐标 */\n lastX: number;\n resizing: boolean;\n };\n\n // 供滚动重置为default使用\n resetInteractionState = debounce(() => {\n this.updateInteractionState(InteractionState.default);\n }, 100);\n constructor(gantt: Gantt) {\n this._gantt = gantt;\n this.scroll = {\n horizontalBarPos: 0,\n verticalBarPos: 0\n };\n this.moveTaskBar = {\n targetStartX: null,\n startX: null,\n startY: null,\n moving: false,\n target: null\n };\n\n this.hoverTaskBar = {\n targetStartX: null,\n startX: null,\n target: null\n };\n this.resizeTaskBar = {\n targetStartX: null,\n startX: null,\n startY: null,\n target: null,\n resizing: false,\n onIconName: ''\n };\n this.resizeTableWidth = {\n lastX: null,\n resizing: false\n };\n\n this.updateVerticalScrollBar = this.updateVerticalScrollBar.bind(this);\n this.updateHorizontalScrollBar = this.updateHorizontalScrollBar.bind(this);\n\n syncScrollStateFromTable(this._gantt);\n syncResizeStateFromTable(this._gantt);\n syncEditCellFromTable(this._gantt);\n syncDragOrderFromTable(this._gantt);\n syncTreeChangeFromTable(this._gantt);\n }\n\n setScrollTop(top: number, triggerEvent: boolean = true) {\n // 矫正top值范围\n const totalHeight = this._gantt.getAllRowsHeight();\n top = Math.max(0, Math.min(top, totalHeight - this._gantt.scenegraph.height));\n top = Math.ceil(top);\n const oldVerticalBarPos = this.scroll.verticalBarPos;\n // this._gantt.stateManager.updateSelectPos(-1, -1);\n this.scroll.verticalBarPos = top;\n if (!isValid(this.scroll.verticalBarPos) || isNaN(this.scroll.verticalBarPos)) {\n this.scroll.verticalBarPos = 0;\n }\n // 设置scenegraph坐标\n this._gantt.scenegraph.setY(-top);\n\n // 更新scrollbar位置\n const yRatio = top / (totalHeight - this._gantt.scenegraph.height);\n this._gantt.scenegraph.scrollbarComponent.updateVerticalScrollBarPos(yRatio);\n\n if (oldVerticalBarPos !== top && triggerEvent) {\n syncScrollStateToTable(this._gantt);\n this._gantt.fireListeners(GANTT_EVENT_TYPE.SCROLL, {\n scrollTop: this.scroll.verticalBarPos,\n scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this._gantt.theme.scrollStyle?.width,\n // scrollWidth: this._gantt.theme.scrollStyle?.width,\n // viewHeight: this._gantt.tableNoFrameHeight,\n // viewWidth: this._gantt.tableNoFrameWidth,\n scrollDirection: 'vertical',\n scrollRatioY: yRatio\n });\n }\n }\n setScrollLeft(left: number, triggerEvent: boolean = true) {\n // 矫正left值范围\n const totalWidth = this._gantt.getAllColsWidth();\n\n left = Math.max(0, Math.min(left, totalWidth - this._gantt.scenegraph.width));\n left = Math.ceil(left);\n // 滚动期间清空选中清空\n // if (left !== this.scroll.horizontalBarPos) {\n // this.updateHoverPos(-1, -1);\n // }\n // this._gantt.stateManager.updateSelectPos(-1, -1);\n const oldHorizontalBarPos = this.scroll.horizontalBarPos;\n this.scroll.horizontalBarPos = left;\n if (!isValid(this.scroll.horizontalBarPos) || isNaN(this.scroll.horizontalBarPos)) {\n this.scroll.horizontalBarPos = 0;\n }\n\n // 设置scenegraph坐标\n this._gantt.scenegraph.setX(-left);\n\n // 更新scrollbar位置\n const xRatio = left / (totalWidth - this._gantt.scenegraph.width);\n this._gantt.scenegraph.scrollbarComponent.updateHorizontalScrollBarPos(xRatio);\n\n if (oldHorizontalBarPos !== left && triggerEvent) {\n this._gantt.fireListeners(GANTT_EVENT_TYPE.SCROLL, {\n scrollTop: this.scroll.verticalBarPos,\n scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this._gantt.theme.scrollStyle?.width,\n // scrollWidth: this._gantt.theme.scrollStyle?.width,\n // viewHeight: this._gantt.tableNoFrameHeight,\n // viewWidth: this._gantt.tableNoFrameWidth,\n scrollDirection: 'horizontal',\n scrollRatioX: xRatio\n });\n }\n }\n\n updateInteractionState(mode: InteractionState) {\n if (this.interactionState === mode) {\n return;\n }\n const oldState = this.interactionState;\n this.interactionState = mode;\n // 处理mode 更新后逻辑\n if (oldState === InteractionState.scrolling && mode === InteractionState.default) {\n // this.table.scenegraph.stage.disableDirtyBounds();\n // this.table.scenegraph.stage.render();\n // this.table.scenegraph.stage.enableDirtyBounds();\n }\n }\n\n updateVerticalScrollBar(yRatio: number) {\n const totalHeight = this._gantt.getAllRowsHeight();\n const oldVerticalBarPos = this.scroll.verticalBarPos;\n this.scroll.verticalBarPos = Math.ceil(yRatio * (totalHeight - this._gantt.scenegraph.height));\n if (!isValid(this.scroll.verticalBarPos) || isNaN(this.scroll.verticalBarPos)) {\n this.scroll.verticalBarPos = 0;\n }\n this._gantt.scenegraph.setY(-this.scroll.verticalBarPos, yRatio === 1);\n syncScrollStateToTable(this._gantt);\n this._gantt.fireListeners(GANTT_EVENT_TYPE.SCROLL, {\n scrollTop: this.scroll.verticalBarPos,\n scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this.table.theme.scrollStyle?.width,\n // scrollWidth: this.table.theme.scrollStyle?.width,\n // viewHeight: this.table.tableNoFrameHeight,\n // viewWidth: this.table.tableNoFrameWidth,\n scrollDirection: 'vertical',\n scrollRatioY: yRatio\n });\n }\n updateHorizontalScrollBar(xRatio: number) {\n const totalWidth = this._gantt.getAllColsWidth();\n const oldHorizontalBarPos = this.scroll.horizontalBarPos;\n this.scroll.horizontalBarPos = Math.ceil(xRatio * (totalWidth - this._gantt.scenegraph.width));\n if (!isValid(this.scroll.horizontalBarPos) || isNaN(this.scroll.horizontalBarPos)) {\n this.scroll.horizontalBarPos = 0;\n }\n this._gantt.scenegraph.setX(-this.scroll.horizontalBarPos, xRatio === 1);\n this._gantt.fireListeners(GANTT_EVENT_TYPE.SCROLL, {\n scrollTop: this.scroll.verticalBarPos,\n scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this.table.theme.scrollStyle?.width,\n // scrollWidth: this.table.theme.scrollStyle?.width,\n // viewHeight: this.table.tableNoFrameHeight,\n // viewWidth: this.table.tableNoFrameWidth,\n scrollDirection: 'horizontal',\n scrollRatioY: xRatio\n });\n // this.scroll.horizontalBarPos -= this._gantt.scenegraph.proxy.deltaX;\n // this._gantt.scenegraph.proxy.deltaX = 0;\n\n // this._gantt.fireListeners(TABLE_EVENT_TYPE.SCROLL, {\n // scrollTop: this.scroll.verticalBarPos,\n // scrollLeft: this.scroll.horizontalBarPos,\n // scrollHeight: this._gantt.theme.scrollStyle?.width,\n // scrollWidth: this._gantt.theme.scrollStyle?.width,\n // viewHeight: this._gantt.tableNoFrameHeight,\n // viewWidth: this._gantt.tableNoFrameWidth,\n // scrollDirection: 'horizontal',\n // scrollRatioX: xRatio\n // });\n\n // if (oldHorizontalBarPos !== this.scroll.horizontalBarPos) {\n // this.checkHorizontalScrollBarEnd();\n // }\n }\n\n startMoveTaskBar(target: GanttTaskBarNode, x: number, y: number) {\n if (target.name === 'task-bar-hover-shadow') {\n target = target.parent;\n }\n this.moveTaskBar.moving = true;\n this.moveTaskBar.target = target;\n this.moveTaskBar.targetStartX = target.attribute.x;\n this.moveTaskBar.startX = x;\n this.moveTaskBar.startY = y;\n }\n\n isMoveingTaskBar() {\n return this.moveTaskBar.moving;\n }\n endMoveTaskBar(x: number) {\n const deltaX = x - this.moveTaskBar.startX;\n const days = Math.round(deltaX / this._gantt.parsedOptions.colWidthPerDay);\n const correctX = days * this._gantt.parsedOptions.colWidthPerDay;\n const targetEndX = this.moveTaskBar.targetStartX + correctX;\n this._gantt.stateManager.moveTaskBar.target.setAttribute('x', targetEndX);\n const taskIndex = getTaskIndexByY(this.moveTaskBar.startY, this._gantt);\n this._gantt.updateDateToTaskRecord('move', days, taskIndex);\n this.moveTaskBar.moving = false;\n this.moveTaskBar.target = null;\n this._gantt.scenegraph.updateNextFrame();\n }\n dealTaskBarMove(e: VRender.FederatedPointerEvent) {\n const target = this.moveTaskBar.target;\n const x1 = this._gantt.eventManager.lastDragPointerXYOnWindow.x;\n const x2 = e.x;\n const dx = x2 - x1;\n target.setAttribute('x', target.attribute.x + dx);\n this._gantt.scenegraph.updateNextFrame();\n\n //\n }\n //#region 调整拖拽任务条的大小\n startResizeTaskBar(target: VRender.Group, x: number, y: number, onIconName: string) {\n // if (target.name === 'task-bar-hover-shadow') {\n // target = target.parent.parent;\n // }\n this.resizeTaskBar.onIconName = onIconName;\n this.resizeTaskBar.resizing = true;\n this.resizeTaskBar.target = target;\n this.resizeTaskBar.targetStartX = target.attribute.x;\n this.resizeTaskBar.startX = x;\n this.resizeTaskBar.startY = y;\n }\n isResizingTaskBar() {\n return this.resizeTaskBar.resizing;\n }\n endResizeTaskBar(x: number) {\n const direction = this._gantt.stateManager.resizeTaskBar.onIconName;\n const deltaX = x - this.resizeTaskBar.startX;\n let diff_days = Math.round(deltaX / this._gantt.parsedOptions.colWidthPerDay);\n diff_days = direction === 'left' ? -diff_days : diff_days;\n\n const taskBarGroup = this._gantt.stateManager.resizeTaskBar.target;\n const rect = this._gantt.stateManager.resizeTaskBar.target.barRect;\n const progressRect = this._gantt.stateManager.resizeTaskBar.target.progressRect;\n const taskIndex = getTaskIndexByY(this.resizeTaskBar.startY, this._gantt);\n const { taskDays, progress } = this._gantt.getTaskInfoByTaskListIndex(taskIndex);\n if (diff_days < 0 && taskDays + diff_days <= 0) {\n diff_days = 1 - taskDays;\n }\n const correctX = (direction === 'left' ? -diff_days : diff_days) * this._gantt.parsedOptions.colWidthPerDay;\n const targetEndX = this.resizeTaskBar.targetStartX + correctX;\n\n const taskBarSize = this._gantt.parsedOptions.colWidthPerDay * (taskDays + diff_days);\n if (direction === 'left') {\n taskBarGroup.setAttribute('x', targetEndX);\n taskBarGroup.setAttribute('width', taskBarSize);\n rect?.setAttribute('width', taskBarGroup.attribute.width);\n progressRect?.setAttribute('width', (progress / 100) * taskBarGroup.attribute.width);\n this._gantt.updateDateToTaskRecord('start-move', -diff_days, taskIndex);\n } else if (direction === 'right') {\n taskBarGroup.setAttribute('width', taskBarSize);\n rect?.setAttribute('width', taskBarGroup.attribute.width);\n progressRect?.setAttribute('width', (progress / 100) * taskBarGroup.attribute.width);\n this._gantt.updateDateToTaskRecord('end-move', diff_days, taskIndex);\n }\n this._gantt.scenegraph.taskBar.showHoverBar(\n taskBarGroup.attribute.x,\n taskBarGroup.attribute.y,\n taskBarGroup.attribute.width,\n taskBarGroup.attribute.height\n );\n reCreateCustomNode(this._gantt, taskBarGroup, taskIndex);\n this.resizeTaskBar.resizing = false;\n this.resizeTaskBar.target = null;\n this._gantt.scenegraph.updateNextFrame();\n }\n dealTaskBarResize(e: VRender.FederatedPointerEvent) {\n const x1 = this._gantt.eventManager.lastDragPointerXYOnWindow.x;\n const x2 = e.x;\n const dx = x2 - x1;\n // debugger;\n const taskBarGroup = this._gantt.stateManager.resizeTaskBar.target;\n const rect = taskBarGroup.barRect;\n const progressRect = taskBarGroup.progressRect;\n const textLabel = taskBarGroup.textLabel;\n\n const progressField = this._gantt.parsedOptions.progressField;\n const taskIndex = getTaskIndexByY(this.resizeTaskBar.startY, this._gantt);\n const taskRecord = this._gantt.getRecordByIndex(taskIndex);\n const progress = taskRecord[progressField];\n\n let diffWidth = this._gantt.stateManager.resizeTaskBar.onIconName === 'left' ? -dx : dx;\n let taskBarSize = taskBarGroup.attribute.width + diffWidth;\n if (diffWidth < 0 && taskBarSize <= this._gantt.parsedOptions.colWidthPerDay) {\n diffWidth = this._gantt.parsedOptions.colWidthPerDay - taskBarGroup.attribute.width;\n taskBarSize += diffWidth;\n }\n\n taskBarGroup.setAttribute('width', taskBarSize);\n if (this._gantt.stateManager.resizeTaskBar.onIconName === 'left') {\n taskBarGroup.setAttribute('x', taskBarGroup.attribute.x - diffWidth);\n }\n\n rect?.setAttribute('width', taskBarGroup.attribute.width);\n progressRect?.setAttribute('width', (progress / 100) * taskBarGroup.attribute.width);\n textLabel?.setAttribute(\n 'x',\n this._gantt.parsedOptions.taskBarLabelStyle.textAlign === 'center'\n ? taskBarSize / 2\n : this._gantt.parsedOptions.taskBarLabelStyle.textAlign === 'left'\n ? 10\n : taskBarSize - 10\n );\n textLabel?.setAttribute('maxLineWidth', taskBarSize - 20);\n\n const x = taskBarGroup.attribute.x;\n const y = taskBarGroup.attribute.y;\n const width = taskBarGroup.attribute.width;\n const height = taskBarGroup.attribute.height;\n this._gantt.scenegraph.taskBar.showHoverBar(x, y, width, height, this.resizeTaskBar.target);\n\n reCreateCustomNode(this._gantt, taskBarGroup, taskIndex);\n this._gantt.scenegraph.updateNextFrame();\n //\n }\n //#endregion\n\n //#region 调整左侧任务列表表格整体的宽度\n startResizeTableWidth(e: MouseEvent) {\n this.resizeTableWidth.resizing = true;\n this.resizeTableWidth.lastX = e.pageX;\n //this.resizeTableWidth.startWidth = this._gantt.tableNoFrameWidth;\n }\n isResizingTableWidth() {\n return this.resizeTableWidth.resizing;\n }\n endResizeTableWidth() {\n this.resizeTableWidth.resizing = false;\n }\n\n dealResizeTableWidth(e: MouseEvent) {\n if (!this.resizeTableWidth.resizing) {\n return;\n }\n const deltaX = e.pageX - this.resizeTableWidth.lastX;\n if (Math.abs(deltaX) >= 1) {\n const startWidth = this._gantt.taskTableWidth;\n let width = startWidth + deltaX;\n const maxWidth = Math.min(\n this._gantt.taskListTableInstance.getAllColsWidth() + this._gantt.tableX * 2,\n this._gantt.options.taskListTable.maxWidth ?? 100000\n );\n const minWidth = Math.max(this._gantt.tableX * 2, this._gantt.options.taskListTable.minWidth ?? 0);\n if (deltaX > 0 && width > maxWidth) {\n width = maxWidth;\n }\n if (deltaX < 0 && width < minWidth) {\n width = minWidth;\n }\n this._gantt.taskTableWidth = width;\n this._gantt.element.style.left = this._gantt.taskTableWidth ? `${this._gantt.taskTableWidth}px` : '0px';\n this._gantt.resizeLine.style.left = this._gantt.taskTableWidth ? `${this._gantt.taskTableWidth - 7}px` : '0px';\n this._gantt._resize();\n this.resizeTableWidth.lastX = e.pageX;\n }\n }\n //#endregion\n\n showTaskBarHover(e: VRender.FederatedPointerEvent) {\n // const taskBarTarget =\n // e.target?.name === 'task-bar-hover-shadow-left-icon' || e.target?.name === 'task-bar-hover-shadow-right-icon'\n // ? e.target.parent //转成父级元素task-bar-hover-shadow 后面逻辑需要宽高值\n // : e.target;\n const taskBarTarget = e.detailPath.find((pathNode: any) => {\n return pathNode.name === 'task-bar'; // || pathNode.name === 'task-bar-hover-shadow';\n }) as any;\n if (this._gantt.stateManager.hoverTaskBar.target !== taskBarTarget) {\n this._gantt.stateManager.hoverTaskBar.target = taskBarTarget;\n const target = this._gantt.stateManager.hoverTaskBar.target;\n const x = target.attribute.x;\n const y = target.attribute.y;\n const width = target.attribute.width;\n const height = target.attribute.height;\n this._gantt.scenegraph.taskBar.showHoverBar(x, y, width, height, taskBarTarget);\n this._gantt.scenegraph.updateNextFrame();\n }\n //\n }\n hideTaskBarHover() {\n this._gantt.stateManager.hoverTaskBar.target = null;\n this._gantt.scenegraph.taskBar.hideHoverBar();\n this._gantt.scenegraph.updateNextFrame();\n }\n}\n\nfunction reCreateCustomNode(gantt: Gantt, taskBarGroup: VRender.Group, taskIndex: number) {\n const taskBarCustomLayout = gantt.parsedOptions.taskBarCustomLayout;\n if (taskBarCustomLayout) {\n let customLayoutObj;\n if (typeof taskBarCustomLayout === 'function') {\n const { startDate, endDate, taskDays, progress, taskRecord } = gantt.getTaskInfoByTaskListIndex(taskIndex);\n const arg = {\n width: taskBarGroup.attribute.width,\n height: taskBarGroup.attribute.height,\n index: taskIndex,\n startDate,\n endDate,\n taskDays,\n progress,\n taskRecord,\n ganttInstance: gantt\n };\n customLayoutObj = taskBarCustomLayout(arg);\n } else {\n customLayoutObj = taskBarCustomLayout;\n }\n if (customLayoutObj) {\n const rootContainer = customLayoutObj.rootContainer;\n rootContainer.name = 'task-bar-custom-render';\n const oldCustomIndex = taskBarGroup.children.findIndex((node: any) => {\n return node.name === 'task-bar-custom-render';\n });\n const oldCustomNode = taskBarGroup.children[oldCustomIndex] as VRender.Group;\n taskBarGroup.removeChild(oldCustomNode);\n taskBarGroup.insertInto(rootContainer, oldCustomIndex);\n }\n }\n}\n"]}
|
package/cjs/themes.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
package/cjs/themes.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=themes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/themes.ts"],"names":[],"mappings":"","file":"themes.js","sourcesContent":["// /* eslint-disable sort-imports */\n// import { extend, getIgnoreCase } from './tools/helper';\n// import darkTheme from './themes/DARK';\n// import brightTheme from './themes/BRIGHT';\n// import arcoTheme from './themes/ARCO';\n// import defaultTheme from './themes/DEFAULT';\n// import materialDesignTheme from './themes/SIMPLIFY';\n// import { themes as plugins } from './plugins/themes';\n// import { TableTheme } from './themes/theme';\n// import type { ITableThemeDefine } from './ts-types';\n// export const DARK = new TableTheme(darkTheme, darkTheme);\n// export const BRIGHT = new TableTheme(brightTheme, brightTheme);\n// export const ARCO = new TableTheme(arcoTheme, arcoTheme);\n// export const DEFAULT = new TableTheme(defaultTheme, defaultTheme);\n// export const SIMPLIFY = new TableTheme(materialDesignTheme, materialDesignTheme);\n\n// const builtin: { [key: string]: TableTheme } = {\n// DEFAULT,\n// SIMPLIFY,\n// ARCO,\n// DARK,\n// BRIGHT\n// };\n// // let defTheme = DEFAULT;\n// export const theme = { TableTheme };\n// export function of(value: ITableThemeDefine | string | undefined | null): TableTheme | null {\n// if (!value) {\n// return null;\n// }\n// if (typeof value === 'string') {\n// const t = getIgnoreCase(get(), value);\n// if (t) {\n// if (t instanceof TableTheme) {\n// return t;\n// }\n// return new TableTheme(t, t);\n// }\n// return null;\n// }\n// if (value instanceof TableTheme) {\n// return value;\n// }\n// return new TableTheme(value, value);\n// }\n\n// export function get(): { [key: string]: TableTheme } {\n// return extend(builtin, plugins);\n// }\n// export { ITableThemeDefine };\n// export default {\n// DARK,\n// BRIGHT,\n// ARCO,\n// DEFAULT,\n// SIMPLIFY,\n// theme,\n// of,\n// get\n// };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function debounce(func: Function, wait?: number, options?: any): (this: any, ...args: any) => any;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.debounce = void 0;
|
|
6
|
+
|
|
7
|
+
const isx_1 = require("./isx");
|
|
8
|
+
|
|
9
|
+
function debounce(func, wait, options) {
|
|
10
|
+
let lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, maxing = !1, leading = !1, trailing = !0;
|
|
11
|
+
const useRAF = !wait && 0 !== wait && "function" == typeof requestAnimationFrame;
|
|
12
|
+
if ("function" != typeof func) throw new TypeError("Expected a function");
|
|
13
|
+
function invokeFunc(time) {
|
|
14
|
+
const args = lastArgs, thisArg = lastThis;
|
|
15
|
+
return lastThis = void 0, lastArgs = void 0, lastInvokeTime = time, result = func.apply(thisArg, args),
|
|
16
|
+
result;
|
|
17
|
+
}
|
|
18
|
+
function startTimer(pendingFunc, wait) {
|
|
19
|
+
return useRAF ? requestAnimationFrame(pendingFunc) : setTimeout(pendingFunc, wait);
|
|
20
|
+
}
|
|
21
|
+
function shouldInvoke(time) {
|
|
22
|
+
const timeSinceLastCall = time - lastCallTime;
|
|
23
|
+
return void 0 === lastCallTime || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && time - lastInvokeTime >= maxWait;
|
|
24
|
+
}
|
|
25
|
+
function timerExpired() {
|
|
26
|
+
const time = Date.now();
|
|
27
|
+
if (shouldInvoke(time)) return function(time) {
|
|
28
|
+
return timerId = void 0, trailing && lastArgs ? invokeFunc(time) : (lastThis = void 0,
|
|
29
|
+
lastArgs = void 0, result);
|
|
30
|
+
}(time);
|
|
31
|
+
timerId = startTimer(timerExpired, function(time) {
|
|
32
|
+
const timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait && -(time - lastCallTime);
|
|
33
|
+
return maxing ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
|
|
34
|
+
}(time));
|
|
35
|
+
}
|
|
36
|
+
return wait = +wait || 0, (0, isx_1.isObject)(options) && (leading = !!options.leading,
|
|
37
|
+
maxing = "maxWait" in options, maxing && (maxWait = Math.max(+options.maxWait || 0, wait)),
|
|
38
|
+
trailing = "trailing" in options ? !!options.trailing : trailing), function(...args) {
|
|
39
|
+
const time = Date.now(), isInvoking = shouldInvoke(time);
|
|
40
|
+
if (lastArgs = args, lastThis = this, lastCallTime = time, isInvoking) {
|
|
41
|
+
if (void 0 === timerId) return function(time) {
|
|
42
|
+
return lastInvokeTime = time, timerId = startTimer(timerExpired, wait), leading ? invokeFunc(time) : result;
|
|
43
|
+
}(lastCallTime);
|
|
44
|
+
if (maxing) return timerId = startTimer(timerExpired, wait), invokeFunc(lastCallTime);
|
|
45
|
+
}
|
|
46
|
+
return void 0 === timerId && (timerId = startTimer(timerExpired, wait)), result;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
exports.debounce = debounce;
|
|
51
|
+
//# sourceMappingURL=debounce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tools/debounce.ts"],"names":[],"mappings":"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","file":"debounce.js","sourcesContent":["import { isObject } from './isx';\n\nexport function debounce(func: Function, wait?: number, options?: any) {\n let lastArgs: any;\n let lastThis: any;\n let maxWait: number; // 最长等待时间\n let result: any; // 存储 func 函数的返回值\n let timerId: number | undefined; // 定时器 id\n let lastCallTime: number; // 最近一次 执行 debounced 函数时的时间\n\n // 最近一次执行 func 时的时间戳\n let lastInvokeTime = 0;\n // options 是否 传入了 maxWait\n let maxing = false;\n // 是否在延迟开始前调用函数\n let leading = false;\n // 是否在延迟结束后调用函数\n let trailing = true;\n\n const useRAF = !wait && wait !== 0 && typeof requestAnimationFrame === 'function';\n\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function');\n }\n\n wait = +(wait as number) || 0;\n\n if (isObject(options)) {\n leading = !!options.leading;\n\n maxing = 'maxWait' in options;\n if (maxing) {\n maxWait = Math.max(+options.maxWait || 0, wait);\n }\n\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time: number) {\n const args = lastArgs;\n const thisArg = lastThis;\n\n lastThis = undefined;\n lastArgs = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n // 开启定时器\n function startTimer(pendingFunc: any, wait: number) {\n if (useRAF) {\n return requestAnimationFrame(pendingFunc);\n }\n return setTimeout(pendingFunc, wait);\n }\n\n // 清除定时器\n // function cancelTimer(id: number) {\n // if (useRAF) {\n // return cancelAnimationFrame(id);\n // }\n // clearTimeout(id);\n // }\n\n // 在延迟开始前调用\n function leadingEdge(time: number) {\n // 记录 函数被调用时 的时间戳\n lastInvokeTime = time;\n //@ts-ignore\n timerId = startTimer(timerExpired, wait);\n return leading ? invokeFunc(time) : result;\n }\n\n // 在延迟结束后调用\n function trailingEdge(time: number) {\n timerId = undefined;\n\n // lastArgs 在 debounced 函数执行时赋值\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n\n // 重置参数和作用域\n lastThis = undefined;\n lastArgs = undefined;\n return result;\n }\n\n function remainingWait(time: number) {\n // 计算 time 与最近一次调用 debounced 函数的时间差\n const timeSinceLastCall = time - lastCallTime;\n // 计算 time 与最近一次调用 func 函数的时间差\n const timeSinceLastInvoke = time - lastInvokeTime;\n // 用 wait 减去已经等待的时间\n const timeWaiting = wait && -timeSinceLastCall;\n\n return maxing ? Math.min(timeWaiting as number, maxWait - timeSinceLastInvoke) : timeWaiting;\n }\n\n // 是否可以执行函数\n function shouldInvoke(time: number) {\n // 计算 time 与最近一次调用 debounced 函数的时间差\n const timeSinceLastCall = time - lastCallTime;\n // 计算 time 与最近一次调用 func 函数的时间差\n const timeSinceLastInvoke = time - lastInvokeTime;\n\n return (\n // 是不是第一次执行 debouned 函数\n lastCallTime === undefined ||\n timeSinceLastCall >= (wait as number) ||\n timeSinceLastCall < 0 ||\n (maxing && timeSinceLastInvoke >= maxWait)\n );\n }\n\n // 封装执行函数,用于 wait 延迟结束后执行\n function timerExpired() {\n const time = Date.now();\n // 根据时间来判断是否可以执行 func 函数\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // 重新计算时间,重新建一个定时器\n // @ts-ignore\n timerId = startTimer(timerExpired, remainingWait(time));\n }\n\n function debounced(this: any, ...args: any) {\n const time = Date.now();\n const isInvoking = shouldInvoke(time);\n\n lastArgs = args;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n // 第一次执行时\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // @ts-ignore\n timerId = startTimer(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n\n // 因为 trailingEdge 函数内部会执行 timerId = undefined\n // trailingEdge 函数执行之后,又触发了 debounced\n if (timerId === undefined) {\n // @ts-ignore\n timerId = startTimer(timerExpired, wait);\n }\n\n return result;\n }\n\n return debounced;\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.getWeekNumber = exports.formatDate = void 0;
|
|
6
|
+
|
|
7
|
+
const util_1 = require("./util");
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "formatDate", {
|
|
10
|
+
enumerable: !0,
|
|
11
|
+
get: function() {
|
|
12
|
+
return util_1.formatDate;
|
|
13
|
+
}
|
|
14
|
+
}), Object.defineProperty(exports, "getWeekNumber", {
|
|
15
|
+
enumerable: !0,
|
|
16
|
+
get: function() {
|
|
17
|
+
return util_1.getWeekNumber;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tools/index.ts"],"names":[],"mappings":";;;AAAA,iCAAmD;AAE1C,2FAFA,iBAAU,OAEA;AAAE,8FAFA,oBAAa,OAEA","file":"index.js","sourcesContent":["import { formatDate, getWeekNumber } from './util';\n\nexport { formatDate, getWeekNumber };\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const judgeType: (value: any) => "symbol" | "error" | "undefined" | "object" | "function" | "array" | "string" | "number" | "regExp" | "boolean" | "date" | "null" | "document" | "global";
|
|
2
|
+
export declare const isIt: (v: any, type: string) => boolean;
|
|
3
|
+
export declare const isObject: (v: any) => boolean;
|
|
4
|
+
export declare const isFunction: (v: any) => boolean;
|
|
5
|
+
export declare const isArray: (v: any) => boolean;
|
|
6
|
+
export declare const isString: (v: any) => boolean;
|
|
7
|
+
export declare const isNumber: (v: any) => boolean;
|
|
8
|
+
export declare const isRegExp: (v: any) => boolean;
|
|
9
|
+
export declare const isBoolean: (v: any) => boolean;
|
|
10
|
+
export declare const isSymbol: (v: any) => boolean;
|
|
11
|
+
export declare const isDate: (v: any) => boolean;
|
|
12
|
+
export declare const isUndefined: (v: any) => boolean;
|
|
13
|
+
export declare const isNull: (v: any) => boolean;
|
|
14
|
+
export declare const isError: (v: any) => boolean;
|
|
15
|
+
export declare const isDocument: (v: any) => boolean;
|
|
16
|
+
export declare const isGlobal: (v: any) => boolean;
|