import uuidv1 from 'uuidv1';
// retrieve a HTML string for given SVG icon name and size in pixels
export function svg(name, size) {
return ``;
}
// transform /path/to/file.ext to file.ext
export function basename(path = '') {
return path ? path.replace(/^.*\//, '') : '';
}
// transform /path/to/file.ext to .ext
export function extname(path = '') {
const [_, ext] = /.+(\.[^.]+)$/.exec(path) || [];
return ext || '';
}
// test whether a variable is an object
export function isObject(obj) {
return Object.prototype.toString.call(obj) === '[object Object]';
}
// returns whether a dark theme is enabled
export function isDarkTheme() {
return document.documentElement.classList.contains('theme-arc-green');
}
export function matterTree(data) {
for (let i = 0; i < data.length; i++) {
data[i].label = data[i].name;
data[i].filePath = data[i].path;
data[i].isEdit = true;
if (!data[i].children.length) data[i].isLeaf = true;
if (data[i].children && data[i].children.length > 0) {
// children若不为空数组,则继续 递归调用 本方法
matterTree(data[i].children);
}
}
return data;
}
export function disposeTreeName(data, target) {
for (let i = 0; i < data.length; i++) {
data[i].filePath = `${target}/${data[i].name}`;
data[i].id = uuidv1().replaceAll('-', '');
if (data[i].children && data[i].children.length > 0) {
// children若不为空数组,则继续 递归调用 本方法
matterTree(data[i].children);
}
}
return data;
}
export function RecurveAddNode(treeRootData, treeD, FilePath) {
treeRootData.forEach((item) => {
if (item.filePath === FilePath) {
return item.children.push(treeD);
}
if (item.children?.length) {
RecurveAddNode(item.children, treeD, FilePath);
}
});
return treeRootData;
}
// 递归单个循环操作 判断是否新增
export function RecurveQuery(currentData, filePath) {
currentData.forEach((item, index) => {
if (item.filePath === filePath && item.isLeaf) {
currentData[index].operation = 'delete';
} else if (item.children?.length > 0) {
RecurveQuery(item.children, filePath);
}
});
return currentData;
}
// 递归 对新增的数据进行删除
export function RecurveQueryDelete(data, filePath) {
data.forEach((item, index) => {
if (item.filePath === filePath && item.isLeaf) {
data.splice(index, 1);
} else if (item.children?.length) {
RecurveQueryDelete(item.children, filePath);
}
});
return data;
}
// 循环插入改变的数据
export function RecurveUpdateValue(currentData, fileInfoParams, base64Content) {
currentData.forEach((item, index) => {
if (item.filePath === fileInfoParams.filePath) {
currentData[index].oldContent = base64Content;
currentData[index].content = base64Content;
} else if (item.children?.length > 0) {
RecurveQuery(item.children, fileInfoParams.filePath);
}
});
return currentData;
}
const flattenTree = (data) => {
return data.reduce((arr, currentValue) => {
if (currentValue.children && currentValue.children.length > 0) {
return arr.concat(flattenTree(currentValue.children))
} else {
return arr.concat(currentValue)
}
}, [])
}
export const uniqueArray = (array1, array2) => {
return array1
.concat(array2)
.reduce((prev, cur) => {
const duplicate = prev.filter(x => x.name === cur.name)
if (duplicate.length) {
return prev
} else {
prev.push(cur)
return prev
}
}, [])
}
export const isBase64 = (str) => {
if(!str) return false;
if (/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/.test(str)) {
try {
return window.btoa(window.atob(str)) == str;
} catch (err) {
return false;
}
}else{
return false
}
}