regexper-static/src/js/parser/javascript/base.js

117 lines
2.3 KiB
JavaScript
Raw Normal View History

2014-12-10 00:02:31 +00:00
import _ from 'lodash';
export default {
setContainer(container) {
this.container = container;
this.container.addClass(this.type);
},
2014-12-10 00:02:31 +00:00
getBBox() {
return this.container.getBBox();
},
2014-12-09 23:08:40 +00:00
renderLabel(container, text) {
var group = container.group();
group.rect();
group.text().attr({
text: text
});
return group;
},
2014-12-09 23:08:40 +00:00
positionLabel(group) {
var text = group.select('text'),
rect = group.select('rect'),
box = text.getBBox(),
margin = 5;
text.transform(Snap.matrix()
.translate(margin, box.height + margin));
rect.attr({
width: box.width + 2 * margin,
height: box.height + 2 * margin
});
},
render() {
console.log(this);
2014-12-04 01:20:08 +00:00
this.container.addClass('placeholder');
2014-12-09 23:08:40 +00:00
this.label = this.renderLabel(this.container, this.textValue);
this.label.select('rect').attr({
rx: 10,
ry: 10
});
},
position() {
2014-12-09 23:08:40 +00:00
this.positionLabel(this.label);
2014-12-10 00:02:31 +00:00
},
spaceHorizontally(items, options) {
var verticalCenter = 0;
_.defaults(options, {
padding: 0
});
_.reduce(items, (offset, item) => {
var element = item.container || item,
box;
element.transform(Snap.matrix()
.translate(offset, 0));
box = item.getBBox();
verticalCenter = Math.max(verticalCenter, box.cy);
return offset + options.padding + box.width;
}, 0);
_.each(items, item => {
var element = item.container || item;
element.transform(Snap.matrix()
.add(element.transform().localMatrix)
.translate(0, verticalCenter - item.getBBox().cy));
});
},
spaceVertically(items, options) {
var horizontalCenter = 0;
_.defaults(options, {
padding: 0
});
_.reduce(items, (offset, item) => {
var element = item.container || item,
box;
element.transform(Snap.matrix()
.translate(0, offset));
box = item.getBBox();
horizontalCenter = Math.max(horizontalCenter, box.cx);
return offset + options.padding + box.height;
}, 0);
_.each(items, item => {
var element = item.container || item;
element.transform(Snap.matrix()
.add(element.transform().localMatrix)
.translate(horizontalCenter - item.getBBox().cx, 0));
});
}
};