| 374 | } |
| 375 | |
| 376 | function filterNotes(notes: ZenNote[], filter: FilterValue): ZenNote[] { |
| 377 | if (filter === "all") return notes; |
| 378 | if (filter.startsWith("folder:")) { |
| 379 | const folder = filter.slice("folder:".length) as NoteFolder; |
| 380 | return notes.filter((note) => note.folder === folder); |
| 381 | } |
| 382 | const tag = filter.slice("tag:".length).toLowerCase(); |
| 383 | return notes.filter((note) => |
| 384 | note.tags.some((candidate) => candidate.toLowerCase() === tag), |
| 385 | ); |
| 386 | } |
| 387 | |
| 388 | function collectTags(notes: ZenNote[]): string[] { |
| 389 | const tags = new Map<string, string>(); |