"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeLabelDropItemFactory = makeLabelDropItemFactory;
const PM_1 = require("../../Label/PM");
const UC_1 = require("../../Label/UC");
const Entities_1 = require("../Entities");
const PM_2 = require("../PM");
const UseCases_1 = require("../UseCases");
function makeLabelDropItemFactory(appObjects) {
    return function labelDropItemFactory(id) {
        const ao = appObjects.getOrCreate(id);
        const entity = new Entities_1.LabelDropItemEntity(ao);
        // UCs
        new UC_1.SetCustomLabelUC(ao);
        new UC_1.ClearCustomLabelUC(ao);
        new UseCases_1.InitializeLabelDropLabelHook(ao);
        // PMs
        (0, PM_1.makeLabelPM)(ao);
        (0, PM_2.makeLabelDropTargetsPM)(ao);
        entity.labelEntity.customLabelValidator = UseCases_1.labelDropLabelValidator;
        return entity;
    };
}
//# sourceMappingURL=labelDropItemFactory.js.map