@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.
Files changed (36) hide show
  1. package/dist/tmagic-editor.js +454 -446
  2. package/dist/tmagic-editor.umd.cjs +453 -445
  3. package/package.json +7 -7
  4. package/src/components/CodeBlockEditor.vue +3 -3
  5. package/src/components/CodeParams.vue +2 -2
  6. package/src/components/ContentMenu.vue +13 -13
  7. package/src/components/FloatingBox.vue +9 -9
  8. package/src/components/Resizer.vue +2 -2
  9. package/src/components/ScrollBar.vue +6 -7
  10. package/src/components/ScrollViewer.vue +6 -6
  11. package/src/components/SplitView.vue +2 -2
  12. package/src/fields/DataSourceInput.vue +3 -3
  13. package/src/fields/DataSourceMethods.vue +4 -4
  14. package/src/hooks/use-code-block-edit.ts +5 -5
  15. package/src/initService.ts +104 -66
  16. package/src/layouts/CodeEditor.vue +6 -6
  17. package/src/layouts/Framework.vue +5 -5
  18. package/src/layouts/NavMenu.vue +6 -3
  19. package/src/layouts/page-bar/PageBar.vue +13 -13
  20. package/src/layouts/page-bar/PageBarScrollContainer.vue +12 -11
  21. package/src/layouts/props-panel/FormPanel.vue +6 -6
  22. package/src/layouts/props-panel/PropsPanel.vue +4 -2
  23. package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +3 -3
  24. package/src/layouts/sidebar/layer/LayerMenu.vue +2 -2
  25. package/src/layouts/sidebar/layer/LayerPanel.vue +5 -4
  26. package/src/layouts/sidebar/layer/use-click.ts +4 -6
  27. package/src/layouts/workspace/viewer/NodeListMenu.vue +5 -5
  28. package/src/layouts/workspace/viewer/Stage.vue +13 -13
  29. package/src/layouts/workspace/viewer/StageOverlay.vue +2 -2
  30. package/src/layouts/workspace/viewer/ViewerMenu.vue +3 -3
  31. package/src/services/componentList.ts +2 -2
  32. package/src/services/dep.ts +8 -2
  33. package/src/services/stageOverlay.ts +2 -2
  34. package/src/services/ui.ts +2 -2
  35. package/src/utils/idle-task.ts +26 -10
  36. package/types/index.d.ts +7 -60
@@ -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
- handler: (data: T) => void;
24
- data: T;
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 && this.taskList.length) {
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 = this.taskList.shift();
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 (this.taskList.length === 0) {
102
+ if (hightLevelTaskList.length === 0 && taskList.length === 0) {
91
103
  break;
92
104
  }
93
105
  }
94
106
  }
95
107
 
96
- if (this.taskList.length) {
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
- el: HTMLDivElement;
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
- titleEl: HTMLDivElement;
5420
+ title: HTMLDivElement;
5474
5421
  };
5475
5422
  rootEl: any;
5476
5423
  };