Advertisement
nrzmalik

Storyline Caption Container Move

Mar 22nd, 2024 (edited)
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. const addCssToHead = (cssRules) => {
  2. const styleElement = document.createElement('style');
  3. styleElement.textContent = cssRules;
  4. document.head.appendChild(styleElement);
  5. };
  6.  
  7. const css = `
  8. .caption-container {
  9. pointer-events: auto !important;
  10. }
  11. .caption{
  12. cursor: grab;
  13. }
  14. `;
  15. addCssToHead(css);
  16.  
  17. document.querySelectorAll('.caption-container').forEach(caption => {
  18. let offsetX, offsetY, posX, posY;
  19.  
  20. const handleMouseMove = (e) => {
  21. e.preventDefault();
  22. let clientX, clientY;
  23. if (e.clientX) {
  24. clientX = e.clientX;
  25. clientY = e.clientY;
  26. } else if (e.touches && e.touches.length === 1) {
  27. clientX = e.touches[0].clientX;
  28. clientY = e.touches[0].clientY;
  29. }
  30. const dx = clientX - offsetX;
  31. const dy = clientY - offsetY;
  32. caption.style.transform = `translate(${posX + dx}px, ${posY + dy}px)`;
  33. };
  34.  
  35. const handleMouseUp = () => {
  36. document.removeEventListener('mousemove', handleMouseMove);
  37. document.removeEventListener('mouseup', handleMouseUp);
  38. caption.style.cursor = 'grab';
  39. };
  40.  
  41. caption.addEventListener('mousedown', (e) => {
  42. e.preventDefault();
  43. caption.style.cursor = 'grabbing';
  44. offsetX = e.clientX;
  45. offsetY = e.clientY;
  46. const rect = caption.getBoundingClientRect();
  47. posX = rect.left;
  48. posY = rect.top;
  49. document.addEventListener('mousemove', handleMouseMove);
  50. document.addEventListener('mouseup', handleMouseUp);
  51. });
  52.  
  53. // Touch events for mobile devices
  54. caption.addEventListener('touchstart', (e) => {
  55. e.preventDefault();
  56. caption.style.cursor = 'grabbing';
  57. offsetX = e.touches[0].clientX;
  58. offsetY = e.touches[0].clientY;
  59. const rect = caption.getBoundingClientRect();
  60. posX = rect.left;
  61. posY = rect.top;
  62. document.addEventListener('touchmove', handleMouseMove);
  63. document.addEventListener('touchend', handleMouseUp);
  64. });
  65. });
  66.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement