mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-09-14 13:36:36 +00:00
fix: update search flow - first tool search
This commit is contained in:
@@ -364,7 +364,7 @@
|
|||||||
✕
|
✕
|
||||||
</button>
|
</button>
|
||||||
</header>
|
</header>
|
||||||
<ToolSearch onSelect={(id) => applyChainTool(index, id)} />
|
<ToolSearch onSelect={(id) => applyChainTool(index, id)} chainableOnly />
|
||||||
</div>
|
</div>
|
||||||
{:else if getTool(step.toolId)}
|
{:else if getTool(step.toolId)}
|
||||||
{@const stepTool = getTool(step.toolId)!}
|
{@const stepTool = getTool(step.toolId)!}
|
||||||
|
|||||||
@@ -9,11 +9,13 @@
|
|||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
onSelect: (toolId: string) => void;
|
onSelect: (toolId: string) => void;
|
||||||
|
/** true — только инструменты, пригодные в шаг цепочки (слот добавления шага). */
|
||||||
|
chainableOnly?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
let { onSelect }: Props = $props();
|
let { onSelect, chainableOnly = false }: Props = $props();
|
||||||
|
|
||||||
const candidates = TOOLS.filter(isChainable);
|
const candidates = chainableOnly ? TOOLS.filter(isChainable) : TOOLS;
|
||||||
|
|
||||||
let query = $state('');
|
let query = $state('');
|
||||||
let activeIndex = $state(0);
|
let activeIndex = $state(0);
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
import { describe, expect, it } from 'vitest';
|
||||||
|
import { TOOLS } from '../registry';
|
||||||
|
import { normalizeForSearch, scoreDoc } from './matching';
|
||||||
|
import { toolSearchDoc } from './tool-strings';
|
||||||
|
import { isChainable } from '../registry';
|
||||||
|
|
||||||
|
function hits(q: string): string[] {
|
||||||
|
const nq = normalizeForSearch(q);
|
||||||
|
return TOOLS.filter((t) => {
|
||||||
|
const s = scoreDoc(toolSearchDoc(t), nq);
|
||||||
|
return s !== null && s > 0;
|
||||||
|
}).map((t) => t.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('полнота поиска', () => {
|
||||||
|
it('генератор (не chainable) находится поиском — раньше отфильтровывался', () => {
|
||||||
|
expect(isChainable(TOOLS.find((t) => t.id === 'color-wheel-png')!)).toBe(false);
|
||||||
|
expect(hits('color wheel')).toContain('color-wheel-png');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('анализатор-маска тоже ищется', () => {
|
||||||
|
expect(hits('уникальных цветов')).toContain('unique-color-mask-png');
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user