/**
 * 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 { observable, makeObservable, action, flow } from 'mobx';
import { getMappingElementLabel, } from './MappingEditorState.js';
import { LambdaEditorState } from '@finos/legend-query-builder';
import { MappingEditorTabState } from './MappingTabManagerState.js';
export class MappingElementState extends MappingEditorTabState {
    editorStore;
    mappingElement;
    constructor(editorStore, mappingElement) {
        super();
        makeObservable(this, {
            mappingElement: observable,
        });
        this.editorStore = editorStore;
        this.mappingElement = mappingElement;
    }
    get label() {
        return getMappingElementLabel(this.mappingElement, this.editorStore).value;
    }
}
export class SetImplementationState extends MappingElementState {
}
export class InstanceSetImplementationState extends SetImplementationState {
    propertyMappingStates = [];
    selectedType;
    constructor(editorStore, setImplementation) {
        super(editorStore, setImplementation);
        makeObservable(this, {
            propertyMappingStates: observable,
            selectedType: observable,
            setSelectedType: action,
            decorate: action,
            convertPropertyMappingTransformObjects: flow,
        });
    }
    setSelectedType(type) {
        this.selectedType = type === this.selectedType ? undefined : type;
    }
}
export class PropertyMappingState extends LambdaEditorState {
    instanceSetImplementationState;
    propertyMapping;
    constructor(instanceSetImplementationState, propertyMapping, lambdaString, lambdaPrefix) {
        super(lambdaString, lambdaPrefix);
        makeObservable(this, {
            propertyMapping: observable,
        });
        this.instanceSetImplementationState = instanceSetImplementationState;
        this.propertyMapping = propertyMapping;
    }
}
//# sourceMappingURL=MappingElementState.js.map