Types/Turtle/get_Canvas.ps1

<#
.SYNOPSIS
    Gets a turtle canvas
.DESCRIPTION
    Gets a turtle a canvas element.
#>

@(
    $viewBox = $this.ViewBox
    $null, $null, $viewX, $viewY = $viewBox    
    "<canvas id='$($this.ID)-canvas'></canvas>"    
    "<script type='module'>"    
@"
window.onload = async function() {
    const loadImage = async url => {
        const newImage = document.createElement('img')
        newImage.src = url
        return new Promise((resolve, reject) => {
            newImage.onload = () => resolve(newImage)
            newImage.onerror = reject
        })
    }
    const dataHeader = 'data:image/svg+xml;charset=utf-8'
    const serializeAsXML = e => (new XMLSerializer()).serializeToString(e)
    const encodeAsUTF8 = s => ```${dataHeader},`${encodeURIComponent(s)}``

    const img = await loadImage('$($this.DataUrl)')
    
    var canvas = document.getElementById('$($this.ID)-canvas');
    canvas.width = $viewX
    canvas.height = $viewY
    var ctx = canvas.getContext('2d')
    ctx.drawImage(img, 0, 0, $viewX, $viewY)
    /*Insert-Post-Processing-Here*/
}
"@

    "</script>"
)