import BlockTool from './block'; import InlineTool from './inline'; import BlockTune from './tune'; export type ToolClass = BlockTool | InlineTool | BlockTune; /** * Class to store Editor Tools */ export default class ToolsCollection extends Map { /** * Returns Block Tools collection */ public get blockTools(): ToolsCollection { const tools = Array .from(this.entries()) .filter(([, tool]) => tool.isBlock()) as [string, BlockTool][]; return new ToolsCollection(tools); } /** * Returns Inline Tools collection */ public get inlineTools(): ToolsCollection { const tools = Array .from(this.entries()) .filter(([, tool]) => tool.isInline()) as [string, InlineTool][]; return new ToolsCollection(tools); } /** * Returns Block Tunes collection */ public get blockTunes(): ToolsCollection { const tools = Array .from(this.entries()) .filter(([, tool]) => tool.isTune()) as [string, BlockTune][]; return new ToolsCollection(tools); } /** * Returns internal Tools collection */ public get internalTools(): ToolsCollection { const tools = Array .from(this.entries()) .filter(([, tool]) => tool.isInternal); return new ToolsCollection(tools); } /** * Returns Tools collection provided by user */ public get externalTools(): ToolsCollection { const tools = Array .from(this.entries()) .filter(([, tool]) => !tool.isInternal); return new ToolsCollection(tools); } }