Hello, World!

Generated Image
<script>
  document.addEventListener('DOMContentLoaded', function() {
    const imageElement = document.getElementById('generated-image');
    const moveButton = document.getElementById('move-button');
    const rotateButton = document.getElementById('rotate-button');
    const scaleButton = document.getElementById('scale-button');

    let mode = 'move';
    let isDragging = false;
    let initialX, initialY, offsetX, offsetY;

    moveButton.addEventListener('click', () => {
      mode = 'move';
      imageElement.style.cursor = 'move';
    });

    rotateButton.addEventListener('click', () => {
      mode = 'rotate';
      imageElement.style.cursor = 'crosshair';
    });

    scaleButton.addEventListener('click', () => {
      mode = 'scale';
      imageElement.style.cursor = 'nesw-resize';
    });

    imageElement.addEventListener('mousedown', (event) => {
      isDragging = true;
      initialX = event.clientX;
      initialY = event.clientY;
      offsetX = 0;
      offsetY = 0;
    });

    imageElement.addEventListener('mousemove', (event) => {
      if (isDragging) {
        if (mode === 'move') {
          offsetX = event.clientX - initialX;
          offsetY = event.clientY - initialY;
          imageElement.style.transform = `translate(${offsetX}px, ${offsetY}px)`;
        } else if (mode === 'rotate') {
          const angle = Math.atan2(event.clientY - initialY, event.clientX - initialX);
          imageElement.style.transform = `translate(${offsetX}px, ${offsetY}px) rotate(${angle}rad)`;
        } else if (mode === 'scale') {
          const distance = Math.sqrt((event.clientX - initialX) ** 2 + (event.clientY - initialY) ** 2);
          const scale = 1 + distance * 0.01; // Adjust scale factor as needed
          imageElement.style.transform = `translate(${offsetX}px, ${offsetY}px) scale(${scale})`;
        }
      }
    });

    imageElement.addEventListener('mouseup', () => {
      isDragging = false;
    });

    imageElement.addEventListener('mouseleave', () => {
      if (isDragging) {
        isDragging = false;
        // Perform any necessary cleanup or handling when dragging leaves the image area
      }
    });
  });
</script>