"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Workspace = void 0;
var hooks_1 = require("../hooks");
var context_1 = require("../context");
var vue_demi_1 = require("vue-demi");
exports.Workspace = (0, vue_demi_1.defineComponent)({
    name: 'Workspace',
    props: {
        id: String,
        title: String,
        description: String,
    },
    setup: function (props, _a) {
        var slots = _a.slots;
        var oldId = (0, vue_demi_1.ref)();
        var designerRef = (0, hooks_1.useDesigner)();
        // memo [id, designer]
        var workspace = (0, vue_demi_1.computed)(function () {
            var designer = (0, vue_demi_1.unref)(designerRef);
            if (!designer)
                return;
            if (oldId.value && oldId.value !== props.id) {
                var old = designer.workbench.findWorkspaceById(oldId.value);
                if (old)
                    old.viewport.detachEvents();
            }
            var workspace = {
                id: props.id || 'index',
                title: props.title,
                description: props.description,
            };
            designer.workbench.ensureWorkspace(workspace);
            oldId.value = workspace.id;
            return workspace;
        });
        (0, vue_demi_1.provide)(context_1.WorkspaceSymbol, workspace);
        return function () {
            var _a;
            return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots);
        };
    },
});
//# sourceMappingURL=Workspace.jsx.map