{
  "entrypoint": "@nvidia-elements/core/internal/controllers/gesture.controller.examples.json",
  "items": [
    {
      "id": "internal-controllers-gesture.controller-drag",
      "name": "Drag",
      "template": "<gesture-controller-demo-element></gesture-controller-demo-element>\n<script type=\"module\">\n  const element = document.querySelector(\"gesture-controller-demo-element\");\n  let x = 0;\n  let y = 0;\n  element.addEventListener(\"nve-gesture-input\", ({ detail }) => {\n    if (detail.kind === \"pointerdown\" && detail.claim({ kind: \"drag\" })) element.dataset.active = \"\";\n    if (detail.kind === \"pointerend\") delete element.dataset.active;\n  });\n  element.addEventListener(\"nve-gesture\", ({ detail }) => {\n    if (detail.kind !== \"drag\") return;\n    x += detail.movementX;\n    y += detail.movementY;\n    element.style.translate = x + \"px \" + y + \"px\";\n  });\n</script>\n",
      "summary": "Synchronously claimed pointer input produces drag gestures while preserving start and end input. Use this pattern when a control owns a pointer sequence.",
      "description": "",
      "composition": false,
      "tags": [
        "test-case"
      ]
    }
  ]
}