UNPKG

@logicflow/vue-node-registry

Version:

LogicFlow Vue Component Node Registry

47 lines 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.vueNodesMap = void 0; exports.getVueNodeConfig = getVueNodeConfig; exports.register = register; var view_1 = require("./view"); var model_1 = require("./model"); // Per-instance map: entries are eligible for garbage collection once the associated GraphModel instance is no longer referenced var vueNodesMaps = new WeakMap(); /** * @deprecated Use {@link getVueNodeConfig} instead for multi-instance support. * This global map is still populated for backward compatibility but does NOT * isolate registrations across different LogicFlow instances. */ exports.vueNodesMap = Object.create(null); /** * Retrieve the Vue node configuration scoped to a specific LogicFlow instance. */ function getVueNodeConfig(type, graphModel) { var _a; if (typeof graphModel !== 'object' || graphModel === null) { return undefined; } return (_a = vueNodesMaps.get(graphModel)) === null || _a === void 0 ? void 0 : _a.get(type); } function register(config, lf) { var type = config.type, component = config.component, effect = config.effect, CustomNodeView = config.view, CustomNodeModel = config.model; if (!type) { throw new Error('You should specify type in config'); } var entry = { component: component, effect: effect }; // Scope to this LogicFlow instance var map = vueNodesMaps.get(lf.graphModel); if (!map) { map = new Map(); vueNodesMaps.set(lf.graphModel, map); } map.set(type, entry); // Also populate global map for backward compatibility exports.vueNodesMap[type] = entry; lf.register({ type: type, view: CustomNodeView || view_1.VueNodeView, model: CustomNodeModel || model_1.VueNodeModel, }); } //# sourceMappingURL=registry.js.map