bilca commited on
Commit
1cdd870
Β·
verified Β·
1 Parent(s): ddaff43

Update interface.js

Browse files
Files changed (1) hide show
  1. interface.js +39 -27
interface.js CHANGED
@@ -120,31 +120,24 @@ const currentScriptTag = document.currentScript;
120
  const tooltipImage = document.getElementById('point-tooltip-image');
121
  const tooltipCloseBtn = document.getElementById('point-tooltip-close');
122
 
123
- // Flag and handlers for pointer drag hiding
124
- let dragStarted = false;
125
- let onFirstMove;
 
 
126
 
127
  // Utility: hide tooltip and clean up drag listeners
128
  function hideTooltip() {
129
  tooltipDiv.style.display = 'none';
130
- dragStarted = false;
131
- // Remove any attached move listener
132
- if (viewerContainerElem && onFirstMove) {
133
- viewerContainerElem.removeEventListener('pointermove', onFirstMove);
134
- onFirstMove = null;
 
 
 
135
  }
136
- // Remove pointerdown listener
137
- viewerContainerElem.removeEventListener('pointerdown', onPointerDownOnce);
138
- }
139
-
140
- // One-time pointerdown handler that waits for the next pointermove
141
- function onPointerDownOnce() {
142
- dragStarted = true;
143
- // Attach one-time pointermove to hide
144
- onFirstMove = function() {
145
- hideTooltip();
146
- };
147
- viewerContainerElem.addEventListener('pointermove', onFirstMove, { once: true });
148
  }
149
 
150
  // Device detection for help text
@@ -184,12 +177,6 @@ const currentScriptTag = document.currentScript;
184
  canvasEl.addEventListener('wheel', () => {
185
  hideTooltip();
186
  }, { passive: true });
187
-
188
- // Hide on first drag: attach pointerdown to start detection
189
- canvasEl.addEventListener('pointerdown', () => {
190
- hideTooltip(); // In case pointerdown alone should also hide (covers taps)
191
- viewerContainerElem.addEventListener('pointerdown', onPointerDownOnce, { once: true });
192
- }, { once: true });
193
  }
194
 
195
  // ─── 8. Fullscreen / state-preservation logic ───────────────────────────────
@@ -448,6 +435,32 @@ const currentScriptTag = document.currentScript;
448
  tooltipImage.style.display = 'none';
449
  }
450
  tooltipDiv.style.display = 'flex';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
451
  });
452
 
453
  // Escape key also exits fullscreen
@@ -473,5 +486,4 @@ const currentScriptTag = document.currentScript;
473
  saveCurrentState();
474
  document.dispatchEvent(new CustomEvent('toggle-points', { detail: { visible: pointsVisible } }));
475
  }, 200);
476
-
477
  })();
 
120
  const tooltipImage = document.getElementById('point-tooltip-image');
121
  const tooltipCloseBtn = document.getElementById('point-tooltip-close');
122
 
123
+ // Variables for drag detection
124
+ let startX = 0;
125
+ let startY = 0;
126
+ let onPointerDownDrag = null;
127
+ let onPointerMoveDrag = null;
128
 
129
  // Utility: hide tooltip and clean up drag listeners
130
  function hideTooltip() {
131
  tooltipDiv.style.display = 'none';
132
+ // Remove any leftover listeners
133
+ if (onPointerDownDrag) {
134
+ viewerContainerElem.removeEventListener('pointerdown', onPointerDownDrag);
135
+ onPointerDownDrag = null;
136
+ }
137
+ if (onPointerMoveDrag) {
138
+ viewerContainerElem.removeEventListener('pointermove', onPointerMoveDrag);
139
+ onPointerMoveDrag = null;
140
  }
 
 
 
 
 
 
 
 
 
 
 
 
141
  }
142
 
143
  // Device detection for help text
 
177
  canvasEl.addEventListener('wheel', () => {
178
  hideTooltip();
179
  }, { passive: true });
 
 
 
 
 
 
180
  }
181
 
182
  // ─── 8. Fullscreen / state-preservation logic ───────────────────────────────
 
435
  tooltipImage.style.display = 'none';
436
  }
437
  tooltipDiv.style.display = 'flex';
438
+
439
+ // Clean up any previous drag listeners
440
+ if (onPointerDownDrag) {
441
+ viewerContainerElem.removeEventListener('pointerdown', onPointerDownDrag);
442
+ onPointerDownDrag = null;
443
+ }
444
+ if (onPointerMoveDrag) {
445
+ viewerContainerElem.removeEventListener('pointermove', onPointerMoveDrag);
446
+ onPointerMoveDrag = null;
447
+ }
448
+
449
+ // Attach new pointerdown listener for drag detection
450
+ onPointerDownDrag = function(e) {
451
+ startX = e.clientX;
452
+ startY = e.clientY;
453
+ // On first move that exceeds threshold, hide tooltip
454
+ onPointerMoveDrag = function(ev) {
455
+ const dx = ev.clientX - startX;
456
+ const dy = ev.clientY - startY;
457
+ if (Math.hypot(dx, dy) > 3) {
458
+ hideTooltip();
459
+ }
460
+ };
461
+ viewerContainerElem.addEventListener('pointermove', onPointerMoveDrag, { once: true });
462
+ };
463
+ viewerContainerElem.addEventListener('pointerdown', onPointerDownDrag, { once: true });
464
  });
465
 
466
  // Escape key also exits fullscreen
 
486
  saveCurrentState();
487
  document.dispatchEvent(new CustomEvent('toggle-points', { detail: { visible: pointsVisible } }));
488
  }, 200);
 
489
  })();