@tmagic/editor 1.5.3 → 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/dist/tmagic-editor.js +454 -446
- package/dist/tmagic-editor.umd.cjs +453 -445
- package/package.json +7 -7
- package/src/components/CodeBlockEditor.vue +3 -3
- package/src/components/CodeParams.vue +2 -2
- package/src/components/ContentMenu.vue +13 -13
- package/src/components/FloatingBox.vue +9 -9
- package/src/components/Resizer.vue +2 -2
- package/src/components/ScrollBar.vue +6 -7
- package/src/components/ScrollViewer.vue +6 -6
- package/src/components/SplitView.vue +2 -2
- package/src/fields/DataSourceInput.vue +3 -3
- package/src/fields/DataSourceMethods.vue +4 -4
- package/src/hooks/use-code-block-edit.ts +5 -5
- package/src/initService.ts +104 -66
- package/src/layouts/CodeEditor.vue +6 -6
- package/src/layouts/Framework.vue +5 -5
- package/src/layouts/NavMenu.vue +6 -3
- package/src/layouts/page-bar/PageBar.vue +13 -13
- package/src/layouts/page-bar/PageBarScrollContainer.vue +12 -11
- package/src/layouts/props-panel/FormPanel.vue +6 -6
- package/src/layouts/props-panel/PropsPanel.vue +4 -2
- package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +3 -3
- package/src/layouts/sidebar/layer/LayerMenu.vue +2 -2
- package/src/layouts/sidebar/layer/LayerPanel.vue +5 -4
- package/src/layouts/sidebar/layer/use-click.ts +4 -6
- package/src/layouts/workspace/viewer/NodeListMenu.vue +5 -5
- package/src/layouts/workspace/viewer/Stage.vue +13 -13
- package/src/layouts/workspace/viewer/StageOverlay.vue +2 -2
- package/src/layouts/workspace/viewer/ViewerMenu.vue +3 -3
- package/src/services/componentList.ts +2 -2
- package/src/services/dep.ts +8 -2
- package/src/services/stageOverlay.ts +2 -2
- package/src/services/ui.ts +2 -2
- package/src/utils/idle-task.ts +26 -10
- package/types/index.d.ts +7 -60
package/src/utils/idle-task.ts
CHANGED
|
@@ -2,8 +2,14 @@ import { EventEmitter } from 'events';
|
|
|
2
2
|
|
|
3
3
|
export interface IdleTaskEvents {
|
|
4
4
|
finish: [];
|
|
5
|
+
'hight-level-finish': [];
|
|
5
6
|
}
|
|
6
7
|
|
|
8
|
+
type TaskList<T> = {
|
|
9
|
+
handler: (data: T) => void;
|
|
10
|
+
data: T;
|
|
11
|
+
}[];
|
|
12
|
+
|
|
7
13
|
globalThis.requestIdleCallback =
|
|
8
14
|
globalThis.requestIdleCallback ||
|
|
9
15
|
function (cb) {
|
|
@@ -19,10 +25,9 @@ globalThis.requestIdleCallback =
|
|
|
19
25
|
};
|
|
20
26
|
|
|
21
27
|
export class IdleTask<T = any> extends EventEmitter {
|
|
22
|
-
private taskList:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}[] = [];
|
|
28
|
+
private taskList: TaskList<T> = [];
|
|
29
|
+
|
|
30
|
+
private hightLevelTaskList: TaskList<T> = [];
|
|
26
31
|
|
|
27
32
|
private taskHandle: number | null = null;
|
|
28
33
|
|
|
@@ -31,8 +36,8 @@ export class IdleTask<T = any> extends EventEmitter {
|
|
|
31
36
|
this.setMaxListeners(1000);
|
|
32
37
|
}
|
|
33
38
|
|
|
34
|
-
public enqueueTask(taskHandler: (data: T) => void, taskData: T) {
|
|
35
|
-
this.taskList.push({
|
|
39
|
+
public enqueueTask(taskHandler: (data: T) => void, taskData: T, isHightLevel = false) {
|
|
40
|
+
(isHightLevel ? this.hightLevelTaskList : this.taskList).push({
|
|
36
41
|
handler: taskHandler,
|
|
37
42
|
data: taskData,
|
|
38
43
|
});
|
|
@@ -43,6 +48,11 @@ export class IdleTask<T = any> extends EventEmitter {
|
|
|
43
48
|
}
|
|
44
49
|
|
|
45
50
|
public clearTasks() {
|
|
51
|
+
if (this.taskHandle) {
|
|
52
|
+
globalThis.cancelIdleCallback(this.taskHandle);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
this.hightLevelTaskList = [];
|
|
46
56
|
this.taskList = [];
|
|
47
57
|
}
|
|
48
58
|
|
|
@@ -65,10 +75,12 @@ export class IdleTask<T = any> extends EventEmitter {
|
|
|
65
75
|
}
|
|
66
76
|
|
|
67
77
|
private runTaskQueue(deadline: IdleDeadline) {
|
|
78
|
+
const { hightLevelTaskList, taskList } = this;
|
|
79
|
+
|
|
68
80
|
// 动画会占用空闲时间,当任务一直无法执行时,看看是否有动画正在播放
|
|
69
81
|
// 根据空闲时间的多少来决定执行的任务数,保证页面不卡死的情况下尽量多执行任务,不然当任务数巨大时,执行时间会很久
|
|
70
82
|
// 执行不完不会影响配置,但是会影响画布渲染
|
|
71
|
-
while (deadline.timeRemaining() > 0 &&
|
|
83
|
+
while (deadline.timeRemaining() > 0 && taskList.length) {
|
|
72
84
|
const timeRemaining = deadline.timeRemaining();
|
|
73
85
|
let times = 0;
|
|
74
86
|
if (timeRemaining <= 5) {
|
|
@@ -82,18 +94,22 @@ export class IdleTask<T = any> extends EventEmitter {
|
|
|
82
94
|
}
|
|
83
95
|
|
|
84
96
|
for (let i = 0; i < times; i++) {
|
|
85
|
-
const task =
|
|
97
|
+
const task = hightLevelTaskList.length > 0 ? hightLevelTaskList.shift() : taskList.shift();
|
|
86
98
|
if (task) {
|
|
87
99
|
task.handler(task.data);
|
|
88
100
|
}
|
|
89
101
|
|
|
90
|
-
if (
|
|
102
|
+
if (hightLevelTaskList.length === 0 && taskList.length === 0) {
|
|
91
103
|
break;
|
|
92
104
|
}
|
|
93
105
|
}
|
|
94
106
|
}
|
|
95
107
|
|
|
96
|
-
if (
|
|
108
|
+
if (!hightLevelTaskList.length) {
|
|
109
|
+
this.emit('hight-level-finish');
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (hightLevelTaskList.length || taskList.length) {
|
|
97
113
|
this.taskHandle = globalThis.requestIdleCallback(this.runTaskQueue.bind(this), { timeout: 300 });
|
|
98
114
|
} else {
|
|
99
115
|
this.taskHandle = 0;
|
package/types/index.d.ts
CHANGED
|
@@ -296,6 +296,7 @@ interface DepEvents {
|
|
|
296
296
|
'add-target': [target: Target];
|
|
297
297
|
'remove-target': [id: string | number];
|
|
298
298
|
collected: [nodes: MNode[], deep: boolean];
|
|
299
|
+
'ds-collected': [nodes: MNode[], deep: boolean];
|
|
299
300
|
}
|
|
300
301
|
interface State$1 {
|
|
301
302
|
collecting: boolean;
|
|
@@ -786,63 +787,7 @@ type AsyncMethodName = Writable<(typeof canUsePluginMethods)['async']>;
|
|
|
786
787
|
declare class Ui extends export_default {
|
|
787
788
|
constructor();
|
|
788
789
|
set<K extends keyof UiState, T extends UiState[K]>(name: K, value: T): void;
|
|
789
|
-
get<K extends keyof UiState>(name: K):
|
|
790
|
-
uiSelectMode: boolean;
|
|
791
|
-
showSrc: boolean;
|
|
792
|
-
showStylePanel: boolean;
|
|
793
|
-
zoom: number;
|
|
794
|
-
stageContainerRect: {
|
|
795
|
-
width: number;
|
|
796
|
-
height: number;
|
|
797
|
-
};
|
|
798
|
-
stageRect: {
|
|
799
|
-
width: number | string;
|
|
800
|
-
height: number | string;
|
|
801
|
-
};
|
|
802
|
-
columnWidth: {
|
|
803
|
-
left: number;
|
|
804
|
-
center: number;
|
|
805
|
-
right: number;
|
|
806
|
-
};
|
|
807
|
-
showGuides: boolean;
|
|
808
|
-
showRule: boolean;
|
|
809
|
-
propsPanelSize: "large" | "default" | "small";
|
|
810
|
-
showAddPageButton: boolean;
|
|
811
|
-
showPageListButton: boolean;
|
|
812
|
-
hideSlideBar: boolean;
|
|
813
|
-
sideBarItems: {
|
|
814
|
-
[x: string]: any;
|
|
815
|
-
text: string;
|
|
816
|
-
tabStyle?: (string | Record<string, any>) | undefined;
|
|
817
|
-
icon?: any;
|
|
818
|
-
$key: string;
|
|
819
|
-
draggable?: boolean | undefined;
|
|
820
|
-
beforeClick?: ((config: SideComponent) => boolean | Promise<boolean>) | undefined;
|
|
821
|
-
boxComponentConfig?: {
|
|
822
|
-
component?: any;
|
|
823
|
-
props?: Record<string, any> | undefined;
|
|
824
|
-
} | undefined;
|
|
825
|
-
type: "component";
|
|
826
|
-
component: any;
|
|
827
|
-
props?: Record<string, any> | undefined;
|
|
828
|
-
listeners?: Record<string, Function> | undefined;
|
|
829
|
-
slots?: Record<string, any> | undefined;
|
|
830
|
-
className?: string | undefined;
|
|
831
|
-
display?: (boolean | ((data?: Services) => Promise<boolean> | boolean)) | undefined;
|
|
832
|
-
}[];
|
|
833
|
-
navMenuRect: {
|
|
834
|
-
left: number;
|
|
835
|
-
top: number;
|
|
836
|
-
width: number;
|
|
837
|
-
height: number;
|
|
838
|
-
};
|
|
839
|
-
frameworkRect: {
|
|
840
|
-
left: number;
|
|
841
|
-
top: number;
|
|
842
|
-
width: number;
|
|
843
|
-
height: number;
|
|
844
|
-
};
|
|
845
|
-
}[K];
|
|
790
|
+
get<K extends keyof UiState>(name: K): vue.ShallowReactive<UiState>[K];
|
|
846
791
|
zoom(zoom: number): Promise<void>;
|
|
847
792
|
calcZoom(): Promise<number>;
|
|
848
793
|
resetState(): void;
|
|
@@ -2299,12 +2244,14 @@ declare const removeDataSourceFieldPrefix: (id?: string) => string;
|
|
|
2299
2244
|
|
|
2300
2245
|
interface IdleTaskEvents {
|
|
2301
2246
|
finish: [];
|
|
2247
|
+
'hight-level-finish': [];
|
|
2302
2248
|
}
|
|
2303
2249
|
declare class IdleTask<T = any> extends EventEmitter {
|
|
2304
2250
|
private taskList;
|
|
2251
|
+
private hightLevelTaskList;
|
|
2305
2252
|
private taskHandle;
|
|
2306
2253
|
constructor();
|
|
2307
|
-
enqueueTask(taskHandler: (data: T) => void, taskData: T): void;
|
|
2254
|
+
enqueueTask(taskHandler: (data: T) => void, taskData: T, isHightLevel?: boolean): void;
|
|
2308
2255
|
clearTasks(): void;
|
|
2309
2256
|
on<Name extends keyof IdleTaskEvents, Param extends IdleTaskEvents[Name]>(eventName: Name, listener: (...args: Param) => void | Promise<void>): this;
|
|
2310
2257
|
once<Name extends keyof IdleTaskEvents, Param extends IdleTaskEvents[Name]>(eventName: Name, listener: (...args: Param) => void | Promise<void>): this;
|
|
@@ -5373,7 +5320,7 @@ declare function __VLS_template$4(): {
|
|
|
5373
5320
|
right?(_: {}): any;
|
|
5374
5321
|
};
|
|
5375
5322
|
refs: {
|
|
5376
|
-
|
|
5323
|
+
target: HTMLDivElement;
|
|
5377
5324
|
};
|
|
5378
5325
|
rootEl: HTMLDivElement;
|
|
5379
5326
|
};
|
|
@@ -5470,7 +5417,7 @@ declare function __VLS_template$2(): {
|
|
|
5470
5417
|
};
|
|
5471
5418
|
refs: {
|
|
5472
5419
|
target: HTMLDivElement;
|
|
5473
|
-
|
|
5420
|
+
title: HTMLDivElement;
|
|
5474
5421
|
};
|
|
5475
5422
|
rootEl: any;
|
|
5476
5423
|
};
|