Major changes: - New frontend (platform/web/): Vite + React 18 + TypeScript + Tailwind - 4-module navigation: 数据送标 / 模型管理 / 车队管理 / 系统管理 - Data catalog with charts (DMS/ADAS/Lane 3-tab view) - Quality review workflow (标注质检): Good/Fine/Bad scoring with auto-advance - Audit enhancements: batch operations, rejection categories, Feishu notifications - Operation audit log (操作日志) - World model simulation studio (仿真工坊) - Dataset version management with snapshots and diff - ADAS 7-class dataset integration (138K images organized + compressed) - User management with Feishu integration and pagination - CRUD/search/filter on all pages, card layout redesign - PIL-optimized image overlay rendering - Auto-snapshot on build, in_review workflow stage - Removed embedded algorithm code (now in workspace)
56 lines
1.3 KiB
JavaScript
56 lines
1.3 KiB
JavaScript
import React from "react";
|
|
import invariant from "tiny-invariant";
|
|
|
|
import RouterContext from "./RouterContext.js";
|
|
import HistoryContext from "./HistoryContext.js";
|
|
import matchPath from "./matchPath.js";
|
|
|
|
const useContext = React.useContext;
|
|
|
|
export function useHistory() {
|
|
if (__DEV__) {
|
|
invariant(
|
|
typeof useContext === "function",
|
|
"You must use React >= 16.8 in order to use useHistory()"
|
|
);
|
|
}
|
|
|
|
return useContext(HistoryContext);
|
|
}
|
|
|
|
export function useLocation() {
|
|
if (__DEV__) {
|
|
invariant(
|
|
typeof useContext === "function",
|
|
"You must use React >= 16.8 in order to use useLocation()"
|
|
);
|
|
}
|
|
|
|
return useContext(RouterContext).location;
|
|
}
|
|
|
|
export function useParams() {
|
|
if (__DEV__) {
|
|
invariant(
|
|
typeof useContext === "function",
|
|
"You must use React >= 16.8 in order to use useParams()"
|
|
);
|
|
}
|
|
|
|
const match = useContext(RouterContext).match;
|
|
return match ? match.params : {};
|
|
}
|
|
|
|
export function useRouteMatch(path) {
|
|
if (__DEV__) {
|
|
invariant(
|
|
typeof useContext === "function",
|
|
"You must use React >= 16.8 in order to use useRouteMatch()"
|
|
);
|
|
}
|
|
|
|
const location = useLocation();
|
|
const match = useContext(RouterContext).match;
|
|
return path ? matchPath(location.pathname, path) : match;
|
|
}
|