From bb483452067c5f39dfd7d37ce503a7adbfe47da3 Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Fri, 11 Sep 2026 00:38:02 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E8=B5=84=E6=BA=90=E7=94=BB?= =?UTF-8?q?=E5=B8=83=E4=B8=8A=E7=9A=84=E5=88=86=E7=B1=BB=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - index.tsx:删掉画布侧 PlatformResourceFilterBar 的用法(「全部 / UI 交互 / 角色与对象 / 场景与环境 / 音频 / 文档 / 待归类」分类 chip 与画布标签 chip);@ 素材面板与参考图弹窗继续用同一个共享组件,共享组件本身不动。 - index.tsx:随筛选条一起摘掉只为它存在的画布筛选轴——resourceCanvasCategoryFilters / showResourceCategoryFilter / resourceCanvasActiveTags / resourceTagLibrary,并把 visibleResources 里「分类不等于 all 才过滤」「标签必须命中已选标签」两个此后恒真的条件删掉,画布可见资源只由搜索框收窄。 - index.tsx:移除只被筛选条用到的导入(PlatformResourceFilterBar、RESOURCE_REFERENCE_FILTERS、type ResourceReferenceFilter、assetTagsMatchSelection、buildGameCreationAppAssetTagLibrary)与 ResourceCanvasCategoryFilterBySortMode 类型及其默认值构造函数。 - styles.css:删除只服务画布筛选条的 .game-resource-category-filter 规则。 - 不动分区栏目:栏目大纲、栏目标题栏、categoryOrder、projectResourcesByCategory 与「资源总览」入口保持原样。 --- apps/ai-game-creator-shell/src/styles.css | 4 - .../src/view/project-development/index.tsx | 95 ++----------------- 2 files changed, 9 insertions(+), 90 deletions(-) diff --git a/apps/ai-game-creator-shell/src/styles.css b/apps/ai-game-creator-shell/src/styles.css index 68dd0c241..e0e6d2bea 100644 --- a/apps/ai-game-creator-shell/src/styles.css +++ b/apps/ai-game-creator-shell/src/styles.css @@ -6215,10 +6215,6 @@ iframe.preview-frame { font-size: 12px; } -.game-resource-category-filter { - margin: 8px 12px 0; -} - .game-resource-classification-dialog { width: min(480px, 100%); } diff --git a/apps/ai-game-creator-shell/src/view/project-development/index.tsx b/apps/ai-game-creator-shell/src/view/project-development/index.tsx index b6fde1e08..8967dd75c 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/index.tsx +++ b/apps/ai-game-creator-shell/src/view/project-development/index.tsx @@ -61,7 +61,6 @@ import { type WheelEvent as ReactWheelEvent, } from 'react'; -import { PlatformResourceFilterBar } from '../../../../../packages/shared/src/components/PlatformResourceFilterBar'; import type { GameCreationAppAgentGroup, GameCreationAppAssetManifestEntry, @@ -70,10 +69,6 @@ import type { GameIterationVersion, ProjectResourceCanvasLayoutMode, } from '../../../../../packages/shared/src/contracts/gameCreationApp'; -import { - assetTagsMatchSelection, - buildGameCreationAppAssetTagLibrary, -} from '../../../../../packages/shared/src/contracts/gameCreationAppAssetTagLibrary'; import type { CanvasLayer, QuickEditPanelState, @@ -88,9 +83,7 @@ import { } from '../../features/project-workspace/LocalGamePreviewFrame'; import { dispatchResourceReferenceInsert, - RESOURCE_REFERENCE_FILTERS, resourceReferenceCategoryLabel, - type ResourceReferenceFilter, } from '../../features/project-workspace/resourceReferences'; import { GameRunVersionPicker } from '../../features/resource-canvas/GameRunVersionPicker'; import { @@ -366,15 +359,6 @@ type ResourceCanvasViewportBySortMode = Record< ResourceSortMode, ResourceCanvasViewportByCategory >; -/** 功能分类筛选与画布视口一样按「按依赖 / 按类型」分别保存,不新造第二套状态。 */ -type ResourceCanvasCategoryFilterBySortMode = Record< - ResourceSortMode, - ResourceReferenceFilter ->; - -function defaultResourceCanvasCategoryFilters(): ResourceCanvasCategoryFilterBySortMode { - return { dependency: 'all', type: 'all' }; -} function defaultResourceCanvasViewports(): ResourceCanvasViewportBySortMode { const byCategory = (): ResourceCanvasViewportByCategory => ({ @@ -1267,17 +1251,6 @@ export default function ProjectDevelopmentView({ ); const [sortMode, setSortMode] = useState('dependency'); const [searchText, setSearchText] = useState(''); - const [resourceCanvasCategoryFilters, setResourceCanvasCategoryFilters] = - useState( - defaultResourceCanvasCategoryFilters, - ); - /** - * 画布标签筛选:与「按依赖 / 按类型」无关,是画布级的收窄条件; - * 与 `@` 面板、参考图弹窗的筛选状态互相独立。 - */ - const [resourceCanvasActiveTags, setResourceCanvasActiveTags] = useState< - string[] - >([]); const [resourceCanvasViewports, setResourceCanvasViewports] = useState(defaultResourceCanvasViewports); const resourceCanvasViewportTargetsRef = useRef( @@ -1963,45 +1936,23 @@ export default function ProjectDevelopmentView({ ); }, [resources, selectedResourceId]); const normalizedSearch = searchText.trim().toLowerCase(); - const resourceCategoryFilter = resourceCanvasCategoryFilters[sortMode]; - /** 标签库是从 manifest `assets[].tags` 派生的数据,manifest 一改就重算。 */ - const resourceTagLibrary = useMemo( - () => buildGameCreationAppAssetTagLibrary(manifest.assets), - [manifest.assets], - ); + /** + * 画布可见资源只由搜索框收窄:功能分类筛选条与画布标签筛选已按用户要求移除, + * 分区栏目本身(`categoryOrder` / 栏目大纲 / 栏目标题栏)不受影响。 + */ const visibleResources = useMemo( () => - canvasResources.filter((resource) => { - if ( - resourceCategoryFilter !== 'all' && - projectResourceAssetCategory(resource) !== resourceCategoryFilter - ) { - return false; - } - // 标签筛选与功能分类筛选共存且可叠加:分类过了还得命中全部已选标签。 - if ( - !assetTagsMatchSelection( - resource.assetTags ?? [], - resourceCanvasActiveTags, - ) - ) { - return false; - } - return normalizedSearch + canvasResources.filter((resource) => + normalizedSearch ? [ resource.label, resource.path, resource.mediaType, resource.taskTitle ?? '', ].some((value) => value.toLowerCase().includes(normalizedSearch)) - : true; - }), - [ - canvasResources, - normalizedSearch, - resourceCanvasActiveTags, - resourceCategoryFilter, - ], + : true, + ), + [canvasResources, normalizedSearch], ); const visibleResourceIds = useMemo( () => new Set(visibleResources.map((resource) => resource.id)), @@ -4329,18 +4280,6 @@ export default function ProjectDevelopmentView({ setSortMode(nextMode); } - function showResourceCategoryFilter(nextFilter: ResourceReferenceFilter) { - if (nextFilter === resourceCategoryFilter) { - return; - } - advanceFocusGeneration(); - setHiddenCommittedResourceId(null); - setResourceCanvasCategoryFilters((current) => ({ - ...current, - [sortMode]: nextFilter, - })); - } - const openUiDesignEditor = useCallback( async (resource: ProjectResource) => { const prototypeAssetId = resource.manifestAssetId; @@ -5823,22 +5762,6 @@ export default function ProjectDevelopmentView({ }} /> - { - setResourceCanvasActiveTags((current) => - current.includes(tag) - ? current.filter((item) => item !== tag) - : [...current, tag], - ); - }} - className="game-resource-category-filter" - /> {resourceWorkbenchNotice ? (
{resourceWorkbenchNotice}