Update from Vibe Studio

This commit is contained in:
Vibe Studio
2026-01-16 01:51:36 +00:00
parent a4605e311a
commit 58905d02c2
28599 changed files with 2179074 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
import type { BreadcrumbProps } from 'antd';
import type H from 'history';
import type { ProLayoutProps } from '../ProLayout';
import type { ProSettings } from '../defaultSettings';
import type { MenuDataItem, MessageDescriptor, WithFalse } from '../typing';
export declare const getVersion: () => string;
export type BreadcrumbProLayoutProps = {
breadcrumbList?: {
title: string;
href: string;
}[];
home?: string;
location?: H.Location | {
pathname?: string;
};
menu?: ProSettings['menu'];
breadcrumbMap?: Map<string, MenuDataItem>;
formatMessage?: (message: MessageDescriptor) => string;
breadcrumbRender?: WithFalse<(routers: BreadcrumbProps['items']) => BreadcrumbProps['items']>;
itemRender?: BreadcrumbProps['itemRender'];
};
export declare const getBreadcrumb: (breadcrumbMap: Map<string, MenuDataItem>, url: string) => MenuDataItem;
export declare const getBreadcrumbFromProps: (props: BreadcrumbProLayoutProps) => {
location: BreadcrumbProLayoutProps['location'];
breadcrumbMap: BreadcrumbProLayoutProps['breadcrumbMap'];
};
export type BreadcrumbListReturn = Pick<BreadcrumbProps, Extract<keyof BreadcrumbProps, 'items' | 'itemRender'>>;
/** 将参数转化为面包屑 Convert parameters into breadcrumbs */
export declare const genBreadcrumbProps: (props: BreadcrumbProLayoutProps) => BreadcrumbProps['items'];
export declare const getBreadcrumbProps: (props: Omit<BreadcrumbProLayoutProps, "breadcrumbRender"> & {
breadcrumbRender?: WithFalse<(routers: BreadcrumbProps['items']) => BreadcrumbProps['items']> | undefined;
}, layoutPros: ProLayoutProps) => BreadcrumbListReturn;

View File

@@ -0,0 +1,161 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getVersion = exports.getBreadcrumbProps = exports.getBreadcrumbFromProps = exports.getBreadcrumb = exports.genBreadcrumbProps = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _proUtils = require("@ant-design/pro-utils");
var _antd = require("antd");
var _pathToRegexp = require("path-to-regexp");
var _pathTools = require("./pathTools");
var _jsxRuntime = require("react/jsx-runtime");
var getVersion = exports.getVersion = function getVersion() {
var _process;
if (typeof process === 'undefined') return _antd.version;
return ((_process = process) === null || _process === void 0 || (_process = _process.env) === null || _process === void 0 ? void 0 : _process.ANTD_VERSION) || _antd.version;
};
// 渲染 Breadcrumb 子节点
// Render the Breadcrumb child node
var defaultItemRender = function defaultItemRender(route, _, routes) {
var _ref = route,
breadcrumbName = _ref.breadcrumbName,
title = _ref.title,
path = _ref.path;
var last = routes.findIndex(function (i) {
return (
// @ts-ignore
i.linkPath === route.path
);
}) === routes.length - 1;
return last ? /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
children: title || breadcrumbName
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
onClick: path ? function () {
return location.href = path;
} : undefined,
children: title || breadcrumbName
});
};
var renderItemLocal = function renderItemLocal(item, props) {
var formatMessage = props.formatMessage,
menu = props.menu;
if (item.locale && formatMessage && (menu === null || menu === void 0 ? void 0 : menu.locale) !== false) {
return formatMessage({
id: item.locale,
defaultMessage: item.name
});
}
return item.name;
};
var getBreadcrumb = exports.getBreadcrumb = function getBreadcrumb(breadcrumbMap, url) {
var breadcrumbItem = breadcrumbMap.get(url);
if (!breadcrumbItem) {
// Find the first matching path in the order defined by route config
// 按照 route config 定义的顺序找到第一个匹配的路径
var keys = Array.from(breadcrumbMap.keys()) || [];
var targetPath = keys.find(function (path) {
try {
if (path !== null && path !== void 0 && path.startsWith('http')) return false;
return (0, _pathToRegexp.match)(path.replace('?', ''))(url);
} catch (error) {
console.log('path', path, error);
return false;
}
}
// remove ? ,不然会重复
);
if (targetPath) breadcrumbItem = breadcrumbMap.get(targetPath);
}
return breadcrumbItem || {
path: ''
};
};
var getBreadcrumbFromProps = exports.getBreadcrumbFromProps = function getBreadcrumbFromProps(props) {
var location = props.location,
breadcrumbMap = props.breadcrumbMap;
return {
location: location,
breadcrumbMap: breadcrumbMap
};
};
var conversionFromLocation = function conversionFromLocation(routerLocation, breadcrumbMap, props) {
// Convertor the url to an array
var pathSnippets = (0, _pathTools.urlToList)(routerLocation === null || routerLocation === void 0 ? void 0 : routerLocation.pathname);
// Loop data mosaic routing
var extraBreadcrumbItems = pathSnippets.map(function (url) {
var currentBreadcrumb = getBreadcrumb(breadcrumbMap, url);
var name = renderItemLocal(currentBreadcrumb, props);
var hideInBreadcrumb = currentBreadcrumb.hideInBreadcrumb;
return name && !hideInBreadcrumb ? {
linkPath: url,
breadcrumbName: name,
title: name,
component: currentBreadcrumb.component
} : {
linkPath: '',
breadcrumbName: '',
title: ''
};
}).filter(function (item) {
return item && item.linkPath;
});
return extraBreadcrumbItems;
};
/** 将参数转化为面包屑 Convert parameters into breadcrumbs */
var genBreadcrumbProps = exports.genBreadcrumbProps = function genBreadcrumbProps(props) {
var _getBreadcrumbFromPro = getBreadcrumbFromProps(props),
location = _getBreadcrumbFromPro.location,
breadcrumbMap = _getBreadcrumbFromPro.breadcrumbMap;
// 根据 location 生成 面包屑
// Generate breadcrumbs based on location
if (location && location.pathname && breadcrumbMap) {
return conversionFromLocation(location, breadcrumbMap, props);
}
return [];
};
// 声明一个导出函数接收两个参数BreadcrumbProps和ProLayoutProps返回一个BreadcrumbListReturn类型的对象
var getBreadcrumbProps = exports.getBreadcrumbProps = function getBreadcrumbProps(props, layoutPros // ProLayoutProps类型的layoutPros
) {
// 解构赋值获取props中的breadcrumbRender和props中的itemRender如果props中没有itemRender则使用默认的defaultItemRender函数
var breadcrumbRender = props.breadcrumbRender,
propsItemRender = props.itemRender;
// 解构赋值获取layoutPros.breadcrumbProps.minLenght的值如果没有设置则默认为2
var _ref2 = layoutPros.breadcrumbProps || {},
_ref2$minLength = _ref2.minLength,
minLength = _ref2$minLength === void 0 ? 2 : _ref2$minLength;
// 生成面包屑的路由数组,该数组中包含菜单项和面包屑项
var routesArray = genBreadcrumbProps(props);
// 如果props中有itemRender则使用props中的itemRender否则使用默认函数defaultItemRender
var itemRender = function itemRender(item) {
var renderFunction = propsItemRender || defaultItemRender;
for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
rest[_key - 1] = arguments[_key];
}
return renderFunction === null || renderFunction === void 0 ? void 0 : renderFunction.apply(void 0, [(0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, {
// 如果item.linkPath存在则使用item.linkPath否则使用item.path
// @ts-ignore
path: item.linkPath || item.path
})].concat(rest));
};
var items = routesArray;
// 如果面包屑渲染函数breadcrumbRender存在则使用其渲染数组items
if (breadcrumbRender) {
items = breadcrumbRender(items || []) || undefined;
}
// 如果items渲染后的数组的长度小于minLength或者breadcrumbRender为false则items为undefined
if (items && items.length < minLength || breadcrumbRender === false) {
items = undefined;
}
// 如果当前 ant design 包的版本大于等于5.3.0,则返回一个对象{items,itemRender},否则返回一个对象{routes:item,itemRender}
return (0, _proUtils.compareVersions)(getVersion(), '5.3.0') > -1 ? {
items: items,
itemRender: itemRender
} : {
routes: items,
itemRender: itemRender
};
};

View File

@@ -0,0 +1,9 @@
import type { MenuDataItem, MessageDescriptor, Route } from '../typing';
declare const getMenuData: (routes: Readonly<Route[]>, menu?: {
locale?: boolean;
}, formatMessage?: ((message: MessageDescriptor) => string) | undefined, menuDataRender?: ((menuData: MenuDataItem[]) => MenuDataItem[]) | undefined) => {
breadcrumb: Record<string, MenuDataItem>;
breadcrumbMap: Map<string, MenuDataItem>;
menuData: MenuDataItem[];
};
export { getMenuData };

View File

@@ -0,0 +1,33 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getMenuData = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _routeUtils = require("@umijs/route-utils");
function fromEntries(iterable) {
return (0, _toConsumableArray2.default)(iterable).reduce(function (obj, _ref) {
var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
key = _ref2[0],
val = _ref2[1];
// eslint-disable-next-line no-param-reassign
obj[key] = val;
return obj;
}, {});
}
var getMenuData = exports.getMenuData = function getMenuData(routes, menu, formatMessage, menuDataRender) {
var _transformRoute = (0, _routeUtils.transformRoute)(routes, (menu === null || menu === void 0 ? void 0 : menu.locale) || false, formatMessage, true),
menuData = _transformRoute.menuData,
breadcrumb = _transformRoute.breadcrumb;
if (!menuDataRender) {
return {
breadcrumb: fromEntries(breadcrumb),
breadcrumbMap: breadcrumb,
menuData: menuData
};
}
return getMenuData(menuDataRender(menuData), menu, formatMessage, undefined);
};

View File

@@ -0,0 +1 @@
export declare function urlToList(url?: string): string[];

View File

@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.urlToList = urlToList;
// /userInfo/2144/id => ['/userInfo','/userInfo/2144,'/userInfo/2144/id']
function urlToList(url) {
if (!url || url === '/') {
return ['/'];
}
var urlList = url.split('/').filter(function (i) {
return i;
});
return urlList.map(function (urlItem, index) {
return "/".concat(urlList.slice(0, index + 1).join('/'));
});
}

View File

@@ -0,0 +1,3 @@
import type { ProSettings } from '../defaultSettings';
declare const useCurrentMenuLayoutProps: (currentMenu: ProSettings) => {};
export { useCurrentMenuLayoutProps };

View File

@@ -0,0 +1,30 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useCurrentMenuLayoutProps = void 0;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _proUtils = require("@ant-design/pro-utils");
var _react = require("react");
var useCurrentMenuLayoutProps = exports.useCurrentMenuLayoutProps = function useCurrentMenuLayoutProps(currentMenu) {
var _useState = (0, _react.useState)({}),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
currentMenuLayoutProps = _useState2[0],
setCurrentMenuLayoutProps = _useState2[1];
(0, _react.useEffect)(function () {
setCurrentMenuLayoutProps((0, _proUtils.omitUndefined)({
// 有时候会变成对象,是原来的方式
layout: (0, _typeof2.default)(currentMenu.layout) !== 'object' ? currentMenu.layout : undefined,
navTheme: currentMenu.navTheme,
menuRender: currentMenu.menuRender,
footerRender: currentMenu.footerRender,
menuHeaderRender: currentMenu.menuHeaderRender,
headerRender: currentMenu.headerRender,
fixSiderbar: currentMenu.fixSiderbar
}));
}, [currentMenu.layout, currentMenu.navTheme, currentMenu.menuRender, currentMenu.footerRender, currentMenu.menuHeaderRender, currentMenu.headerRender, currentMenu.fixSiderbar]);
return currentMenuLayoutProps;
};

View File

@@ -0,0 +1,9 @@
import type { MenuDataItem } from '../typing';
export declare const getOpenKeysFromMenuData: (menuData?: MenuDataItem[]) => string[];
/**
* Daybreak-> #1890ff
*
* @param val
*/
export declare function genStringToTheme(val?: string): string;
export declare function clearMenuItem(menusData: MenuDataItem[]): MenuDataItem[];

68
node_modules/@ant-design/pro-layout/lib/utils/utils.js generated vendored Normal file
View File

@@ -0,0 +1,68 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.clearMenuItem = clearMenuItem;
exports.genStringToTheme = genStringToTheme;
exports.getOpenKeysFromMenuData = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var getOpenKeysFromMenuData = exports.getOpenKeysFromMenuData = function getOpenKeysFromMenuData(menuData) {
return (menuData || []).reduce(function (pre, item) {
if (item.key) {
pre.push(item.key);
}
if (item.children || item.routes) {
var newArray = pre.concat(getOpenKeysFromMenuData(item.children || item.routes) || []);
return newArray;
}
return pre;
}, []);
};
var themeConfig = {
techBlue: '#1677FF',
daybreak: '#1890ff',
dust: '#F5222D',
volcano: '#FA541C',
sunset: '#FAAD14',
cyan: '#13C2C2',
green: '#52C41A',
geekblue: '#2F54EB',
purple: '#722ED1'
};
/**
* Daybreak-> #1890ff
*
* @param val
*/
function genStringToTheme(val) {
return val && themeConfig[val] ? themeConfig[val] : val || '';
}
function clearMenuItem(menusData) {
return menusData.map(function (item) {
var children = item.children || [];
var finalItem = (0, _objectSpread2.default)({}, item);
if (!finalItem.children && finalItem.routes) {
finalItem.children = finalItem.routes;
}
if (!finalItem.name || finalItem.hideInMenu) {
return null;
}
if (finalItem && finalItem !== null && finalItem !== void 0 && finalItem.children) {
if (!finalItem.hideChildrenInMenu && children.some(function (child) {
return child && child.name && !child.hideInMenu;
})) {
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, {
children: clearMenuItem(children)
});
}
// children 为空就直接删掉
delete finalItem.children;
}
delete finalItem.routes;
return finalItem;
}).filter(function (item) {
return item;
});
}