You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.6 KiB
73 lines
1.6 KiB
2 years ago
|
import ICONS from './AlignElementsIcons';
|
||
|
|
||
|
import {
|
||
|
assign,
|
||
|
forEach,
|
||
|
} from 'min-dash';
|
||
|
|
||
|
var ALIGNMENT_OPTIONS = [
|
||
|
'left',
|
||
|
'center',
|
||
|
'right',
|
||
|
'top',
|
||
|
'middle',
|
||
|
'bottom'
|
||
|
];
|
||
|
|
||
|
/**
|
||
|
* A provider for align elements popup menu.
|
||
|
*/
|
||
|
export default function AlignElementsMenuProvider(popupMenu, alignElements, translate, rules) {
|
||
|
|
||
|
this._alignElements = alignElements;
|
||
|
this._translate = translate;
|
||
|
this._popupMenu = popupMenu;
|
||
|
this._rules = rules;
|
||
|
|
||
|
popupMenu.registerProvider('align-elements', this);
|
||
|
}
|
||
|
|
||
|
AlignElementsMenuProvider.$inject = [
|
||
|
'popupMenu',
|
||
|
'alignElements',
|
||
|
'translate',
|
||
|
'rules'
|
||
|
];
|
||
|
|
||
|
AlignElementsMenuProvider.prototype.getPopupMenuEntries = function(elements) {
|
||
|
var entries = {};
|
||
|
|
||
|
if (this._isAllowed(elements)) {
|
||
|
assign(entries, this._getEntries(elements));
|
||
|
}
|
||
|
|
||
|
return entries;
|
||
|
};
|
||
|
|
||
|
AlignElementsMenuProvider.prototype._isAllowed = function(elements) {
|
||
|
return this._rules.allowed('elements.align', { elements: elements });
|
||
|
};
|
||
|
|
||
|
AlignElementsMenuProvider.prototype._getEntries = function(elements) {
|
||
|
var alignElements = this._alignElements,
|
||
|
translate = this._translate,
|
||
|
popupMenu = this._popupMenu;
|
||
|
|
||
|
var entries = {};
|
||
|
|
||
|
forEach(ALIGNMENT_OPTIONS, function(alignment) {
|
||
|
entries[ 'align-elements-' + alignment ] = {
|
||
|
group: 'align',
|
||
|
title: translate('Align elements ' + alignment),
|
||
|
className: 'bjs-align-elements-menu-entry',
|
||
|
imageUrl: ICONS[alignment],
|
||
|
action: function(event, entry) {
|
||
|
alignElements.trigger(elements, alignment);
|
||
|
popupMenu.close();
|
||
|
}
|
||
|
};
|
||
|
});
|
||
|
|
||
|
return entries;
|
||
|
};
|