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

Update interface.js

Browse files
Files changed (1) hide show
  1. interface.js +37 -18
interface.js CHANGED
@@ -120,6 +120,33 @@ const currentScriptTag = document.currentScript;
120
  const tooltipImage = document.getElementById('point-tooltip-image');
121
  const tooltipCloseBtn = document.getElementById('point-tooltip-close');
122
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  // Device detection for help text
124
  const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
125
  const isMobile = isIOS || /Android/i.test(navigator.userAgent);
@@ -139,11 +166,6 @@ const currentScriptTag = document.currentScript;
139
 
140
  viewerContainerElem.style.display = 'block';
141
 
142
- // Utility: hide tooltip
143
- function hideTooltip() {
144
- tooltipDiv.style.display = 'none';
145
- }
146
-
147
  // ─── 7. Dynamically load viewer.js ─────────────────────────────────────────
148
  let viewerModule;
149
  try {
@@ -158,23 +180,16 @@ const currentScriptTag = document.currentScript;
158
  const canvasId = 'canvas-' + instanceId;
159
  const canvasEl = document.getElementById(canvasId);
160
  if (canvasEl) {
161
- // When pointer down, listen for the first move (mouse or touch) to hide the tooltip
162
- function onPointerDown() {
163
- const onMove = () => {
164
- hideTooltip();
165
- canvasEl.removeEventListener('mousemove', onMove);
166
- canvasEl.removeEventListener('touchmove', onMove);
167
- };
168
- canvasEl.addEventListener('mousemove', onMove, { once: true });
169
- canvasEl.addEventListener('touchmove', onMove, { once: true });
170
- }
171
- canvasEl.addEventListener('mousedown', onPointerDown, { once: true });
172
- canvasEl.addEventListener('touchstart', onPointerDown, { once: true });
173
-
174
  // Hide on any wheel event (zoom)
175
  canvasEl.addEventListener('wheel', () => {
176
  hideTooltip();
177
  }, { passive: true });
 
 
 
 
 
 
178
  }
179
 
180
  // ─── 8. Fullscreen / state-preservation logic ───────────────────────────────
@@ -347,6 +362,7 @@ const currentScriptTag = document.currentScript;
347
  // ─── 9. Hook up event listeners ───────────────────────────────────────────
348
 
349
  fullscreenToggle.addEventListener('click', () => {
 
350
  if (!isFullscreen) {
351
  enterFullscreen();
352
  } else {
@@ -392,11 +408,13 @@ const currentScriptTag = document.currentScript;
392
  });
393
 
394
  helpToggle.addEventListener('click', (e) => {
 
395
  e.stopPropagation();
396
  menuContent.style.display = (menuContent.style.display === 'block') ? 'none' : 'block';
397
  });
398
 
399
  resetCameraBtn.addEventListener('click', () => {
 
400
  if (viewerModule.resetViewerCamera) {
401
  viewerModule.resetViewerCamera();
402
  }
@@ -408,6 +426,7 @@ const currentScriptTag = document.currentScript;
408
  pointsToggleBtn.style.opacity = '0.5';
409
  }
410
  pointsToggleBtn.addEventListener('click', () => {
 
411
  pointsVisible = !pointsVisible;
412
  pointsToggleBtn.style.opacity = pointsVisible ? '1' : '0.5';
413
  document.dispatchEvent(new CustomEvent('toggle-points', { detail: { visible: pointsVisible } }));
 
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
151
  const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
152
  const isMobile = isIOS || /Android/i.test(navigator.userAgent);
 
166
 
167
  viewerContainerElem.style.display = 'block';
168
 
 
 
 
 
 
169
  // ─── 7. Dynamically load viewer.js ─────────────────────────────────────────
170
  let viewerModule;
171
  try {
 
180
  const canvasId = 'canvas-' + instanceId;
181
  const canvasEl = document.getElementById(canvasId);
182
  if (canvasEl) {
 
 
 
 
 
 
 
 
 
 
 
 
 
183
  // Hide on any wheel event (zoom)
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 ───────────────────────────────
 
362
  // ─── 9. Hook up event listeners ───────────────────────────────────────────
363
 
364
  fullscreenToggle.addEventListener('click', () => {
365
+ hideTooltip();
366
  if (!isFullscreen) {
367
  enterFullscreen();
368
  } else {
 
408
  });
409
 
410
  helpToggle.addEventListener('click', (e) => {
411
+ hideTooltip();
412
  e.stopPropagation();
413
  menuContent.style.display = (menuContent.style.display === 'block') ? 'none' : 'block';
414
  });
415
 
416
  resetCameraBtn.addEventListener('click', () => {
417
+ hideTooltip();
418
  if (viewerModule.resetViewerCamera) {
419
  viewerModule.resetViewerCamera();
420
  }
 
426
  pointsToggleBtn.style.opacity = '0.5';
427
  }
428
  pointsToggleBtn.addEventListener('click', () => {
429
+ hideTooltip();
430
  pointsVisible = !pointsVisible;
431
  pointsToggleBtn.style.opacity = pointsVisible ? '1' : '0.5';
432
  document.dispatchEvent(new CustomEvent('toggle-points', { detail: { visible: pointsVisible } }));