diff options
Diffstat (limited to 'library/cropperjs/src/js/events.js')
-rw-r--r-- | library/cropperjs/src/js/events.js | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/library/cropperjs/src/js/events.js b/library/cropperjs/src/js/events.js new file mode 100644 index 000000000..3753db022 --- /dev/null +++ b/library/cropperjs/src/js/events.js @@ -0,0 +1,111 @@ +import { + EVENT_CROP, + EVENT_CROP_END, + EVENT_CROP_MOVE, + EVENT_CROP_START, + EVENT_DBLCLICK, + EVENT_POINTER_DOWN, + EVENT_POINTER_MOVE, + EVENT_POINTER_UP, + EVENT_RESIZE, + EVENT_WHEEL, + EVENT_ZOOM, +} from './constants'; +import { + addListener, + isFunction, + proxy, + removeListener, +} from './utilities'; + +export default { + bind() { + const { element, options, cropper } = this; + + if (isFunction(options.cropstart)) { + addListener(element, EVENT_CROP_START, options.cropstart); + } + + if (isFunction(options.cropmove)) { + addListener(element, EVENT_CROP_MOVE, options.cropmove); + } + + if (isFunction(options.cropend)) { + addListener(element, EVENT_CROP_END, options.cropend); + } + + if (isFunction(options.crop)) { + addListener(element, EVENT_CROP, options.crop); + } + + if (isFunction(options.zoom)) { + addListener(element, EVENT_ZOOM, options.zoom); + } + + addListener(cropper, EVENT_POINTER_DOWN, (this.onCropStart = proxy(this.cropStart, this))); + + if (options.zoomable && options.zoomOnWheel) { + addListener(cropper, EVENT_WHEEL, (this.onWheel = proxy(this.wheel, this))); + } + + if (options.toggleDragModeOnDblclick) { + addListener(cropper, EVENT_DBLCLICK, (this.onDblclick = proxy(this.dblclick, this))); + } + + addListener( + element.ownerDocument, + EVENT_POINTER_MOVE, + (this.onCropMove = proxy(this.cropMove, this)), + ); + addListener( + element.ownerDocument, + EVENT_POINTER_UP, + (this.onCropEnd = proxy(this.cropEnd, this)), + ); + + if (options.responsive) { + addListener(window, EVENT_RESIZE, (this.onResize = proxy(this.resize, this))); + } + }, + + unbind() { + const { element, options, cropper } = this; + + if (isFunction(options.cropstart)) { + removeListener(element, EVENT_CROP_START, options.cropstart); + } + + if (isFunction(options.cropmove)) { + removeListener(element, EVENT_CROP_MOVE, options.cropmove); + } + + if (isFunction(options.cropend)) { + removeListener(element, EVENT_CROP_END, options.cropend); + } + + if (isFunction(options.crop)) { + removeListener(element, EVENT_CROP, options.crop); + } + + if (isFunction(options.zoom)) { + removeListener(element, EVENT_ZOOM, options.zoom); + } + + removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart); + + if (options.zoomable && options.zoomOnWheel) { + removeListener(cropper, EVENT_WHEEL, this.onWheel); + } + + if (options.toggleDragModeOnDblclick) { + removeListener(cropper, EVENT_DBLCLICK, this.onDblclick); + } + + removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove); + removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd); + + if (options.responsive) { + removeListener(window, EVENT_RESIZE, this.onResize); + } + }, +}; |