mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-10 10:25:36 +01:00
86 lines
No EOL
2 KiB
JavaScript
86 lines
No EOL
2 KiB
JavaScript
export function DefaultMouseEvent() {
|
|
var viewer = $('#viewer-container');
|
|
var off = viewer.offset();
|
|
const r = Math.round;
|
|
this.type = 'click';
|
|
this.canBubble = true;
|
|
this.cancelable = true;
|
|
this.detail = 1;
|
|
this.screenX = r(off.left + viewer.width() / 2);
|
|
this.screenY = r(off.top + viewer.height() / 2);
|
|
this.clientX = this.screenX;
|
|
this.clientY = this.screenY;
|
|
this.pageX = this.screenX;
|
|
this.pageY = this.screenY;
|
|
this.ctrlKey = false;
|
|
this.altKey = false;
|
|
this.shiftKey = false;
|
|
this.metaKey = false;
|
|
this.button = 0;
|
|
this.relatedTarget = null;
|
|
}
|
|
|
|
export const EventData = {
|
|
|
|
get: function(event, key) {
|
|
if (event.data) {
|
|
return event.data[key];
|
|
} else {
|
|
return undefined;
|
|
}
|
|
},
|
|
|
|
set: function(event, key, value) {
|
|
if (!event.data) {
|
|
event.data = {};
|
|
}
|
|
event.data[key] = value;
|
|
}
|
|
};
|
|
|
|
export function fit(el, relativeEl) {
|
|
const span = 5;
|
|
var relOff = relativeEl.offset();
|
|
var off = el.offset();
|
|
|
|
var needToSet = false;
|
|
if (off.left < relOff.left ) {
|
|
off.left = relOff.left + span;
|
|
needToSet = true;
|
|
}
|
|
const right = relOff.left + relativeEl.width() - span;
|
|
var outerWidth = el.outerWidth();
|
|
if (off.left + outerWidth >= right) {
|
|
off.left = right - outerWidth;
|
|
needToSet = true;
|
|
}
|
|
if (off.top < relOff.top + span) {
|
|
off.top = relOff.top + span;
|
|
needToSet = true;
|
|
}
|
|
var bottom = relOff.top + relativeEl.height() - span;
|
|
var outerHeight = el.outerHeight();
|
|
if (off.top + outerHeight >= bottom) {
|
|
off.top = bottom - outerHeight;
|
|
needToSet = true;
|
|
}
|
|
if (needToSet) {
|
|
el.css({
|
|
left: off.left + 'px',
|
|
top: off.top + 'px'
|
|
});
|
|
}
|
|
}
|
|
|
|
export function capitalize(str) {
|
|
if (!str) return;
|
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
}
|
|
|
|
export function cssIconsToClasses(cssIcons) {
|
|
return cssIcons.map((i)=> 'fa-'+i).join(' ')
|
|
}
|
|
|
|
export function LoadTemplate(name) {
|
|
return require('./tmpl/' + name + '.html');
|
|
}
|