image-cropper
Version:
Vanilla js-widget for the browser dealing with cropping images
46 lines (39 loc) • 1.71 kB
JavaScript
var dom = require('dom-events')
, ensureElement = require('./ensure-element')
, resizeImage = require('./resize-image')
, createSlider = require('./slider')
, navigation = function (options) {
var container = options.container
, sliderElm = ensureElement({ container: container, className: 'slider' })
, images = options.images
, cancelElm = ensureElement({ container: container, className: 'cancel', innerHTML: 'cancel'})
, saveElm = ensureElement({ container: container, className: 'save', innerHTML: 'save' })
, slider = createSlider(sliderElm, { width: options.sliderWidth || 260, lineHeight: 2, handleSize: 10 }, function (sliderValue) {
var zoomFactor = 1 + (sliderValue * (options.maxZoom - 1))
, scaleFactor = options.width / images[0].naturalWidth
images.forEach(function (image) {
resizeImage(image, scaleFactor * zoomFactor, options.width, options.height)
})
})
return {
enable: function (callback) {
var disable = function () {
dom.off(saveElm, 'click', onsave)
dom.off(cancelElm, 'click', oncancel)
slider.disable()
}
, onsave = function () {
disable()
callback(null, { save: true })
}
, oncancel = function () {
disable()
callback(null, { save: false })
}
slider.enable()
dom.on(saveElm, 'click', onsave)
dom.on(cancelElm, 'click', oncancel)
}
}
}
module.exports = navigation