# Description of Changes <!-- Please provide a summary of the changes, including: - What was changed - Why the change was made - Any challenges encountered Closes #(issue_number) --> --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing) for more details. --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: EthanHealy01 <ethan.healy.21@gmail.com> Co-authored-by: EthanHealy01 <80844253+EthanHealy01@users.noreply.github.com>
21 lines
754 B
TypeScript
21 lines
754 B
TypeScript
import { useMemo } from 'react';
|
|
import { ToolId } from '../../types/toolId';
|
|
import { ToolRegistryEntry } from '../../data/toolsTaxonomy';
|
|
|
|
export function useFavoriteToolItems(
|
|
favoriteTools: ToolId[],
|
|
toolRegistry: Partial<Record<ToolId, ToolRegistryEntry>>
|
|
): Array<{ id: ToolId; tool: ToolRegistryEntry }> {
|
|
return useMemo(() => {
|
|
return favoriteTools
|
|
.map((toolId) => {
|
|
const tool = toolRegistry[toolId as ToolId];
|
|
return tool ? { id: toolId as ToolId, tool } : null;
|
|
})
|
|
.filter((x): x is { id: ToolId; tool: ToolRegistryEntry } => x !== null)
|
|
.filter(({ id, tool }) => Boolean(tool.component) || Boolean(tool.link) || id === 'read' || id === 'multiTool');
|
|
}, [favoriteTools, toolRegistry]);
|
|
}
|
|
|
|
|