import { makeLabelPM } from "../../Label/PM";
import { ClearCustomLabelUC, SetCustomLabelUC } from "../../Label/UC";
import { LabelDropItemEntity } from "../Entities";
import { makeLabelDropTargetsPM } from "../PM";
import { InitializeLabelDropLabelHook, labelDropLabelValidator, } from "../UseCases";
export function makeLabelDropItemFactory(appObjects) {
    return function labelDropItemFactory(id) {
        const ao = appObjects.getOrCreate(id);
        const entity = new LabelDropItemEntity(ao);
        // UCs
        new SetCustomLabelUC(ao);
        new ClearCustomLabelUC(ao);
        new InitializeLabelDropLabelHook(ao);
        // PMs
        makeLabelPM(ao);
        makeLabelDropTargetsPM(ao);
        entity.labelEntity.customLabelValidator = labelDropLabelValidator;
        return entity;
    };
}
//# sourceMappingURL=labelDropItemFactory.js.map