This commit is contained in:
Shravan Kumar Karnati 2023-12-22 16:00:25 -08:00
parent c5ddf91189
commit e612cba1a6
8 changed files with 72 additions and 1 deletions

View file

@ -28,6 +28,7 @@ export default class API extends Module {
selection: this.Editor.SelectionAPI.methods,
styles: this.Editor.StylesAPI.classes,
toolbar: this.Editor.ToolbarAPI.methods,
tools: this.Editor.ToolsAPI.methods,
inlineToolbar: this.Editor.InlineToolbarAPI.methods,
tooltip: this.Editor.TooltipAPI.methods,
i18n: this.Editor.I18nAPI.methods,

View file

@ -0,0 +1,37 @@
import { ToolConfig } from '../../../../types';
import { Tools } from '../../../../types/api';
import * as _ from '../../utils';
import Module from '../../__module';
/**
* @class ToolsAPI
* Provides methods for working with the Tools
*/
export default class ToolsAPI extends Module {
/**
* Available methods
*
* @returns {Tools}
*/
public get methods(): Tools {
return {
updateToolConfig:(toolName:string, config: ToolConfig) => this.updateToolConfig(toolName, config),
};
}
/**
* Update Tool's config
*
* @param toolName Name of the tool
* @param config Tools Config
*/
public updateToolConfig(toolName:string, config: ToolConfig): void {
const tool = this.Editor.Tools.available.get(toolName);
if (tool) {
tool.updateConfig(config);
} else {
_.log(`Incorrect toolName: ${toolName}`);
}
}
}

View file

@ -14,6 +14,7 @@ import SelectionAPI from './api/selection';
import StylesAPI from './api/styles';
import ToolbarAPI from './api/toolbar';
import TooltipAPI from './api/tooltip';
import ToolsAPI from './api/tools';
import UiAPI from './api/ui';
/** ./toolbar */
@ -55,6 +56,7 @@ export default {
StylesAPI,
ToolbarAPI,
TooltipAPI,
ToolsAPI,
UiAPI,
// Toolbar Modules

View file

@ -1,4 +1,4 @@
import { Tool, ToolConstructable, ToolSettings } from '../../../types/tools';
import { Tool, ToolConfig, ToolConstructable, ToolSettings } from '../../../types/tools';
import { SanitizerConfig } from '../../../types';
import * as _ from '../utils';
import type InlineTool from './inline';
@ -216,6 +216,17 @@ export default abstract class BaseTool<Type extends Tool = Tool> {
}
}
/**
* Update tool's current config
*
* @param {ToolConfig} config - Tool's config
*/
public updateConfig(config: ToolConfig):void {
if (this.config) {
this.config[UserSettings.Config] = config;
}
}
/**
* Calls Tool's prepare method
*/

View file

@ -37,6 +37,7 @@ import Renderer from '../components/modules/renderer';
import Saver from '../components/modules/saver';
import Tools from '../components/modules/tools';
import UI from '../components/modules/ui';
import ToolsAPI from '../components/modules/api/tools';
export interface EditorModules {
// API Modules
@ -55,6 +56,7 @@ export interface EditorModules {
StylesAPI: StylesAPI,
ToolbarAPI: ToolbarAPI,
TooltipAPI: TooltipAPI,
ToolsAPI: ToolsAPI;
UiAPI: UiAPI,
// Toolbar Modules

View file

@ -14,3 +14,4 @@ export * from './block';
export * from './readonly';
export * from './i18n';
export * from './ui';
export * from './tools';

14
types/api/tools.d.ts vendored Normal file
View file

@ -0,0 +1,14 @@
import { ToolConfig } from '../tools';
/**
* Describes Tools API methods
*/
export interface Tools {
/**
* Updates tool's config
*
* @param toolName Name of the tool
* @param type inline or block tools
*/
updateToolConfig(toolName:string, config: ToolConfig): void
}

3
types/index.d.ts vendored
View file

@ -26,6 +26,7 @@ import {
Styles,
Toolbar,
Tooltip,
Tools,
I18n,
Ui,
} from './api';
@ -115,6 +116,7 @@ export interface API {
toolbar: Toolbar;
inlineToolbar: InlineToolbar;
tooltip: Tooltip;
tools: Tools;
i18n: I18n;
readOnly: ReadOnly;
ui: Ui;
@ -135,6 +137,7 @@ declare class EditorJS {
public selection: Selection;
public styles: Styles;
public toolbar: Toolbar;
public tools: Tools;
public inlineToolbar: InlineToolbar;
public readOnly: ReadOnly;
constructor(configuration?: EditorConfig|string);