@rxflow/base
Version:
BaseFlow - 核心 Flow 组件库
89 lines (87 loc) • 3.09 kB
JavaScript
/*
* @author: yanxianliang
* @date: 2025-05-17 22:24
* @desc: dimension 计算 utils
*
* Copyright (c) 2025 by yanxianliang, All Rights Reserved.
*/
/**
* 计算节点的宽度
* @param node
* @param nodeTypes
* @param theme
* @param nodeLookup
*/
export function getNodeWidth(node, nodeTypes, theme, nodeLookup) {
// 优先级,lookup > node measured 配置>size>calc
if (nodeLookup && nodeLookup.has(node.id)) {
var _lookup$measured;
var lookup = nodeLookup.get(node.id);
if (typeof (lookup === null || lookup === void 0 || (_lookup$measured = lookup.measured) === null || _lookup$measured === void 0 ? void 0 : _lookup$measured.width) === 'number') {
var _lookup$measured2;
return lookup === null || lookup === void 0 || (_lookup$measured2 = lookup.measured) === null || _lookup$measured2 === void 0 ? void 0 : _lookup$measured2.width; // 实际的高度
}
}
var type = node.type,
measured = node.measured,
width = node.width;
if (typeof (measured === null || measured === void 0 ? void 0 : measured.width) === 'number') {
return measured.width;
}
if (typeof width === 'number') {
return width;
}
if (!type || !(nodeTypes !== null && nodeTypes !== void 0 && nodeTypes[type]) || !(nodeTypes !== null && nodeTypes !== void 0 && nodeTypes[type].defaultSize)) {
return 1;
}
var ctr = nodeTypes[type];
var defaults = ctr.defaultSize;
if (defaults.width) {
if (typeof defaults.width === 'number') {
return defaults.width;
}
return defaults.width(node, theme);
} else {
return 1;
}
}
/**
* 计算节点的高度
* @param node
* @param nodeTypes
* @param theme
* @param nodeLookup
*/
export function getNodeHeight(node, nodeTypes, theme, nodeLookup) {
// 优先级,lookup > node measured 配置>size>calc
if (nodeLookup && nodeLookup.has(node.id)) {
var _lookup$measured3;
var lookup = nodeLookup.get(node.id);
if (typeof (lookup === null || lookup === void 0 || (_lookup$measured3 = lookup.measured) === null || _lookup$measured3 === void 0 ? void 0 : _lookup$measured3.height) === 'number') {
var _lookup$measured4;
return lookup === null || lookup === void 0 || (_lookup$measured4 = lookup.measured) === null || _lookup$measured4 === void 0 ? void 0 : _lookup$measured4.height; // 实际的高度
}
}
var type = node.type,
measured = node.measured,
height = node.height;
if (typeof (measured === null || measured === void 0 ? void 0 : measured.height) === 'number') {
return measured.height;
}
if (typeof height === 'number') {
return height;
}
if (!type || !(nodeTypes !== null && nodeTypes !== void 0 && nodeTypes[type]) || !(nodeTypes !== null && nodeTypes !== void 0 && nodeTypes[type].defaultSize)) {
return 1;
}
var ctr = nodeTypes[type];
var defaults = ctr === null || ctr === void 0 ? void 0 : ctr.defaultSize;
if (defaults.height) {
if (typeof defaults.height === 'number') {
return defaults.height;
}
return defaults.height(node, theme);
} else {
return 1;
}
}