UNPKG

jodit

Version:

Jodit is awesome and usefully wysiwyg editor with filebrowser

75 lines (64 loc) 1.7 kB
/*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ import { IControlTypeContent, IControlTypeStrong, IToolbarButton, IToolbarCollection, IUIElement, IViewBased, Nullable } from '../../types'; import { isFunction, isJoditObject } from '../../core/helpers'; import { ToolbarCollection } from './collection/collection'; import { ToolbarEditorCollection } from './collection/editor-collection'; import { ToolbarButton } from './button/button'; import { ToolbarContent } from './button/content'; /** * Collection factory * @param jodit */ export function makeCollection( jodit: IViewBased, parentElement?: IUIElement ): IToolbarCollection { const collection = isJoditObject(jodit) ? new ToolbarEditorCollection(jodit) : new ToolbarCollection(jodit); if (jodit.o.textIcons) { collection.container.classList.add('jodit_text_icons'); } if (parentElement) { collection.parentElement = parentElement; } if (jodit.o.toolbarButtonSize) { collection.buttonSize = jodit.o.toolbarButtonSize; } return collection; } /** * Button factory * * @param jodit * @param control * @param [target] */ export function makeButton( jodit: IViewBased, control: IControlTypeStrong, target: Nullable<HTMLElement> = null ): IToolbarButton { if (isFunction(control.getContent)) { return new ToolbarContent( jodit, control as IControlTypeContent, target ); } const button = new ToolbarButton(jodit, control, target); button.state.tabIndex = jodit.o.allowTabNavigation ? 0 : -1; return button; }