mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-04-05 07:27:09 +08:00
feat(stage): export MoveableActionsAble; 在选中框上面自定义按钮
This commit is contained in:
parent
2bb2a35fcc
commit
6e71448158
@ -1,11 +1,24 @@
|
|||||||
import { MoveableManagerInterface, Renderer } from 'moveable';
|
import type { MoveableManagerInterface, Renderer } from 'moveable';
|
||||||
|
|
||||||
import { AbleActionEventType } from './const';
|
import { AbleActionEventType } from './const';
|
||||||
import ableCss from './moveable-able.css?raw';
|
import ableCss from './moveable-able.css?raw';
|
||||||
|
|
||||||
export default (handler: (type: AbleActionEventType) => void) => ({
|
export interface AbleCustomizedButton {
|
||||||
|
props: {
|
||||||
|
className?: string;
|
||||||
|
onClick?(e: MouseEvent): void;
|
||||||
|
[key: string]: any;
|
||||||
|
};
|
||||||
|
children: ReturnType<Renderer['createElement']>[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export default (
|
||||||
|
handler: (type: AbleActionEventType) => void,
|
||||||
|
customizedButton: ((react: Renderer) => AbleCustomizedButton)[] = [],
|
||||||
|
) => ({
|
||||||
name: 'actions',
|
name: 'actions',
|
||||||
props: [],
|
props: [],
|
||||||
|
always: true,
|
||||||
events: [],
|
events: [],
|
||||||
render(moveable: MoveableManagerInterface<any, any>, React: Renderer) {
|
render(moveable: MoveableManagerInterface<any, any>, React: Renderer) {
|
||||||
const rect = moveable.getRect();
|
const rect = moveable.getRect();
|
||||||
@ -33,10 +46,17 @@ export default (handler: (type: AbleActionEventType) => void) => ({
|
|||||||
{
|
{
|
||||||
className: 'moveable-editable',
|
className: 'moveable-editable',
|
||||||
style: {
|
style: {
|
||||||
transform: `translate(${pos2[0] - 60}px, ${pos2[1] - 28}px) rotate(${rect.rotation}deg)`,
|
transform: `translate(${pos2[0] - (customizedButton.length + 3) * 20}px, ${pos2[1] - 28}px) rotate(${
|
||||||
|
rect.rotation
|
||||||
|
}deg)`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
|
...customizedButton.map((buttonRenderer) => {
|
||||||
|
const options = buttonRenderer(React);
|
||||||
|
return React.createElement('button', options.props || {}, ...(options.children || []));
|
||||||
|
}),
|
||||||
|
|
||||||
React.createElement(
|
React.createElement(
|
||||||
'button',
|
'button',
|
||||||
{
|
{
|
||||||
|
@ -112,9 +112,10 @@ export default class MoveableOptionsManager extends EventEmitter {
|
|||||||
*/
|
*/
|
||||||
protected getOptions(isMultiSelect: boolean, runtimeOptions: MoveableOptions = {}): MoveableOptions {
|
protected getOptions(isMultiSelect: boolean, runtimeOptions: MoveableOptions = {}): MoveableOptions {
|
||||||
const defaultOptions = this.getDefaultOptions(isMultiSelect);
|
const defaultOptions = this.getDefaultOptions(isMultiSelect);
|
||||||
const customizedOptions = this.getCustomizeOptions();
|
const customizedOptions = this.getCustomizeOptions() || {};
|
||||||
|
|
||||||
this.options = merge(defaultOptions, customizedOptions, runtimeOptions);
|
this.options = merge(defaultOptions, customizedOptions, runtimeOptions);
|
||||||
|
|
||||||
return this.options;
|
return this.options;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,12 +18,14 @@
|
|||||||
|
|
||||||
import StageCore from './StageCore';
|
import StageCore from './StageCore';
|
||||||
|
|
||||||
export type { MoveableOptions, OnDragStart } from 'moveable';
|
|
||||||
export type { GuidesOptions } from '@scena/guides';
|
export type { GuidesOptions } from '@scena/guides';
|
||||||
export { default as StageRender } from './StageRender';
|
export { default as StageRender } from './StageRender';
|
||||||
export { default as StageMask } from './StageMask';
|
export { default as StageMask } from './StageMask';
|
||||||
export { default as StageDragResize } from './StageDragResize';
|
export { default as StageDragResize } from './StageDragResize';
|
||||||
|
export * from 'moveable';
|
||||||
export * from './types';
|
export * from './types';
|
||||||
export * from './const';
|
export * from './const';
|
||||||
export * from './util';
|
export * from './util';
|
||||||
|
export * from './MoveableActionsAble';
|
||||||
|
export { default as MoveableActionsAble } from './MoveableActionsAble';
|
||||||
export default StageCore;
|
export default StageCore;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user