# ui/menubar/utils

module

<a id="constants">

## Constants

<a id="constant-DefaultMenuBarItems">

### `DefaultMenuBarItems: MenuBarConfigObject[ 'items' ]`

The default items [configuration](module_core_editor_editorconfig-EditorConfig.md#member-menuBar) of the [`MenuBarView`](module_ui_menubar_menubarview-MenuBarView.md) component. It contains names of all menu bar components registered in the [component factory](module_ui_componentfactory-ComponentFactory.md) (available in the project).

**Note**: Menu bar component names provided by core editor features are prefixed with `menuBar:` in order to distinguish them from components referenced by the [toolbar configuration](module_core_editor_editorconfig-EditorConfig.md#member-toolbar), for instance, `'menuBar:bold'` is a menu bar button but `'bold'` is a toolbar button.

Below is the preset menu bar structure (the default value of `config.menuBar.items` property):

```typescript
[
	{
		menuId: 'file',
		label: 'File',
		groups: [
			{
				groupId: 'export',
				items: [
					'menuBar:exportPdf',
					'menuBar:exportWord'
				]
			},
			{
				groupId: 'import',
				items: [
					'menuBar:importWord'
				]
			},
			{
				groupId: 'revisionHistory',
				items: [
					'menuBar:revisionHistory'
				]
			}
		]
	},
	{
		menuId: 'edit',
		label: 'Edit',
		groups: [
			{
				groupId: 'undo',
				items: [
					'menuBar:undo',
					'menuBar:redo'
				]
			},
			{
				groupId: 'selectAll',
				items: [
					'menuBar:selectAll'
				]
			},
			{
				groupId: 'findAndReplace',
				items: [
					'menuBar:findAndReplace'
				]
			}
		]
	},
	{
		menuId: 'view',
		label: 'View',
		groups: [
			{
				groupId: 'sourceEditingEnhanced',
				items: [
					'menuBar:sourceEditingEnhanced'
				]
			},
			{
				groupId: 'sourceEditing',
				items: [
					'menuBar:sourceEditing'
				]
			},
			{
				groupId: 'showBlocks',
				items: [
					'menuBar:showBlocks'
				]
			},
			{
				groupId: 'previewMergeFields',
				items: [
					'menuBar:previewMergeFields'
				]
			},
			{
				groupId: 'fullscreen',
				items: [
					'menuBar:fullscreen'
				]
			},
			{
				groupId: 'restrictedEditingException',
				items: [
					'menuBar:restrictedEditingException'
				]
			}
		]
	},
	{
		menuId: 'insert',
		label: 'Insert',
		groups: [
			{
				groupId: 'insertMainWidgets',
				items: [
					'menuBar:insertImage',
					'menuBar:ckbox',
					'menuBar:ckfinder',
					'menuBar:insertTable'
				]
			},
			{
				groupId: 'insertInline',
				items: [
					'menuBar:link',
					'menuBar:insertFootnote',
					'menuBar:bookmark',
					'menuBar:comment',
					'menuBar:insertMergeField',
					'menuBar:emoji'
				]
			},
			{
				groupId: 'insertMinorWidgets',
				items: [
					'menuBar:mediaEmbed',
					'menuBar:insertTemplate',
					'menuBar:blockQuote',
					'menuBar:codeBlock',
					'menuBar:htmlEmbed'
				]
			},
			{
				groupId: 'insertStructureWidgets',
				items: [
					'menuBar:horizontalLine',
					'menuBar:pageBreak',
					'menuBar:tableOfContents'
				]
			},
			{
				groupId: 'restrictedEditing',
				items: [
					'menuBar:restrictedEditing'
				]
			}
		]
	},
	{
		menuId: 'format',
		label: 'Format',
		groups: [
			{
				groupId: 'textAndFont',
				items: [
					{
						menuId: 'text',
						label: 'Text',
						groups: [
							{
								groupId: 'basicStyles',
								items: [
									'menuBar:bold',
									'menuBar:italic',
									'menuBar:underline',
									'menuBar:strikethrough',
									'menuBar:superscript',
									'menuBar:subscript',
									'menuBar:code'
								]
							},
							{
								groupId: 'textPartLanguage',
								items: [
									'menuBar:textPartLanguage'
								]
							}
						]
					},
					{
						menuId: 'font',
						label: 'Font',
						groups: [
							{
								groupId: 'fontProperties',
								items: [
									'menuBar:fontSize',
									'menuBar:fontFamily'
								]
							},
							{
								groupId: 'fontColors',
								items: [
									'menuBar:fontColor',
									'menuBar:fontBackgroundColor'
								]
							},
							{
								groupId: 'highlight',
								items: [
									'menuBar:highlight'
								]
							}
						]
					},
					'menuBar:heading'
				]
			},
			{
				groupId: 'list',
				items: [
					'menuBar:bulletedList',
					'menuBar:numberedList',
					'menuBar:multiLevelList',
					'menuBar:todoList'
				]
			},
			{
				groupId: 'indent',
				items: [
					'menuBar:alignment',
					'menuBar:lineHeight',
					'menuBar:indent',
					'menuBar:outdent'
				]
			},
			{
				groupId: 'caseChange',
				items: [
					'menuBar:caseChange'
				]
			},
			{
				groupId: 'removeFormat',
				items: [
					'menuBar:removeFormat'
				]
			}
		]
	},
	{
		menuId: 'tools',
		label: 'Tools',
		groups: [
			{
				groupId: 'aiTools',
				items: [
					'menuBar:aiAssistant',
					'menuBar:aiCommands',
					'menuBar:toggleAi',
					'menuBar:aiQuickActions'
				]
			},
			{
				groupId: 'tools',
				items: [
					'menuBar:trackChanges',
					'menuBar:commentsArchive'
				]
			}
		]
	},
	{
		menuId: 'help',
		label: 'Help',
		groups: [
			{
				groupId: 'help',
				items: [
					'menuBar:accessibilityHelp'
				]
			}
		]
	}
];
```

The menu bar can be customized using the `config.menuBar.removeItems` and `config.menuBar.addItems` properties.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-ui/src/menubar/utils.ts#L751)

<a id="constant-MenuBarBehaviors">

### `MenuBarBehaviors: object`

Behaviors of the [`MenuBarView`](module_ui_menubar_menubarview-MenuBarView.md) component.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-ui/src/menubar/utils.ts#L45)

<a id="constant-MenuBarMenuBehaviors">

### `MenuBarMenuBehaviors: object`

Behaviors of the [`MenuBarMenuView`](module_ui_menubar_menubarmenuview-MenuBarMenuView.md) component.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-ui/src/menubar/utils.ts#L208)

<a id="constant-MenuBarMenuViewPanelPositioningFunctions">

### `MenuBarMenuViewPanelPositioningFunctions: Record<string, PositioningFunction>`

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-ui/src/menubar/utils.ts#L405)

<a id="functions">

## Functions

<a id="function-normalizeMenuBarConfig">

### `normalizeMenuBarConfig( config ) → NormalizedMenuBarConfigObject`

Performs a cleanup and normalization of the menu bar configuration.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-ui/src/menubar/utils.ts#L1028)

#### Parameters

* `config: Readonly<MenuBarConfig>`

#### Returns

* `NormalizedMenuBarConfigObject`

<a id="function-processMenuBarConfig">

### `processMenuBarConfig( __namedParameters = { __namedParameters.componentFactory, __namedParameters.extraItems, __namedParameters.locale, __namedParameters.normalizedConfig } ) → NormalizedMenuBarConfigObject` _(internal)_

Processes a normalized menu bar config and returns a config clone with the following modifications:

* Removed components that are not available in the component factory,
* Removed obsolete separators,
* Purged empty menus,
* Localized top-level menu labels.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-ui/src/menubar/utils.ts#L1067)

#### Parameters

* `__namedParameters: object`

  Properties

  * `__namedParameters.componentFactory: ComponentFactory`
  * `__namedParameters.extraItems: Array<MenuBarConfigAddedItem | MenuBarConfigAddedGroup | MenuBarConfigAddedMenu>`
  * `__namedParameters.locale: Locale`
  * `__namedParameters.normalizedConfig: NormalizedMenuBarConfigObject`

#### Returns

* `NormalizedMenuBarConfigObject`

---

Full index of the CKEditor 5 API reference: [llms.txt](llms.txt)
