jstd-web/node_modules/bpmn-js/lib/features/create-append-anything/CreatePaletteProvider.js

73 lines
1.7 KiB
JavaScript
Raw Normal View History

2025-11-25 15:23:22 +08:00
import { createIcon } from '../../icons/Icons';
import { query as domQuery } from 'min-dom';
/**
* A palette provider for the create elements menu.
*/
export default function CreatePaletteProvider(palette, translate, popupMenu, canvas, mouse) {
this._translate = translate;
this._popupMenu = popupMenu;
this._canvas = canvas;
this._mouse = mouse;
palette.registerProvider(800,this);
}
CreatePaletteProvider.$inject = [
'palette',
'translate',
'popupMenu',
'canvas',
'mouse'
];
CreatePaletteProvider.prototype.getPaletteEntries = function(element) {
const translate = this._translate,
popupMenu = this._popupMenu,
canvas = this._canvas,
mouse = this._mouse;
const getPosition = (event) => {
const X_OFFSET = 35;
const Y_OFFSET = 10;
if (event instanceof KeyboardEvent) {
event = mouse.getLastMoveEvent();
return { x: event.x, y: event.y };
}
const target = event && event.target || domQuery('.djs-palette [data-action="create"]');
const targetPosition = target.getBoundingClientRect();
return target && {
x: targetPosition.left + targetPosition.width / 2 + X_OFFSET,
y: targetPosition.top + targetPosition.height / 2 + Y_OFFSET
};
};
return {
'create': {
group: 'create',
imageUrl: createIcon,
title: translate('Create element'),
action: {
click: function(event) {
const position = getPosition(event);
const element = canvas.getRootElement();
popupMenu.open(element, 'bpmn-create', position, {
title: translate('Create element'),
width: 300,
search: true
});
}
}
}
};
};