/** * [[include:modules/toolbar/README.md]] * @packageDocumentation * @module modules/toolbar */ import type { IControlTypeContent, IControlTypeStrong, IToolbarButton, IToolbarCollection, IUIElement, IViewBased, Nullable } from 'jodit/types'; import { isFunction, isJoditObject } from 'jodit/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 * @param parentElement */ export function makeCollection( jodit: IViewBased, parentElement?: IUIElement ): IToolbarCollection { // console.log('makeCollection'); 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; } // if (jodit.o.toolbar) { // collection.buttonSize = jodit.o.toolbarButtonSize; // } return collection; } /** * Button factory */ export function makeButton( jodit: IViewBased, control: IControlTypeStrong, target: Nullable = null ): IToolbarButton { // console.log('control: ', control); // console.log('target: ', target); if (isFunction(control.getContent)) { // console.log(':: control.getContent: ', control.getContent); return new ToolbarContent( jodit, control as IControlTypeContent, target ); } const button = new ToolbarButton(jodit, control, target); // console.log(':::: button :::: ', button); button.state.tabIndex = jodit.o.allowTabNavigation ? 0 : -1; return button; }