Init `JSUInt8ClampedArray` from `[UInt8]` failed
meqtMac opened this issue · 0 comments
meqtMac commented
console.log(data: "arr transformed")
let array: [UInt8] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let jsArray: Uint8ClampedArray = .init(array)
console.log(data: "newData created")
let newImage = ImageData(data: .init(arr), sw: 600)
console.log(data: "image created")
context.putImageData(imagedata: newImage, dx: 0, dy: 0)
besides, I'm using WebAPIKit.
let jsArray: Uint8ClampedArray = .init(array)
function crashed.
- carton: 0.19.0
- JavaScriptKit: 0.18.0
- swift-wasm-5.8.0-RELEASE.xctoolchain
- Safari 16.6
reproduce the situation
import JavaScriptKit
public enum console {
public static func log(data: JSValue...) {
let this = JSObject.global["console"].object!
_ = this["log"].function!(this: this, arguments: data.map{$0.jsValue} )
}
}
let document = JSObject.global.document
struct Button {
var object: JSValue
init(_ title: String, onClick block: @escaping () -> Void = {}) {
self.object = JSObject.global.document.createElement("button")
object.textContent = .init(stringLiteral: title)
let callBackClosure = JSClosure { _ in
block()
return nil
}
object.onclick = .object(callBackClosure)
}
}
let button = Button("Button") {
console.log(data: "creating array")
let array: [UInt8] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console.log(data: array.jsValue)
let jsUInt8ClampedArray: JSUInt8ClampedArray = .init(array)
console.log(data: jsUInt8ClampedArray.jsValue)
}
_ = document.body.appendChild(button.object)
carton dev