mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-15 14:00:35 +00:00
* feat: console the expression error * feat: 相对路径生成动态化 * chore: 暂时恢复一些变化,用于更新测试 * chore: 修改错误的 schema * fix: 修复错误的 schema & 更新数据快照
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { IContextData } from '../types';
|
|
|
|
function relativePath(from: string[], to: string[]): string[] {
|
|
const length = Math.min(from.length, to.length);
|
|
let samePartsLength = length;
|
|
for (let i = 0; i < length; i++) {
|
|
if (from[i] !== to[i]) {
|
|
samePartsLength = i;
|
|
break;
|
|
}
|
|
}
|
|
if (samePartsLength === 0) {
|
|
return to;
|
|
}
|
|
let outputParts = [];
|
|
for (let i = samePartsLength; i < from.length; i++) {
|
|
outputParts.push('..');
|
|
}
|
|
outputParts = [...outputParts, ...to.slice(samePartsLength)];
|
|
if (outputParts[0] !== '..') {
|
|
outputParts.unshift('.');
|
|
}
|
|
return outputParts;
|
|
}
|
|
|
|
export function getSlotRelativePath(options: {
|
|
contextData: IContextData;
|
|
from: string;
|
|
to: string;
|
|
}) {
|
|
const { contextData, from, to } = options;
|
|
const isSingleComponent = contextData?.extraContextData?.projectRemark?.isSingleComponent;
|
|
const template = contextData?.extraContextData?.template;
|
|
let toPath = template.slots[to].path;
|
|
toPath = [...toPath, template.slots[to].fileName!];
|
|
let fromPath = template.slots[from].path;
|
|
if (!isSingleComponent && ['components', 'pages'].indexOf(from) !== -1) {
|
|
fromPath = [...fromPath, 'pageName'];
|
|
}
|
|
return relativePath(fromPath, toPath).join('/');
|
|
} |