bauhaus-cropper
Version:
Simple image cropping module.
212 lines (185 loc) • 7.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _data = require('./data.js');
var _data2 = _interopRequireDefault(_data);
var _icons = require('../icons.js');
var _icons2 = _interopRequireDefault(_icons);
var _events = require('./events.js');
var events = _interopRequireWildcard(_events);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function (div) {
// BackgroundLeft
var ileft = document.createElement('div');
ileft.style.position = 'absolute';
ileft.style.top = '0px';
ileft.style.left = '0px';
ileft.style.bottom = '0px';
ileft.style.right = '50%';
ileft.style.marginRight = _data2.default.width / 2 + 'px';
ileft.style.background = 'rgba(0, 0, 0, 0.79)';
ileft.style.zIndex = _data2.default.zIndex;
// BackgroundTop
var iTop = document.createElement('div');
iTop.style.position = 'absolute';
iTop.style.top = '0px';
iTop.style.left = '50%';
iTop.style.bottom = '50%';
iTop.style.right = '50%';
iTop.style.marginBottom = _data2.default.height / 2 + 'px';
iTop.style.marginLeft = 0 - _data2.default.width / 2 + 'px';
iTop.style.marginRight = 0 - _data2.default.width / 2 + 'px';
iTop.style.background = 'rgba(0, 0, 0, 0.79)';
iTop.style.zIndex = _data2.default.zIndex;
// BackgroundRight
var iRight = document.createElement('div');
iRight.style.position = 'absolute';
iRight.style.top = '0px';
iRight.style.left = '50%';
iRight.style.bottom = '0px';
iRight.style.right = '0px';
iRight.style.marginLeft = _data2.default.width / 2 + 'px';
iRight.style.background = 'rgba(0, 0, 0, 0.79)';
iRight.style.zIndex = _data2.default.zIndex;
// BackgroundBottom
var iBottom = document.createElement('div');
iBottom.style.position = 'absolute';
iBottom.style.top = '50%';
iBottom.style.left = '50%';
iBottom.style.bottom = '0px';
iBottom.style.right = '50%';
iBottom.style.marginTop = _data2.default.height / 2 + 'px';
iBottom.style.marginLeft = 0 - _data2.default.width / 2 + 'px';
iBottom.style.marginRight = 0 - _data2.default.width / 2 + 'px';
iBottom.style.background = 'rgba(0, 0, 0, 0.79)';
iBottom.style.zIndex = _data2.default.zIndex;
var winw = window.innerWidth;
var winh = window.innerHeight;
if (_data2.default.circle) {
var rad = Math.sqrt(winw * winw, winh * winh) - (_data2.default.height + _data2.default.width) / 2;
} else {
var rad = (winh - _data2.default.height) / 2;
if ((winw - _data2.default.width) / 2 > rad) {
rad = (winw - _data2.default.width) / 2;
}
}
var iCropShow = document.createElement('div');
iCropShow.style.position = 'absolute';
iCropShow.style.top = '50%';
iCropShow.style.left = '50%';
iCropShow.style.width = _data2.default.width + 'px';
iCropShow.style.height = _data2.default.height + 'px';
iCropShow.style.marginTop = -(_data2.default.height / 2 + rad) + 'px';
iCropShow.style.marginLeft = -(_data2.default.width / 2 + rad) + 'px';
iCropShow.style.background = 'rgba(0, 0, 0, 0.0)';
iCropShow.style.border = rad + 'px solid rgba(0, 0, 0, 0.79)';
if (_data2.default.circle) {
iCropShow.style.borderRadius = '50%';
}
iCropShow.style.zIndex = _data2.default.zIndex;
var overlay = document.createElement('div');
overlay.style.position = 'absolute';
overlay.style.top = '0px';
overlay.style.left = '0px';
overlay.style.right = '0px';
overlay.style.bottom = '0px';
overlay.style.background = 'transparent';
overlay.style.zIndex = _data2.default.zIndex + 1;
var menubar = document.createElement('div');
menubar.style.position = 'absolute';
menubar.style.right = '5px';
menubar.style.bottom = '14px';
menubar.style.zIndex = _data2.default.zIndex + 2 + '';
menubar.style.fontFamily = 'Arial';
menubar.style.fontSize = '16px';
menubar.style.color = '#ffffff';
menubar.style.textAlign = 'right';
var submit = document.createElement('span');
submit.style.position = 'relative';
submit.style.padding = '9px';
submit.style.borderRadius = '2px';
submit.style.marginRight = '5px';
submit.innerHTML = _icons2.default.checkmark;
submit.style.cursor = 'pointer';
submit.style.fill = '#ffffff';
submit.addEventListener('click', events.submit);
var cancel = document.createElement('span');
cancel.style.position = 'relative';
cancel.style.padding = '9px';
cancel.style.borderRadius = '2px';
cancel.style.marginRight = '10px';
cancel.innerHTML = _icons2.default.cross;
cancel.style.cursor = 'pointer';
cancel.style.fill = '#ffffff';
cancel.addEventListener('click', events.cancel);
var plus = document.createElement('span');
plus.style.position = 'relative';
plus.style.padding = '9px';
plus.style.borderRadius = '2px';
plus.style.marginRight = '10px';
plus.innerHTML = _icons2.default.zoomIn;
plus.style.cursor = 'pointer';
plus.style.fill = '#ffffff';
plus.addEventListener('click', events.resizePlus);
plus.addEventListener('dblclick', events.resizePlus2x);
var minus = document.createElement('span');
minus.style.position = 'relative';
minus.style.padding = '9px';
minus.style.borderRadius = '2px';
minus.style.marginRight = '10px';
minus.innerHTML = _icons2.default.zoomOut;
minus.style.cursor = 'pointer';
minus.style.fill = '#ffffff';
minus.addEventListener('click', events.resizeMinus);
minus.addEventListener('dblclick', events.resizeMinus2x);
menubar.appendChild(plus);
menubar.appendChild(minus);
menubar.appendChild(cancel);
menubar.appendChild(submit);
var img = document.createElement('img');
img.setAttribute('draggable', 'false');
img.setAttribute('src', _data2.default.dataUrl);
img.style.position = 'absolute';
/*img.style.height = data.ih + 'px'
img.style.width = data.iw + 'px'*/
img.style.height = _data2.default.nh + 'px';
img.style.width = _data2.default.nw + 'px';
img.style.top = _data2.default.ct + 'px';
img.style.left = _data2.default.cl + 'px';
img.style.padding = '0';
img.style.margin = '0';
img.style.border = '0px solid #ff0000';
img.style.maxWidth = 'none';
img.style.zIndex = _data2.default.zIndex - 1 + '';
var size = document.createElement('div');
// size.id = 'bauhausCropImageHolder'
size.style.position = 'absolute';
size.style.top = '50%';
size.style.left = '50%';
size.style.margin = '0';
size.style.marginLeft = 0 - _data2.default.width / 2 + 'px';
size.style.marginTop = 0 - _data2.default.height / 2 + 'px';
size.style.height = _data2.default.height + 'px';
size.style.width = _data2.default.width + 'px';
size.style.border = '0px solid #ff0000';
size.style.zIndex = _data2.default.zIndex - 1 + '';
size.style.padding = '0';
size.appendChild(img);
//size.innerHTML = '<img draggable="false" id="bauhausCropImage" src="' + data.dataUrl + '" style="z-index:' + (data.zIndex - 1) + '; position: absolute; width: ' + data.iw + 'px; height: ' + data.ih + 'px; left: ' + data.cl + 'px; top: ' + data.ct + 'px; padding: 0; margin:0; border: 0px solid black; max-width: none;" />';
_data2.default.cropImage = img;
_data2.default.cropImageHolder = size;
div.style.background = 'rgba(255, 0, 0, 0)';
div.addEventListener('mousedown', events.drag);
div.addEventListener('mouseup', events.drop);
div.addEventListener('mousemove', events.move);
div.addEventListener('mousewheel', events.scroll);
div.addEventListener('wheel', events.scroll);
div.addEventListener('mouseout', events.mouseout);
div.appendChild(size);
div.appendChild(iCropShow);
div.appendChild(overlay);
div.appendChild(menubar);
};
module.exports = exports['default'];