golfnet-editor
Version:
135 lines (108 loc) • 3.25 kB
JavaScript
import {
assign
} from 'min-dash';
import COLORS from '../../util/ColorUtil';
/**
* A palette provider for postit elements.
*/
export default function PaletteProvider(
palette, create, elementFactory,
spaceTool, lassoTool, handTool, translate) {
this._palette = palette;
this._create = create;
this._elementFactory = elementFactory;
this._spaceTool = spaceTool;
this._lassoTool = lassoTool;
this._handTool = handTool;
this._translate = translate;
palette.registerProvider(this);
}
PaletteProvider.$inject = [
'palette',
'create',
'elementFactory',
'spaceTool',
'lassoTool',
'handTool',
'translate'
];
PaletteProvider.prototype.getPaletteEntries = function (element) {
const type = localStorage.getItem('type')
// const type = 'Panel'
var actions = {},
create = this._create,
elementFactory = this._elementFactory,
spaceTool = this._spaceTool,
lassoTool = this._lassoTool,
handTool = this._handTool,
translate = this._translate;
function createAction(type, group, className, title, options) {
function createListener(event) {
var shape = elementFactory.createShape(assign({ type: type }, options));
create.start(event, shape);
}
var shortType = type.replace(/^postit:/, '');
return {
group: group,
className: className,
title: title || translate('Create {type}', { type: shortType }),
action: {
dragstart: createListener,
click: createListener
}
};
}
function createImage(event) {
var shape = elementFactory.createShape({
type: 'postit:Image'
});
create.start(event, shape, {
hints: { selectImage: true }
});
}
if (type == 'Panel') {
assign(actions, {
'create.rect-1-postit': createAction(
'postit:RectPostit-1', 'postits', 'pjs-postit-rect-1',
translate('Create Square 100×200'), { color: COLORS.BLUE }
),
'create.rect-postit': createAction(
'postit:RectPostit', 'postits', 'pjs-postit-rect',
translate('Create Square 150×150'), { color: COLORS.GREEN }
),
'create.square-postit': createAction(
'postit:SquarePostit', 'postits', 'pjs-postit-square',
translate('Create Square 200×100'), { color: COLORS.YELLOW }
)
});
}
else if (type == 'Net') {
assign(actions, {
'create.solar-net': createAction(
'postit:Group', 'artifact', 'solar-net',
translate('Create Net 1')
),
'create.ball-net': createAction(
'postit:Group', 'artifact', 'ball-net',
translate('Create Net 2')
)
});
}
else {
assign(actions, {
'create.panel-postit': createAction(
'postit:PanelPostit', 'postits', 'solar_pannel',
translate('Create Square 200×100'), { color: COLORS.YELLOW }
),
'create.net-postit': createAction(
'postit:NetPostit', 'postits', 'Net_pannel',
translate('Create Square 150×150'), { color: COLORS.GREEN }
),
'create.support-postit': createAction(
'postit:SupportPostit', 'postits', 'Support_pannel',
translate('Create Square 100×200'), { color: COLORS.BLUE }
),
});
}
return actions;
};