Merge branch 'misskey-develop' into merge/2025-03-24
# Conflicts: # .github/workflows/storybook.yml # package.json # packages/frontend/src/utility/autogen/settings-search-index.ts # pnpm-lock.yaml
This commit is contained in:
commit
7e7350eab5
65 changed files with 486 additions and 1651 deletions
File diff suppressed because it is too large
Load diff
43
packages/frontend/src/utility/settings-search-index.ts
Normal file
43
packages/frontend/src/utility/settings-search-index.ts
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
import { searchIndexes as generated } from 'search-index:settings';
|
||||
import type { GeneratedSearchIndexItem } from 'search-index:settings';
|
||||
|
||||
export type SearchIndexItem = {
|
||||
id: string;
|
||||
path?: string;
|
||||
label: string;
|
||||
keywords: string[];
|
||||
icon?: string;
|
||||
children?: SearchIndexItem[];
|
||||
};
|
||||
|
||||
const rootMods = new Map(generated.map(item => [item.id, item]));
|
||||
|
||||
function walk(item: GeneratedSearchIndexItem) {
|
||||
if (item.inlining) {
|
||||
for (const id of item.inlining) {
|
||||
const inline = rootMods.get(id);
|
||||
if (inline) {
|
||||
(item.children ??= []).push(inline);
|
||||
rootMods.delete(id);
|
||||
} else {
|
||||
console.log('[Settings Search Index] Failed to inline', id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (const child of item.children ?? []) {
|
||||
walk(child);
|
||||
}
|
||||
}
|
||||
|
||||
for (const item of generated) {
|
||||
walk(item);
|
||||
}
|
||||
|
||||
export const searchIndexes: SearchIndexItem[] = generated;
|
||||
|
||||
18
packages/frontend/src/utility/virtual.d.ts
vendored
Normal file
18
packages/frontend/src/utility/virtual.d.ts
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
declare module 'search-index:settings' {
|
||||
export type GeneratedSearchIndexItem = {
|
||||
id: string;
|
||||
path?: string;
|
||||
label: string;
|
||||
keywords: string[];
|
||||
icon?: string;
|
||||
inlining?: string[];
|
||||
children?: GeneratedSearchIndexItem[];
|
||||
};
|
||||
|
||||
export const searchIndexes: GeneratedSearchIndexItem[];
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue