const a = vec(1, 2, 3, 4)

console.log(a.length, a)

// standard property access
console.log(a[0], a.y, a.b, a.t)

// swizzling
console.log(a.xy, a.zyx, a.xxyy)

// same rules from GLSL apply
console.log(a.xyr, a.xxyyz)

// setters are also available
a.x = 3
a.yz = [1, 2]
console.log([...a])

// cloning works
const b = vec(...a)
a.x -= 3
b.x += 2
console.log([...a], [...b])