UNPKG

@finos/legend-extension-dsl-diagram

Version:
94 lines 3.71 kB
/** * Copyright (c) 2020-present, Goldman Sachs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { observe_Abstract_PackageableElement, observe_PackageableElementReference, observe_PropertyReference, skipObserved, } from '@finos/legend-graph'; import { computed, makeObservable, observable, override } from 'mobx'; export const observe_PositionedRectangle = skipObserved((metamodel) => makeObservable(metamodel, { _dummyObservable: observable, })); export const observe_ClassViewReference = skipObserved((metamodel) => { makeObservable(metamodel, { value: observable, }); observe_PackageableElementReference(metamodel.ownerReference); return metamodel; }); export const observe_ClassView = skipObserved((metamodel) => { observe_PositionedRectangle(metamodel); makeObservable(metamodel, { id: observable, hideProperties: observable, hideTaggedValues: observable, hideStereotypes: observable, hashCode: computed, }); observe_PackageableElementReference(metamodel.class); return metamodel; }); export const observe_RelationShipEdgeView = skipObserved((metamodel) => { observe_ClassViewReference(metamodel.classView); return metamodel; }); export const observe_RelationshipView = skipObserved((metamodel) => { makeObservable(metamodel, { // NOTE: to optimize performance for diagram, we have made classview's position and rectangle non-observable // if we want to further optimize, perhaps we can also remove observability from path path: observable, pathForSerialization: computed, }); observe_RelationShipEdgeView(metamodel.from); observe_RelationShipEdgeView(metamodel.to); return metamodel; }); export const observe_GeneralizationView = skipObserved((metamodel) => { observe_RelationshipView(metamodel); makeObservable(metamodel, { hashCode: computed, }); return metamodel; }); export const observe_AssociationView = skipObserved((metamodel) => { observe_RelationshipView(metamodel); makeObservable(metamodel, { hashCode: computed, }); observe_PropertyReference(metamodel.property); observe_PackageableElementReference(metamodel.association); return metamodel; }); export const observe_PropertyView = skipObserved((metamodel) => { observe_RelationshipView(metamodel); makeObservable(metamodel, { hashCode: computed, }); observe_PropertyReference(metamodel.property); return metamodel; }); export const observe_Diagram = skipObserved((metamodel) => { observe_Abstract_PackageableElement(metamodel); makeObservable(metamodel, { classViews: observable, associationViews: observable, generalizationViews: observable, propertyViews: observable, _elementHashCode: override, }); metamodel.classViews.forEach(observe_ClassView); metamodel.associationViews.forEach(observe_AssociationView); metamodel.generalizationViews.forEach(observe_GeneralizationView); metamodel.propertyViews.forEach(observe_PropertyView); return metamodel; }); //# sourceMappingURL=DSL_Diagram_ObserverHelper.js.map