MCPcopy Create free account
hub / github.com/CloudOrc/SolidUI / ModelManager

Class ModelManager

solidui-web/src/utils/ModelManager.ts:28–265  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

26import { OnSelectViewEventData } from "@/types/eventbus";
27
28class ModelManager {
29 private model?: SolidModelDataType;
30
31 private currentPage?: SolidPageDataType;
32
33 private currentView?: SolidViewDataType;
34
35 private sceneMap: Map<string, SolidScenaDataType> = new Map();
36
37 private pageMap: Map<string, SolidPageDataType> = new Map();
38
39 private viewMap: Map<string, SolidViewDataType> = new Map();
40
41 private scenes: SolidScenaDataType[] = [];
42
43 private pages: SolidPageDataType[] = [];
44
45 private views: SolidViewDataType[] = [];
46
47 constructor() {
48 this.handleSelectView = this.handleSelectView.bind(this);
49
50 eventbus.on("onSelectViewInViewList", this.handleSelectView);
51 eventbus.on("onSelectViewInViewport", this.handleSelectView);
52 }
53
54 private handleSelectView(data: OnSelectViewEventData) {
55 const viewId = data.id;
56 const view = this.viewMap.get(viewId);
57 if (!isNil(view)) {
58 this.currentView = view;
59 }
60 }
61
62 public attach(model: SolidModelDataType): void {
63 this.model = model;
64 this.__clear();
65 this.__config(model);
66 }
67
68 private __clear() {
69 this.currentPage = undefined;
70 this.currentView = undefined;
71 this.sceneMap.clear();
72 this.pageMap.clear();
73 this.viewMap.clear();
74 this.scenes = [];
75 this.pages = [];
76 this.views = [];
77 }
78
79 private __config(model: SolidModelDataType) {
80 if (isNil(model)) {
81 return;
82 }
83 const scenes = model.scenas;
84 if (isNil(scenes)) {
85 return;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected