dom-pan-zoom 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +144 -0
- package/dist/dom-pan-zoom.umd.js +777 -0
- package/dist/dom-pan-zoom.umd.js.map +1 -0
- package/dist/dom-pan-zoom.umd.min.js +1 -0
- package/dist/index.cjs +771 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +769 -0
- package/dist/index.js.map +1 -0
- package/package.json +27 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/core/domPanZoom.js"],"sourcesContent":["export default class domPanZoom {\n constructor(options = {}) {\n const defaultOptions = {\n // The wrapper and container element\n // You can use an element object or a selector string\n wrapperElement: null,\n panZoomElement: null,\n\n // Start with a centered position\n // This option overrides options initalPanX and initialPanY\n center: true,\n\n // Setting the option bounds to 'contain' or 'cover' limits the boundries of the panZoomElement to the wrapperElement\n // This works similar to the CSS property 'background-size: contain / cover'\n // Disable bound by setting this option to 'false'\n // This option might effect the option minZoom\n bounds: 'contain',\n\n // Minimum and maximum zoom\n minZoom: 0.1,\n maxZoom: 10,\n\n // How many percent to pan by default with the panning methods panLeft, panRight, panUp and panDown\n panStep: 10,\n\n // How many percent to zoom by default with the methods zoomIn and zoomOut\n zoomStep: 50,\n\n // The speed in which to zoom when using mouse wheel\n zoomSpeedWheel: 1,\n\n // The speed in which to zoom when pinching with touch gestures\n // TODO this seems to not work correctly\n zoomSpeedPinch: 4,\n\n // Initial zoom\n // Use any zoom value between the options minZoom and maxZoom\n // Use 'cover' or 'contain' to limit the panZoomElement bounds to the wrapperElement\n initialZoom: 'contain',\n\n // Initial pan in percent\n // The option 'center' has to be 'false' for initial panning to work\n initialPanX: 0,\n initialPanY: 0,\n\n // Prefer scrolling the page to zooming with mousewheel or panning with touch event\n // TODO how does google do it with tough events (use two fingers) ??\n preferPageScroll: true,\n\n // The text to show when the option preferPageScroll is enabled\n preferPageScrollText: {\n // TODO Differentiate between mac and windows\n },\n\n // Transition speed for panning and zooming in milliseconds\n // Higher values are slower\n transitionSpeed: 400,\n\n // Events\n onInit: null,\n onChange: null,\n onZoom: null,\n onPan: null\n };\n\n this.options = Object.assign({}, defaultOptions, options);\n\n this.init();\n }\n\n // Initialize\n init() {\n // Init containers\n const wrapper = this.getWrapper();\n const container = this.getContainer();\n\n // Add styles\n wrapper.style.cursor = 'grab';\n wrapper.style.overflow = 'hidden';\n\n // Cache\n this.evCache = [];\n this.pinchDiffCache = 0;\n this.pinchMoveCache = null;\n\n // Attach events\n this.attachEvents();\n\n // Adjust minZoom for option bounds\n if (this.options.bounds) {\n const maxWidth = wrapper.clientWidth;\n const maxHeight = wrapper.clientHeight;\n\n const panZoomWidth = container.clientWidth;\n const panZoomHeight = container.clientHeight;\n\n const minZoomX = maxWidth / panZoomWidth;\n const minZoomY = maxHeight / panZoomHeight;\n\n if (this.options.bounds == 'cover') {\n this.options.minZoom = Math.max(\n this.options.minZoom,\n minZoomX,\n minZoomY\n );\n } else {\n this.options.minZoom = Math.max(\n this.options.minZoom,\n Math.min(minZoomX, minZoomY)\n );\n }\n }\n\n // Set initial zoom\n this.zoom = this.sanitizeZoom(this.options.initialZoom);\n\n // Set initial pan\n this.x = this.options.initialPanX;\n this.y = this.options.initialPanY;\n\n // Set position\n if (this.options.center) {\n this.center(true);\n } else {\n this.panTo(this.options.initialPanX, this.options.initialPanY, true);\n }\n\n // Trigger event\n this.fireEvent('onInit', this.getPosition());\n }\n\n // Fire an event from the options\n fireEvent(event, pass) {\n this.options[event] && this.options[event].bind(this)(pass);\n }\n\n // Attach events\n attachEvents() {\n // Event while mouse moving\n const setPositionEvent = (ev) => {\n if (this.blockPan == true) {\n return;\n }\n\n let event = ev;\n if (ev.touches && ev.touches.length) {\n event = ev.touches[0];\n }\n\n let movementX = 0;\n let movementY = 0;\n\n if (this.previousEvent) {\n movementX = event.pageX - this.previousEvent.pageX;\n movementY = event.pageY - this.previousEvent.pageY;\n }\n\n this.x += movementX;\n this.y += movementY;\n this.setPosition(true);\n\n this.previousEvent = event;\n\n // Trigger event\n this.fireEvent('onPan', this.getPosition());\n };\n\n // Mouse down or touchstart event\n const mouseDownTouchStartEvent = (ev) => {\n ev.preventDefault();\n document.body.style.cursor = 'grabbing';\n this.getWrapper().style.cursor = 'grabbing';\n document.addEventListener('mousemove', setPositionEvent, {\n passive: true\n });\n document.addEventListener('touchmove', setPositionEvent, {\n passive: true\n });\n };\n\n this.getWrapper().addEventListener('mousedown', mouseDownTouchStartEvent, {\n passive: false\n });\n\n this.getWrapper().addEventListener('touchstart', mouseDownTouchStartEvent, {\n passive: false\n });\n\n const mouseUpTouchEndEvent = () => {\n this.previousEvent = null;\n document.body.style.cursor = null;\n this.getWrapper().style.cursor = 'grab';\n document.removeEventListener('mousemove', setPositionEvent, {\n passive: true\n });\n document.removeEventListener('touchmove', setPositionEvent, {\n passive: true\n });\n };\n\n document.addEventListener('mouseup', mouseUpTouchEndEvent, {\n passive: true\n });\n document.addEventListener('touchend', mouseUpTouchEndEvent, {\n passive: true\n });\n\n // Mouse wheel events\n const mouseWheelEvent = (ev) => {\n ev.preventDefault();\n\n // Delta\n let delta = ev.deltaY;\n if (ev.deltaMode > 0) {\n delta *= 100;\n }\n\n // Speed\n const speed = this.options.zoomSpeedWheel;\n\n // Adjust speed (https://github.com/anvaka/panzoom/blob/master/index.js#L884)\n const sign = Math.sign(delta);\n const deltaAdjustedSpeed = 1 - sign * Math.min(0.25, Math.abs((speed * delta) / 128));\n const nextZoom = this.sanitizeZoom(this.zoom * deltaAdjustedSpeed);\n\n // Get offset to center, then adjust\n const offsetToCenter = this.getEventOffsetToCenter(ev);\n this.adjustPositionByZoom(nextZoom, offsetToCenter.x, offsetToCenter.y);\n\n // Update position\n this.zoom = nextZoom;\n this.setPosition(true);\n\n // Trigger event\n this.fireEvent('onZoom', this.getPosition());\n };\n\n this.getWrapper().addEventListener('wheel', mouseWheelEvent, {\n passive: false\n });\n\n // Pinch events\n const pointerDownEvent = (ev) => {\n this.evCache.push(ev);\n this.zoomCache = this.zoom;\n this.xCache = this.x;\n this.yCache = this.y;\n\n if (this.evCache.length == 2) {\n this.blockPan = true;\n this.pinchDiffCache = this.getTouchEventsDistance(\n this.evCache[0],\n this.evCache[1]\n );\n this.touchEventsCenterCache = this.getTouchEventsCenter(\n this.evCache[0],\n this.evCache[1]\n );\n }\n };\n\n this.getWrapper().addEventListener('pointerdown', pointerDownEvent, {\n passive: false\n });\n\n const pointerMoveEvent = (ev) => {\n for (let i = 0; i < this.evCache.length; i++) {\n if (ev.pointerId == this.evCache[i].pointerId) {\n this.evCache[i] = ev;\n break;\n }\n }\n\n // Proceed if two touch gestures detected\n if (this.evCache.length == 2) {\n // Calculate distance between fingers\n let pinchDiff = this.getTouchEventsDistance(\n this.evCache[0],\n this.evCache[1]\n );\n pinchDiff -= this.pinchDiffCache;\n\n let pinchDiffPercent = pinchDiff / this.getContainer().clientWidth;\n pinchDiffPercent *= this.options.zoomSpeedPinch;\n pinchDiffPercent += 1;\n\n const nextZoom = this.sanitizeZoom(this.zoomCache * pinchDiffPercent);\n\n // Get offset to center, then adjust\n const touchEventsCenter = this.getTouchEventsCenter(\n this.evCache[0],\n this.evCache[1]\n );\n const offsetToCenter = this.getEventOffsetToCenter({\n target: this.evCache[0].target,\n clientX: touchEventsCenter.clientX,\n clientY: touchEventsCenter.clientY\n });\n this.adjustPositionByZoom(nextZoom, offsetToCenter.x, offsetToCenter.y);\n\n // Adjust position when moving while pinching\n const touchEventsCenterDiff = {\n x: touchEventsCenter.clientX - this.touchEventsCenterCache.clientX,\n y: touchEventsCenter.clientY - this.touchEventsCenterCache.clientY\n };\n this.x = this.xCache + touchEventsCenterDiff.x;\n this.y = this.yCache + touchEventsCenterDiff.y;\n\n // Update position\n this.zoom = nextZoom;\n this.setPosition(true);\n\n // Trigger events\n this.fireEvent('onZoom', this.getPosition());\n this.fireEvent('onPan', this.getPosition());\n }\n };\n\n this.getWrapper().addEventListener('pointermove', pointerMoveEvent, {\n passive: false\n });\n\n const pointerUpEvent = (ev) => {\n for (var i = 0; i < this.evCache.length; i++) {\n if (this.evCache[i].pointerId == ev.pointerId) {\n this.evCache.splice(i, 1);\n break;\n }\n }\n\n if (this.evCache.length < 2) {\n this.blockPan = false;\n }\n };\n\n ['pointerup', 'pointercancel', 'pointerout', 'pointerleave'].forEach(\n (event) => {\n this.getWrapper().addEventListener(event, pointerUpEvent, {\n passive: false\n });\n }\n );\n }\n\n // https://stackoverflow.com/questions/8389156/what-substitute-should-we-use-for-layerx-layery-since-they-are-deprecated-in-web\n getEventOffsetToParent(ev) {\n let el = ev.target;\n let x = 0;\n let y = 0;\n\n while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {\n x += el.offsetLeft - el.scrollLeft;\n y += el.offsetTop - el.scrollTop;\n el = el.offsetParent;\n }\n\n x = ev.clientX - x;\n y = ev.clientY - y;\n\n return { x: x, y: y };\n }\n\n // Get the event offset to the center\n getEventOffsetToCenter(ev) {\n const wrapper = this.getWrapper();\n const container = this.getContainer();\n const diffX = wrapper.clientWidth - container.clientWidth;\n const diffY = wrapper.clientHeight - container.clientHeight;\n const centerX = diffX * 0.5;\n const centerY = diffY * 0.5;\n\n const offsetToCenter = {\n x: 0,\n y: 0\n };\n\n if (ev) {\n const offsetToParent = this.getEventOffsetToParent(ev);\n offsetToCenter.x =\n (wrapper.clientWidth / 2 - offsetToParent.x - window.scrollX) * -1;\n offsetToCenter.y =\n (wrapper.clientHeight / 2 - offsetToParent.y - window.scrollY) * -1;\n }\n\n const offsetX = this.x - centerX - offsetToCenter.x;\n const offsetY = this.y - centerY - offsetToCenter.y;\n\n return {\n x: offsetX,\n y: offsetY\n };\n }\n\n // Get the distance between two touch events\n getTouchEventsDistance(ev1, ev2) {\n return Math.abs(Math.hypot(ev1.pageX - ev1.pageX, ev1.pageY - ev2.pageY));\n }\n\n // Get the center point between two touch events\n getTouchEventsCenter(ev1, ev2) {\n return {\n pageX: (ev1.pageX + ev2.pageX) / 2,\n pageY: (ev1.pageY + ev2.pageX) / 2,\n clientX: (ev1.clientX + ev2.clientX) / 2,\n clientY: (ev1.clientY + ev2.clientY) / 2\n };\n }\n\n // Get current position values\n getPosition() {\n return {\n zoom: this.zoom,\n x: this.x,\n y: this.y\n };\n }\n\n // Initialize\n setPosition(instant) {\n this.transition(!instant);\n\n // Fit to bounds\n if (this.options.bounds) {\n const wrapper = this.getWrapper();\n const container = this.getContainer();\n const wrapperWidth = wrapper.clientWidth;\n const wrapperHeight = wrapper.clientHeight;\n const containerWidth = container.clientWidth;\n const containerHeight = container.clientHeight;\n const containerZoomWidth = containerWidth * this.zoom;\n const containerZoomHeight = containerHeight * this.zoom;\n\n const upperOffsetX = (containerWidth / 2) * (this.zoom - 1);\n const lowerOffsetX = upperOffsetX * -1 + wrapperWidth - containerWidth;\n\n if (containerZoomWidth < wrapperWidth) {\n this.x < upperOffsetX && (this.x = upperOffsetX);\n this.x > lowerOffsetX && (this.x = lowerOffsetX);\n } else {\n this.x = Math.min(this.x, upperOffsetX);\n this.x = Math.max(this.x, lowerOffsetX);\n }\n\n const upperOffsetY = (containerHeight / 2) * (this.zoom - 1);\n const lowerOffsetY = upperOffsetY * -1 + wrapperHeight - containerHeight;\n\n if (containerZoomHeight < wrapperHeight) {\n this.y < upperOffsetY && (this.y = upperOffsetY);\n this.y > lowerOffsetY && (this.y = lowerOffsetY);\n } else {\n this.y = Math.min(this.y, upperOffsetY);\n this.y = Math.max(this.y, lowerOffsetY);\n }\n }\n\n // Set position\n this.getContainer().style.transform =\n 'matrix(' +\n this.zoom +\n ', 0, 0, ' +\n this.zoom +\n ', ' +\n this.x +\n ', ' +\n this.y +\n ')';\n\n // Trigger event\n this.fireEvent('onChange', this.getPosition());\n\n // Return instance\n return this;\n }\n\n // Sanitize zoom value\n sanitizeZoom(zoom) {\n // Get values for 'cover' and 'contain'\n if (zoom == 'cover' || zoom == 'contain') {\n const wrapper = this.getWrapper();\n const container = this.getContainer();\n\n const maxWidth = wrapper.clientWidth;\n const maxHeight = wrapper.clientHeight;\n\n const panZoomWidth = container.clientWidth;\n const panZoomHeight = container.clientHeight;\n\n const minZoomX = maxWidth / panZoomWidth;\n const minZoomY = maxHeight / panZoomHeight;\n\n // TODO is first cebter OK?\n this.center(true, true);\n\n if (zoom == 'cover') {\n zoom = Math.max(minZoomX, minZoomY);\n } else {\n zoom = Math.min(minZoomX, minZoomY);\n }\n }\n\n // Adjust for minZoom\n if (zoom < this.options.minZoom) {\n zoom = this.options.minZoom;\n }\n\n // Adjust for maxZoom\n if (zoom > this.options.maxZoom) {\n zoom = this.options.maxZoom;\n }\n\n return zoom;\n }\n\n // Getter for zoom\n getZoom() {\n return this.zoom;\n }\n\n // Zoom to\n zoomTo(zoom, instant) {\n // Sanitize zoom\n zoom = this.sanitizeZoom(zoom);\n\n // Get offset to center, then adjust\n const offsetToCenter = this.getEventOffsetToCenter();\n this.adjustPositionByZoom(zoom, offsetToCenter.x, offsetToCenter.y);\n\n // Set new zoom\n this.zoom = zoom;\n this.setPosition(instant);\n\n // Trigger event\n this.fireEvent('onZoom', this.getPosition());\n\n // Return instance\n return this;\n }\n\n // Zoom in\n zoomIn(step, instant) {\n return this.zoomInOut(step, instant, 'in');\n }\n\n // Zoom out\n zoomOut(step, instant) {\n return this.zoomInOut(step, instant, 'out');\n }\n\n // Zoom in or out\n zoomInOut(step, instant, direction) {\n // Step is an optional attribute\n if (step === true || step === false) {\n instant = step;\n step = null;\n }\n step = step || this.options.zoomStep;\n\n // Calculate nextZoom\n const currentZoom = this.zoom;\n const zoomStep = (100 + step) / 100;\n if (direction === 'out') {\n zoomStep = 1 / zoomStep;\n }\n const nextZoom = currentZoom * zoomStep;\n\n // Update zoom\n return this.zoomTo(nextZoom, instant);\n }\n\n // Adjust position when zooming\n adjustPositionByZoom(zoom, x, y) {\n const currentZoom = this.zoom;\n const zoomGrowth = (zoom - currentZoom) / currentZoom;\n\n const container = this.getContainer();\n const maxOffsetX = container.clientWidth * 0.5 * currentZoom;\n const maxOffsetY = container.clientHeight * 0.5 * currentZoom;\n\n x > maxOffsetX && (x = Math.min(x, maxOffsetX));\n x < maxOffsetX * -1 && (x = Math.max(x, maxOffsetX * -1));\n\n y > maxOffsetY && (y = Math.min(y, maxOffsetY));\n y < maxOffsetY * -1 && (y = Math.max(y, maxOffsetY * -1));\n\n this.x += x * zoomGrowth;\n this.y += y * zoomGrowth;\n }\n\n // Center container within wrapper\n center(instant, ignorePosition) {\n return this.panTo(50, 50, instant, ignorePosition);\n }\n\n // Getters for pan\n getPan(pixelValues) {\n return {\n x: this.getPanX(pixelValues),\n y: this.getPanY(pixelValues)\n };\n }\n\n getPanX(pixelValues) {\n const wrapper = this.getWrapper();\n const container = this.getContainer();\n let panX = wrapper.clientWidth * 0.5 + this.x * -1;\n panX += (this.zoom - 1) * (container.clientWidth * 0.5);\n const percentX = (panX / (container.clientWidth * this.zoom)) * 100;\n return pixelValues ? panX : percentX;\n }\n\n getPanY(pixelValues) {\n const wrapper = this.getWrapper();\n const container = this.getContainer();\n let panY = wrapper.clientHeight * 0.5 + this.y * -1;\n panY += (this.zoom - 1) * (container.clientHeight * 0.5);\n const percentY = (panY / (container.clientHeight * this.zoom)) * 100;\n return pixelValues ? panY : percentY;\n }\n\n // Pan to position\n panTo(x, y, instant, ignorePosition) {\n const wrapper = this.getWrapper();\n const container = this.getContainer();\n\n let panX = ((container.clientWidth * this.zoom * x) / 100) * -1;\n panX += (this.zoom - 1) * (container.clientWidth * 0.5);\n panX += wrapper.clientWidth * 0.5;\n\n let panY = ((container.clientHeight * this.zoom * y) / 100) * -1;\n panY += (this.zoom - 1) * (container.clientHeight * 0.5);\n panY += wrapper.clientHeight * 0.5;\n\n this.x = panX;\n this.y = panY;\n\n // Update position\n if (!ignorePosition) {\n this.setPosition(instant);\n }\n\n // Trigger event\n this.fireEvent('onPan', this.getPosition());\n\n // Return instance\n return this;\n }\n\n panLeft(step, instant) {\n return this.pan(step, instant, 'left');\n }\n\n panRight(step, instant) {\n return this.pan(step, instant, 'right');\n }\n\n panUp(step, instant) {\n return this.pan(step, instant, 'up');\n }\n\n panDown(step, instant) {\n return this.pan(step, instant, 'down');\n }\n\n pan(step, instant, direction) {\n if (step === true || step === false) {\n instant = step;\n step = null;\n }\n step = step || this.options.panStep;\n\n const container = this.getContainer();\n const panWidth = ((container.clientWidth * step) / 100) * this.zoom;\n const panHeight = ((container.clientWidth * step) / 100) * this.zoom;\n\n direction === 'left' && (this.x += panWidth * -1);\n direction === 'right' && (this.x += panWidth);\n direction === 'up' && (this.y += panHeight * -1);\n direction === 'down' && (this.y += panHeight);\n\n // Update position\n this.setPosition(instant);\n\n // Trigger event\n this.fireEvent('onPan', this.getPosition());\n\n // Return instance\n return this;\n }\n\n // Get the wrapper element\n getWrapper() {\n // Return element if it is cached\n if (this.wrapperElement) {\n return this.wrapperElement;\n }\n\n // Abort if option is empty\n if (!this.options.wrapperElement) {\n console.error('The option wrapperElement is required.');\n return null;\n }\n\n // Find the element if selector provided\n if (typeof this.options.wrapperElement === 'string') {\n this.options.wrapperElement = document.querySelector(\n this.options.wrapperElement\n );\n }\n\n // Cache element if valid\n if (\n this.options.wrapperElement &&\n this.options.wrapperElement instanceof Element\n ) {\n this.wrapperElement = this.options.wrapperElement;\n return this.options.wrapperElement;\n }\n\n console.error(\n 'The option wrapperElement needs to be a valid selector string or an instance of Element.'\n );\n return null;\n }\n\n // Get the container element\n getContainer() {\n // Return element if it is cached\n if (this.containerElement) {\n return this.containerElement;\n }\n\n // Abort if option is empty\n if (!this.options.panZoomElement) {\n console.error('The option panZoomElement is required.');\n return null;\n }\n\n // Find the element if selector provided\n if (typeof this.options.panZoomElement === 'string') {\n this.options.panZoomElement = document.querySelector(\n this.options.panZoomElement\n );\n }\n\n // Cache element if valid\n if (\n this.options.panZoomElement &&\n this.options.panZoomElement instanceof Element\n ) {\n this.containerElement = this.options.panZoomElement;\n return this.options.panZoomElement;\n }\n\n console.error(\n 'The option panZoomElement needs to be a valid selector string or an instance of Element.'\n );\n return null;\n }\n\n // Enable or disable transitions\n transition(enabled) {\n this.getContainer().style.transition = enabled\n ? 'transform ' + this.options.transitionSpeed + 'ms'\n : null;\n }\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dom-pan-zoom",
|
|
3
|
+
"description": "A lightweight library providing mobile friendly panning and zooming to any HTML DOM element.",
|
|
4
|
+
"version": "0.1.1",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.cjs"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "rollup -c",
|
|
19
|
+
"watch": "rollup -c -w",
|
|
20
|
+
"prepublishOnly": "npm run build && node test/assets.js"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
24
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
25
|
+
"rollup": "^4.54.0"
|
|
26
|
+
}
|
|
27
|
+
}
|