{
  "width": 1180,
  "height": 810,
  "elements": {
    "3jxD4CsmUMvS2jyUuBrhBW": {
      "type": "button",
      "buttonType": "script",
      "textColor": {
        "type": "preset",
        "color": "white"
      },
      "backgroundColor": {
        "type": "dynamic",
        "template": "${shared(\"recArm_27_30\", false) ? \"red-600\" : \"red-950\"}"
      },
      "label": "${shared(\"recArm_27_30\", false) ? \"ARMED\" : \"DISARMED\"}",
      "font": {
        "size": 40
      },
      "width": 200,
      "height": 200,
      "x": 490,
      "y": 305,
      "zIndex": 10,
      "scriptOnPress": "const target = \"127.0.0.1:11000/live/track/set/arm\";\nconst tracks = [27, 28, 29, 30];\n\n// Read stored state (default = false)\nconst armed = !!shared(\"recArm_27_30\", false);\nconst next = !armed;\n\n// Store new state\nsetShared(\"recArm_27_30\", next);\n\n// Send true/false instead of 1/0\nfor (const t of tracks) {\n  sendOsc(target, t, next);\n}",
      "onPress": "Agus-M4-Max.local:11000/live/track/set/arm 27 1;"
    }
  }
}
