From 5604903d183729271f124911ed898fe32e301681 Mon Sep 17 00:00:00 2001
From: Adam Procter <adamprocter@researchnot.es>
Date: Thu, 1 Oct 2020 10:47:51 +0100
Subject: [PATCH] trying new panzoom

not included yet (need to rebranch)
---
 app/package-lock.json               |  7 ++++-
 app/package.json                    |  1 +
 app/src/components/PanzoomLayer.vue | 45 +++++++++++++++++++++++++++++
 app/src/views/Home.vue              |  4 +++
 4 files changed, 56 insertions(+), 1 deletion(-)
 create mode 100644 app/src/components/PanzoomLayer.vue

diff --git a/app/package-lock.json b/app/package-lock.json
index 86466c4..1a49c77 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 b7a3ae0..6673c7a 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 0000000..1a01c5e
--- /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 479be77..1d5d534 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,
-- 
GitLab