{
  "id": 19003392,
  "title": "Declarative Dragging",
  "url": "https://urgent.news/2026/11/04/declarative-dragging",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-11-04T17:05:07.000Z",
  "source": {
    "name": "Hacker News",
    "slug": "hacker-news",
    "url": "https://declarative-dragging.github.io/"
  },
  "original_language": "en",
  "account": "Declarative dragging simplifies the process of making diagrams draggable. Instead of writing complex drag-and-drop code involving geometry, feedback, and animations, users specify which future states of the application the draggable element should lead to. The system speculatively renders these states to determine where the element can go, then combines these possibilities into a smooth, responsive drag-and-drop interaction.\n\nThe goal is to allow users to work within their familiar semantic contexts while creating rich tactile interactions within the digital realm. Dragology, a library developed for SVG interfaces on the web, implements this concept. It enables simple model-driven drag-and-drop behaviors to be composed into more complex ones and layered with features like floating, snapping, and transitions.\n\nThe concept originated from a desire to make a math game more interactive. Initially, the fundamental mechanic of selecting transformations from a menu lacked the tactile feel the creator desired. After a chance encounter with Andrew, who shared ideas about model-driven dragging, the concept took shape. A friend, Elliot, was experimenting with order-preserving maps between trees and drew a structure that inspired the creator to implement a library, Dragology, to bring declarative dragging to existing applications and restart work on a math game concept.",
  "summary": null,
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}