jodit
Version:
Jodit is awesome and usefully wysiwyg editor with filebrowser
75 lines (64 loc) • 1.7 kB
text/typescript
/*!
* 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;
}