diff --git a/app/package-lock.json b/app/package-lock.json index 86466c4be77cfc68ad3e47dcd8df3edeabb201ac..1a49c77dafb46d8f45240741c6ba5984f67a53ae 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -1,6 +1,6 @@ { "name": "nodenogg.in", - "version": "0.1.22", + "version": "0.1.24", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1761,6 +1761,11 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, + "@panzoom/panzoom": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@panzoom/panzoom/-/panzoom-4.3.2.tgz", + "integrity": "sha512-6D4UDsYXowzMJ/1XSbylRj9BGhCR7mQQ5m/s6MiKx11ThLcEiU4kgq59vhS8+RnOGA789FcdmGvK1/hIxyRD+w==" + }, "@pixi/accessibility": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/@pixi/accessibility/-/accessibility-5.3.3.tgz", diff --git a/app/package.json b/app/package.json index b7a3ae0f8a461ceea95d601a7e92a343c69b2290..6673c7aa5bc88d4d6ea98a2f651304c90c1e380b 100644 --- a/app/package.json +++ b/app/package.json @@ -9,6 +9,7 @@ "lint:fix": "vue-cli-service lint --fix" }, "dependencies": { + "@panzoom/panzoom": "^4.3.2", "core-js": "^3.6.5", "file-loader": "^6.1.0", "ipfs": "^0.50.0", diff --git a/app/src/components/PanzoomLayer.vue b/app/src/components/PanzoomLayer.vue new file mode 100644 index 0000000000000000000000000000000000000000..1a01c5ed32da21c29a9dfb0ff004acd86be6bf60 --- /dev/null +++ b/app/src/components/PanzoomLayer.vue @@ -0,0 +1,45 @@ +<template> + <div> + <div v-if="mode == 'move'" style="overflow: hidden"> + <div id="panzoom-element"> + <slot /> + </div> + </div> + + <div v-else> + <div> + <slot /> + </div> + </div> + </div> +</template> +<script> +import Panzoom from '@panzoom/panzoom' +import { mapState } from 'vuex' + +export default { + props: { + options: { type: Object, default: () => {} }, + }, + + created() {}, + + // FIX: ONLY FIRES ONCE + mounted() { + this.panzoom = Panzoom(document.getElementById('panzoom-element')) + document.addEventListener('wheel', this.panzoom.zoomWithWheel) + document.addEventListener('wheel', function (event) { + if (!event.shiftKey) return + this.panzoom.zoomWithWheel(event) + }) + }, + computed: { + ...mapState({ + mode: (state) => state.ui.mode, + }), + }, + methods: {}, +} + +// This demo binds to shift + wheel +</script> diff --git a/app/src/views/Home.vue b/app/src/views/Home.vue index 479be7784467490a3cca4b81a1d8a7abfd49594c..1d5d53482d83a4e50dd686fd61da4dab05d67bb7 100644 --- a/app/src/views/Home.vue +++ b/app/src/views/Home.vue @@ -28,6 +28,7 @@ <div class="online" v-else> <div ref="container" class="wrapper" v-bind:style="modeContainerStyle"> + <!-- <PanzoomLayer> --> <PanZoomContainer v-bind:width="width" v-bind:height="height" @@ -75,6 +76,7 @@ <ConnectionsLayer /> </div> <ScribbleLayer v-bind:drawready="drawready"></ScribbleLayer> + <!-- </PanzoomLayer> --> </PanZoomContainer> <!-- <ToolBar /> --> <ModeToolbar @@ -102,6 +104,7 @@ import PanZoomContainer from '@/experimental/PanZoomContainer' import ConnectionsLayer from '@/components/ConnectionsLayer' import NodesLayer from '@/components/NodesLayer' import OffLine from '@/components/OffLine' +// import PanzoomLayer from '@/components/PanzoomLayer' // import ToolBar from '@/components/ToolBar' import ScribbleLayer from '@/components/ScribbleLayer' import UploadLayer from '@/components/UploadLayer' @@ -220,6 +223,7 @@ export default { components: { ModeToolbar, ViewToolbar, + //PanzoomLayer, PanZoomContainer, // SelectionLayer, NodesLayer,