"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var sdl_context_1 = require("./sdl-context");
var SdlCanvas = /** @class */ (function () {
    function SdlCanvas(window) {
        this.window = window;
        var sdlWindow = window;
        this._style = {};
        this._canvas = sdlWindow.internalCanvas;
        this._nativeCtx = new sdl_context_1.SdlContext(this._canvas);
        sdlWindow.canvas = this;
    }
    Object.defineProperty(SdlCanvas.prototype, "firstChild", {
        get: function () {
            return this._firstChild;
        },
        set: function (value) {
            this._firstChild = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "lastChild", {
        get: function () {
            return this._lastChild;
        },
        set: function (value) {
            this._lastChild = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "parentNode", {
        get: function () {
            return this._parentNode;
        },
        set: function (value) {
            this._parentNode = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ATTRIBUTE_NODE", {
        get: function () {
            return this._ATTRIBUTE_NODE;
        },
        set: function (value) {
            this._ATTRIBUTE_NODE = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "CDATA_SECTION_NODE", {
        get: function () {
            return this._CDATA_SECTION_NODE;
        },
        set: function (value) {
            this._CDATA_SECTION_NODE = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "COMMENT_NODE", {
        get: function () {
            return this._COMMENT_NODE;
        },
        set: function (value) {
            this._COMMENT_NODE = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "DOCUMENT_FRAGMENT_NODE", {
        get: function () {
            return this._DOCUMENT_FRAGMENT_NODE;
        },
        set: function (value) {
            this._DOCUMENT_FRAGMENT_NODE = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "DOCUMENT_NODE", {
        get: function () {
            return this._DOCUMENT_NODE;
        },
        set: function (value) {
            this._DOCUMENT_NODE = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "DOCUMENT_POSITION_CONTAINED_BY", {
        get: function () {
            return this._DOCUMENT_POSITION_CONTAINED_BY;
        },
        set: function (value) {
            this._DOCUMENT_POSITION_CONTAINED_BY = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "DOCUMENT_POSITION_CONTAINS", {
        get: function () {
            return this._DOCUMENT_POSITION_CONTAINS;
        },
        set: function (value) {
            this._DOCUMENT_POSITION_CONTAINS = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "DOCUMENT_POSITION_DISCONNECTED", {
        get: function () {
            return this._DOCUMENT_POSITION_DISCONNECTED;
        },
        set: function (value) {
            this._DOCUMENT_POSITION_DISCONNECTED = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "DOCUMENT_POSITION_FOLLOWING", {
        get: function () {
            return this._DOCUMENT_POSITION_FOLLOWING;
        },
        set: function (value) {
            this._DOCUMENT_POSITION_FOLLOWING = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC", {
        get: function () {
            return this._DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
        },
        set: function (value) {
            this._DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "DOCUMENT_POSITION_PRECEDING", {
        get: function () {
            return this._DOCUMENT_POSITION_PRECEDING;
        },
        set: function (value) {
            this._DOCUMENT_POSITION_PRECEDING = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "DOCUMENT_TYPE_NODE", {
        get: function () {
            return this._DOCUMENT_TYPE_NODE;
        },
        set: function (value) {
            this._DOCUMENT_TYPE_NODE = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ELEMENT_NODE", {
        get: function () {
            return this._ELEMENT_NODE;
        },
        set: function (value) {
            this._ELEMENT_NODE = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ENTITY_NODE", {
        get: function () {
            return this._ENTITY_NODE;
        },
        set: function (value) {
            this._ENTITY_NODE = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ENTITY_REFERENCE_NODE", {
        get: function () {
            return this._ENTITY_REFERENCE_NODE;
        },
        set: function (value) {
            this._ENTITY_REFERENCE_NODE = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "NOTATION_NODE", {
        get: function () {
            return this._NOTATION_NODE;
        },
        set: function (value) {
            this._NOTATION_NODE = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "PROCESSING_INSTRUCTION_NODE", {
        get: function () {
            return this._PROCESSING_INSTRUCTION_NODE;
        },
        set: function (value) {
            this._PROCESSING_INSTRUCTION_NODE = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "TEXT_NODE", {
        get: function () {
            return this._TEXT_NODE;
        },
        set: function (value) {
            this._TEXT_NODE = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "assignedSlot", {
        get: function () {
            return this._assignedSlot;
        },
        set: function (value) {
            this._assignedSlot = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "attributes", {
        get: function () {
            return this._attributes;
        },
        set: function (value) {
            this._attributes = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "baseURI", {
        get: function () {
            return this._baseURI;
        },
        set: function (value) {
            this._baseURI = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "childElementCount", {
        get: function () {
            return this._childElementCount;
        },
        set: function (value) {
            this._childElementCount = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "childNodes", {
        get: function () {
            return this._childNodes;
        },
        set: function (value) {
            this._childNodes = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "children", {
        get: function () {
            return this._children;
        },
        set: function (value) {
            this._children = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "classList", {
        get: function () {
            return this._classList;
        },
        set: function (value) {
            this._classList = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "clientHeight", {
        get: function () {
            return this._clientHeight;
        },
        set: function (value) {
            this._clientHeight = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "clientLeft", {
        get: function () {
            return this._clientLeft;
        },
        set: function (value) {
            this._clientLeft = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "clientTop", {
        get: function () {
            return this._clientTop;
        },
        set: function (value) {
            this._clientTop = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "clientWidth", {
        get: function () {
            return this._clientWidth;
        },
        set: function (value) {
            this._clientWidth = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "dataset", {
        get: function () {
            return this._dataset;
        },
        set: function (value) {
            this._dataset = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "firstElementChild", {
        get: function () {
            return this._firstElementChild;
        },
        set: function (value) {
            this._firstElementChild = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "isConnected", {
        get: function () {
            return this._isConnected;
        },
        set: function (value) {
            this._isConnected = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "isContentEditable", {
        get: function () {
            return this._isContentEditable;
        },
        set: function (value) {
            this._isContentEditable = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "lastElementChild", {
        get: function () {
            return this._lastElementChild;
        },
        set: function (value) {
            this._lastElementChild = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "localName", {
        get: function () {
            return this._localName;
        },
        set: function (value) {
            this._localName = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "msRegionOverflow", {
        get: function () {
            return this._msRegionOverflow;
        },
        set: function (value) {
            this._msRegionOverflow = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "namespaceURI", {
        get: function () {
            return this._namespaceURI;
        },
        set: function (value) {
            this._namespaceURI = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "nextElementSibling", {
        get: function () {
            return this._nextElementSibling;
        },
        set: function (value) {
            this._nextElementSibling = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "nextSibling", {
        get: function () {
            return this._nextSibling;
        },
        set: function (value) {
            this._nextSibling = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "nodeName", {
        get: function () {
            return this._nodeName;
        },
        set: function (value) {
            this._nodeName = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "nodeType", {
        get: function () {
            return this._nodeType;
        },
        set: function (value) {
            this._nodeType = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "offsetHeight", {
        get: function () {
            return this._offsetHeight;
        },
        set: function (value) {
            this._offsetHeight = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "offsetLeft", {
        get: function () {
            return this._offsetLeft;
        },
        set: function (value) {
            this._offsetLeft = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "offsetParent", {
        get: function () {
            return this._offsetParent;
        },
        set: function (value) {
            this._offsetParent = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "offsetTop", {
        get: function () {
            return this._offsetTop;
        },
        set: function (value) {
            this._offsetTop = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "offsetWidth", {
        get: function () {
            return this._offsetWidth;
        },
        set: function (value) {
            this._offsetWidth = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ownerDocument", {
        get: function () {
            return this._ownerDocument;
        },
        set: function (value) {
            this._ownerDocument = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "parentElement", {
        get: function () {
            return this._parentElement;
        },
        set: function (value) {
            this._parentElement = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "prefix", {
        get: function () {
            return this._prefix;
        },
        set: function (value) {
            this._prefix = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "previousElementSibling", {
        get: function () {
            return this._previousElementSibling;
        },
        set: function (value) {
            this._previousElementSibling = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "previousSibling", {
        get: function () {
            return this._previousSibling;
        },
        set: function (value) {
            this._previousSibling = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "scrollHeight", {
        get: function () {
            return this._scrollHeight;
        },
        set: function (value) {
            this._scrollHeight = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "scrollWidth", {
        get: function () {
            return this._scrollWidth;
        },
        set: function (value) {
            this._scrollWidth = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "shadowRoot", {
        get: function () {
            return this._shadowRoot;
        },
        set: function (value) {
            this._shadowRoot = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "style", {
        get: function () {
            return this._style;
        },
        set: function (value) {
            this._style = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "tagName", {
        get: function () {
            return this._tagName;
        },
        set: function (value) {
            this._tagName = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "accessKeyLabel", {
        get: function () {
            return this._accessKeyLabel;
        },
        set: function (value) {
            this._accessKeyLabel = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "autocapitalize", {
        get: function () {
            return this._autocapitalize;
        },
        set: function (value) {
            this._autocapitalize = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "translate", {
        get: function () {
            return this._translate;
        },
        set: function (value) {
            this._translate = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "inputMode", {
        get: function () {
            return this._inputMode;
        },
        set: function (value) {
            this._inputMode = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "nonce", {
        get: function () {
            return this._nonce;
        },
        set: function (value) {
            this._nonce = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "accessKey", {
        get: function () {
            return this._accessKey;
        },
        set: function (value) {
            this._accessKey = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "className", {
        get: function () {
            return this._className;
        },
        set: function (value) {
            this._className = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "contentEditable", {
        get: function () {
            return this._contentEditable;
        },
        set: function (value) {
            this._contentEditable = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "dir", {
        get: function () {
            return this._dir;
        },
        set: function (value) {
            this._dir = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "draggable", {
        get: function () {
            return this._draggable;
        },
        set: function (value) {
            this._draggable = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "hidden", {
        get: function () {
            return this._hidden;
        },
        set: function (value) {
            this._hidden = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "hideFocus", {
        get: function () {
            return this._hideFocus;
        },
        set: function (value) {
            this._hideFocus = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "id", {
        get: function () {
            return this._id;
        },
        set: function (value) {
            this._id = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "innerHTML", {
        get: function () {
            return this._innerHTML;
        },
        set: function (value) {
            this._innerHTML = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "innerText", {
        get: function () {
            return this._innerText;
        },
        set: function (value) {
            this._innerText = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "lang", {
        get: function () {
            return this._lang;
        },
        set: function (value) {
            this._lang = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "msContentZoomFactor", {
        get: function () {
            return this._msContentZoomFactor;
        },
        set: function (value) {
            this._msContentZoomFactor = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "nodeValue", {
        get: function () {
            return this._nodeValue;
        },
        set: function (value) {
            this._nodeValue = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "height", {
        get: function () {
            return this._canvas.height;
        },
        set: function (value) {
            this.window.windowImplementation().canvasHeight = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "width", {
        get: function () {
            return this._canvas.width;
        },
        set: function (value) {
            this.window.windowImplementation().canvasWidth = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onactivate", {
        get: function () {
            return this._onactivate;
        },
        set: function (value) {
            this._onactivate = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onariarequest", {
        get: function () {
            return this._onariarequest;
        },
        set: function (value) {
            this._onariarequest = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onbeforeactivate", {
        get: function () {
            return this._onbeforeactivate;
        },
        set: function (value) {
            this._onbeforeactivate = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onbeforecopy", {
        get: function () {
            return this._onbeforecopy;
        },
        set: function (value) {
            this._onbeforecopy = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onbeforecut", {
        get: function () {
            return this._onbeforecut;
        },
        set: function (value) {
            this._onbeforecut = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onbeforedeactivate", {
        get: function () {
            return this._onbeforedeactivate;
        },
        set: function (value) {
            this._onbeforedeactivate = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onbeforepaste", {
        get: function () {
            return this._onbeforepaste;
        },
        set: function (value) {
            this._onbeforepaste = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "oncommand", {
        get: function () {
            return this._oncommand;
        },
        set: function (value) {
            this._oncommand = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ondeactivate", {
        get: function () {
            return this._ondeactivate;
        },
        set: function (value) {
            this._ondeactivate = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmousewheel", {
        get: function () {
            return this._onmousewheel;
        },
        set: function (value) {
            this._onmousewheel = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmscontentzoom", {
        get: function () {
            return this._onmscontentzoom;
        },
        set: function (value) {
            this._onmscontentzoom = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmsgesturechange", {
        get: function () {
            return this._onmsgesturechange;
        },
        set: function (value) {
            this._onmsgesturechange = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmsgesturedoubletap", {
        get: function () {
            return this._onmsgesturedoubletap;
        },
        set: function (value) {
            this._onmsgesturedoubletap = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmsgestureend", {
        get: function () {
            return this._onmsgestureend;
        },
        set: function (value) {
            this._onmsgestureend = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmsgesturehold", {
        get: function () {
            return this._onmsgesturehold;
        },
        set: function (value) {
            this._onmsgesturehold = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmsgesturestart", {
        get: function () {
            return this._onmsgesturestart;
        },
        set: function (value) {
            this._onmsgesturestart = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmsgesturetap", {
        get: function () {
            return this._onmsgesturetap;
        },
        set: function (value) {
            this._onmsgesturetap = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmsgotpointercapture", {
        get: function () {
            return this._onmsgotpointercapture;
        },
        set: function (value) {
            this._onmsgotpointercapture = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmsinertiastart", {
        get: function () {
            return this._onmsinertiastart;
        },
        set: function (value) {
            this._onmsinertiastart = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmslostpointercapture", {
        get: function () {
            return this._onmslostpointercapture;
        },
        set: function (value) {
            this._onmslostpointercapture = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmsmanipulationstatechanged", {
        get: function () {
            return this._onmsmanipulationstatechanged;
        },
        set: function (value) {
            this._onmsmanipulationstatechanged = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmspointercancel", {
        get: function () {
            return this._onmspointercancel;
        },
        set: function (value) {
            this._onmspointercancel = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmspointerdown", {
        get: function () {
            return this._onmspointerdown;
        },
        set: function (value) {
            this._onmspointerdown = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmspointerenter", {
        get: function () {
            return this._onmspointerenter;
        },
        set: function (value) {
            this._onmspointerenter = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmspointerleave", {
        get: function () {
            return this._onmspointerleave;
        },
        set: function (value) {
            this._onmspointerleave = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmspointermove", {
        get: function () {
            return this._onmspointermove;
        },
        set: function (value) {
            this._onmspointermove = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmspointerout", {
        get: function () {
            return this._onmspointerout;
        },
        set: function (value) {
            this._onmspointerout = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmspointerover", {
        get: function () {
            return this._onmspointerover;
        },
        set: function (value) {
            this._onmspointerover = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmspointerup", {
        get: function () {
            return this._onmspointerup;
        },
        set: function (value) {
            this._onmspointerup = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onselectstart", {
        get: function () {
            return this._onselectstart;
        },
        set: function (value) {
            this._onselectstart = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onwebkitfullscreenchange", {
        get: function () {
            return this._onwebkitfullscreenchange;
        },
        set: function (value) {
            this._onwebkitfullscreenchange = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onwebkitfullscreenerror", {
        get: function () {
            return this._onwebkitfullscreenerror;
        },
        set: function (value) {
            this._onwebkitfullscreenerror = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "outerHTML", {
        get: function () {
            return this._outerHTML;
        },
        set: function (value) {
            this._outerHTML = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "outerText", {
        get: function () {
            return this._outerText;
        },
        set: function (value) {
            this._outerText = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "scrollLeft", {
        get: function () {
            return this._scrollLeft;
        },
        set: function (value) {
            this._scrollLeft = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "scrollTop", {
        get: function () {
            return this._scrollTop;
        },
        set: function (value) {
            this._scrollTop = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "slot", {
        get: function () {
            return this._slot;
        },
        set: function (value) {
            this._slot = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "spellcheck", {
        get: function () {
            return this._spellcheck;
        },
        set: function (value) {
            this._spellcheck = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "tabIndex", {
        get: function () {
            return this._tabIndex;
        },
        set: function (value) {
            this._tabIndex = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "textContent", {
        get: function () {
            return this._textContent;
        },
        set: function (value) {
            this._textContent = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "title", {
        get: function () {
            return this._title;
        },
        set: function (value) {
            this._title = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "nativeCtx", {
        get: function () {
            return this._nativeCtx;
        },
        set: function (value) {
            this._nativeCtx = value;
        },
        enumerable: true,
        configurable: true
    });
    SdlCanvas.prototype.animate = function (keyframes, options) {
        return undefined;
    };
    SdlCanvas.prototype.appendChild = function (newChild) {
        return undefined;
    };
    SdlCanvas.prototype.attachShadow = function (shadowRootInitDict) {
        return undefined;
    };
    SdlCanvas.prototype.blur = function () {
    };
    SdlCanvas.prototype.click = function () {
    };
    SdlCanvas.prototype.cloneNode = function (deep) {
        return undefined;
    };
    SdlCanvas.prototype.closest = function (selector) {
    };
    SdlCanvas.prototype.compareDocumentPosition = function (other) {
        return 0;
    };
    SdlCanvas.prototype.contains = function (child) {
        return false;
    };
    SdlCanvas.prototype.dispatchEvent = function (evt) {
        return false;
    };
    SdlCanvas.prototype.dragDrop = function () {
        return false;
    };
    SdlCanvas.prototype.focus = function () {
    };
    SdlCanvas.prototype.getAnimations = function () {
        return [];
    };
    SdlCanvas.prototype.getAttribute = function (qualifiedName) {
        return undefined;
    };
    SdlCanvas.prototype.getAttributeNS = function (namespaceURI, localName) {
        return '';
    };
    SdlCanvas.prototype.getAttributeNode = function (name) {
        return undefined;
    };
    SdlCanvas.prototype.getAttributeNodeNS = function (namespaceURI, localName) {
        return undefined;
    };
    SdlCanvas.prototype.getBoundingClientRect = function () {
        var bottom = 0;
        var top = 0;
        var left = 0;
        var right = 0;
        return { bottom: bottom, top: top, left: left, right: right, width: this.width, height: this.height };
    };
    SdlCanvas.prototype.getClientRects = function () {
        return undefined;
    };
    SdlCanvas.prototype.getElementsByTagName = function (name) {
    };
    SdlCanvas.prototype.getElementsByTagNameNS = function (namespaceURI, localName) {
        return undefined;
    };
    SdlCanvas.prototype.hasAttribute = function (name) {
        return false;
    };
    SdlCanvas.prototype.hasAttributeNS = function (namespaceURI, localName) {
        return false;
    };
    SdlCanvas.prototype.hasAttributes = function () {
        return false;
    };
    SdlCanvas.prototype.hasChildNodes = function () {
        return false;
    };
    SdlCanvas.prototype.hasPointerCapture = function (pointerId) {
        return false;
    };
    SdlCanvas.prototype.insertAdjacentElement = function (position, insertedElement) {
        return undefined;
    };
    SdlCanvas.prototype.insertAdjacentHTML = function (where, html) {
    };
    SdlCanvas.prototype.insertAdjacentText = function (where, text) {
    };
    SdlCanvas.prototype.insertBefore = function (newChild, refChild) {
        return undefined;
    };
    SdlCanvas.prototype.isDefaultNamespace = function (namespaceURI) {
        return false;
    };
    SdlCanvas.prototype.isEqualNode = function (arg) {
        return false;
    };
    SdlCanvas.prototype.isSameNode = function (other) {
        return false;
    };
    SdlCanvas.prototype.lookupNamespaceURI = function (prefix) {
        return undefined;
    };
    SdlCanvas.prototype.lookupPrefix = function (namespaceURI) {
        return undefined;
    };
    SdlCanvas.prototype.matches = function (selectors) {
        return false;
    };
    SdlCanvas.prototype.msGetInputContext = function () {
        return undefined;
    };
    SdlCanvas.prototype.msGetRegionContent = function () {
    };
    SdlCanvas.prototype.msGetUntransformedBounds = function () {
        return undefined;
    };
    SdlCanvas.prototype.msMatchesSelector = function (selectors) {
        return false;
    };
    SdlCanvas.prototype.msReleasePointerCapture = function (pointerId) {
    };
    SdlCanvas.prototype.msSetPointerCapture = function (pointerId) {
    };
    SdlCanvas.prototype.msZoomTo = function (args) {
    };
    SdlCanvas.prototype.normalize = function () {
    };
    SdlCanvas.prototype.remove = function () {
    };
    SdlCanvas.prototype.removeAttribute = function (qualifiedName) {
    };
    SdlCanvas.prototype.removeAttributeNS = function (namespaceURI, localName) {
    };
    SdlCanvas.prototype.removeAttributeNode = function (oldAttr) {
        return undefined;
    };
    SdlCanvas.prototype.removeChild = function (oldChild) {
        return undefined;
    };
    SdlCanvas.prototype.replaceChild = function (newChild, oldChild) {
        return undefined;
    };
    SdlCanvas.prototype.requestPointerLock = function () {
    };
    SdlCanvas.prototype.scroll = function (options, y) {
    };
    SdlCanvas.prototype.scrollBy = function (options, y) {
    };
    SdlCanvas.prototype.scrollIntoView = function (arg) {
    };
    SdlCanvas.prototype.scrollTo = function (options, y) {
    };
    SdlCanvas.prototype.setAttribute = function (qualifiedName, value) {
    };
    SdlCanvas.prototype.setAttributeNS = function (namespaceURI, qualifiedName, value) {
    };
    SdlCanvas.prototype.setAttributeNode = function (newAttr) {
        return undefined;
    };
    SdlCanvas.prototype.setAttributeNodeNS = function (newAttr) {
        return undefined;
    };
    SdlCanvas.prototype.setPointerCapture = function (pointerId) {
    };
    SdlCanvas.prototype.webkitMatchesSelector = function (selectors) {
        return false;
    };
    SdlCanvas.prototype.webkitRequestFullScreen = function () {
        this.requestFullscreen();
    };
    SdlCanvas.prototype.webkitRequestFullscreen = function () {
        this.requestFullscreen();
    };
    SdlCanvas.prototype.addEventListener = function (type, listener, options) {
        this.window.addEventListener(type, listener);
    };
    SdlCanvas.prototype.getContext = function (contextId, contextAttributes) {
        if (contextId === '2d') {
            // return this.
            return this._nativeCtx;
        }
        return undefined;
    };
    SdlCanvas.prototype.msToBlob = function () {
        return undefined;
    };
    // removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
    // removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
    SdlCanvas.prototype.removeEventListener = function (type, listener, options) {
        this.window.addEventListener(type, listener);
    };
    SdlCanvas.prototype.toBlob = function (callback, type) {
        var args = [];
        for (var _i = 2; _i < arguments.length; _i++) {
            args[_i - 2] = arguments[_i];
        }
    };
    SdlCanvas.prototype.toDataURL = function (type) {
        var args = [];
        for (var _i = 1; _i < arguments.length; _i++) {
            args[_i - 1] = arguments[_i];
        }
        return '';
    };
    SdlCanvas.prototype.getElementsByClassName = function (classNames) {
        return undefined;
    };
    SdlCanvas.prototype.querySelector = function (selectors) {
    };
    SdlCanvas.prototype.querySelectorAll = function (selectors) {
    };
    SdlCanvas.prototype.requestFullscreen = function () {
        this.window.enableFullScreen();
    };
    SdlCanvas.prototype.releasePointerCapture = function (pointerId) {
    };
    SdlCanvas.prototype.getAttributeNames = function () {
        throw new Error('Method not implemented.');
    };
    SdlCanvas.prototype.toggleAttribute = function (qualifiedName, force) {
        throw new Error('Method not implemented.');
    };
    SdlCanvas.prototype.getRootNode = function (options) {
        throw new Error('Method not implemented.');
    };
    SdlCanvas.prototype.append = function () {
        var nodes = [];
        for (var _i = 0; _i < arguments.length; _i++) {
            nodes[_i] = arguments[_i];
        }
        throw new Error('Method not implemented.');
    };
    SdlCanvas.prototype.prepend = function () {
        var nodes = [];
        for (var _i = 0; _i < arguments.length; _i++) {
            nodes[_i] = arguments[_i];
        }
        throw new Error('Method not implemented.');
    };
    SdlCanvas.prototype.after = function () {
        var nodes = [];
        for (var _i = 0; _i < arguments.length; _i++) {
            nodes[_i] = arguments[_i];
        }
        throw new Error('Method not implemented.');
    };
    SdlCanvas.prototype.before = function () {
        var nodes = [];
        for (var _i = 0; _i < arguments.length; _i++) {
            nodes[_i] = arguments[_i];
        }
        throw new Error('Method not implemented.');
    };
    SdlCanvas.prototype.replaceWith = function () {
        var nodes = [];
        for (var _i = 0; _i < arguments.length; _i++) {
            nodes[_i] = arguments[_i];
        }
        throw new Error('Method not implemented.');
    };
    Object.defineProperty(SdlCanvas.prototype, "onabort", {
        get: function () {
            return this.window.onabort;
        },
        set: function (value) {
            this.window.onabort = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onanimationcancel", {
        get: function () {
            return this.window.onanimationcancel;
        },
        set: function (value) {
            this.window.onanimationcancel = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onanimationend", {
        get: function () {
            return this.window.onanimationend;
        },
        set: function (value) {
            this.window.onanimationend = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onanimationiteration", {
        get: function () {
            return this.window.onanimationiteration;
        },
        set: function (value) {
            this.window.onanimationiteration = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onanimationstart", {
        get: function () {
            return this.window.onanimationstart;
        },
        set: function (value) {
            this.window.onanimationstart = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onauxclick", {
        get: function () {
            return this.window.onauxclick;
        },
        set: function (value) {
            this.window.onauxclick = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onblur", {
        get: function () {
            return this.window.onblur;
        },
        set: function (value) {
            this.window.onblur = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "oncancel", {
        get: function () {
            return this.window.oncancel;
        },
        set: function (value) {
            this.window.oncancel = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "oncanplay", {
        get: function () {
            return this.window.oncanplay;
        },
        set: function (value) {
            this.window.oncanplay = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "oncanplaythrough", {
        get: function () {
            return this.window.oncanplaythrough;
        },
        set: function (value) {
            this.window.oncanplaythrough = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onchange", {
        get: function () {
            return this.window.onchange;
        },
        set: function (value) {
            this.window.onchange = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onclick", {
        get: function () {
            return this.onclick;
        },
        set: function (value) {
            this.window.onclick = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onclose", {
        get: function () {
            return this.window.onclose;
        },
        set: function (value) {
            this.window.onclose = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "oncontextmenu", {
        get: function () {
            return this.window.oncontextmenu;
        },
        set: function (value) {
            this.window.oncontextmenu = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "oncopy", {
        get: function () {
            return null;
        },
        set: function (value) {
            // this.window.oncopy = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "oncuechange", {
        get: function () {
            return this.window.oncuechange;
        },
        set: function (value) {
            this.window.oncuechange = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "oncut", {
        get: function () {
            // return this.window.oncut;
            return null;
        },
        set: function (value) {
            // this.window.oncut = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ondblclick", {
        get: function () {
            return this.window.ondblclick;
        },
        set: function (value) {
            this.window.ondblclick = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ondrag", {
        get: function () {
            return this.window.ondrag;
        },
        set: function (value) {
            this.window.ondrag = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ondragend", {
        get: function () {
            return this.window.ondragend;
        },
        set: function (value) {
            this.window.ondragend = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ondragenter", {
        get: function () {
            return this.window.ondragenter;
        },
        set: function (value) {
            this.window.ondragenter = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ondragexit", {
        get: function () {
            return this.window.ondragexit;
        },
        set: function (value) {
            this.window.ondragexit = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ondragleave", {
        get: function () {
            return this.window.ondragleave;
        },
        set: function (value) {
            this.window.ondragleave = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ondragover", {
        get: function () {
            return this.window.ondragover;
        },
        set: function (value) {
            this.window.ondragover = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ondragstart", {
        get: function () {
            return this.window.ondragstart;
        },
        set: function (value) {
            this.window.ondragstart = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ondrop", {
        get: function () {
            return this.window.ondrop;
        },
        set: function (value) {
            this.window.ondrop = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ondurationchange", {
        get: function () {
            return this.window.ondurationchange;
        },
        set: function (value) {
            this.window.ondurationchange = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onemptied", {
        get: function () {
            return this.window.onemptied;
        },
        set: function (value) {
            this.window.onemptied = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onended", {
        get: function () {
            return this.window.onended;
        },
        set: function (value) {
            this.window.onended = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onerror", {
        get: function () {
            return this.window.onerror;
        },
        set: function (value) {
            this.window.onerror = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onfocus", {
        get: function () {
            return this.window.onfocus;
        },
        set: function (value) {
            this.window.onfocus = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onfullscreenchange", {
        get: function () {
            // return this.window.onfullscreenchange;
            return null;
        },
        set: function (value) {
            // this.window.onfullscreenchange = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onfullscreenerror", {
        get: function () {
            // return this.window.onfullscreenerror;
            return null;
        },
        set: function (value) {
            // this.window.onfullscreenerror = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ongotpointercapture", {
        get: function () {
            return this.window.ongotpointercapture;
        },
        set: function (value) {
            this.window.ongotpointercapture = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "oninput", {
        get: function () {
            return this.window.oninput;
        },
        set: function (value) {
            this.window.oninput = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "oninvalid", {
        get: function () {
            return this.window.oninvalid;
        },
        set: function (value) {
            this.window.oninvalid = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onkeydown", {
        get: function () {
            return this.window.onkeydown;
        },
        set: function (value) {
            this.window.onkeydown = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onkeypress", {
        get: function () {
            return this.window.onkeypress;
        },
        set: function (value) {
            this.window.onkeypress = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onkeyup", {
        get: function () {
            return this.window.onkeyup;
        },
        set: function (value) {
            this.window.onkeyup = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onload", {
        get: function () {
            return this.window.onload;
        },
        set: function (value) {
            this.window.onload = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onloadeddata", {
        get: function () {
            return this.window.onloadeddata;
        },
        set: function (value) {
            this.window.onloadeddata = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onloadedmetadata", {
        get: function () {
            return this.window.onloadedmetadata;
        },
        set: function (value) {
            this.window.onloadedmetadata = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onloadend", {
        get: function () {
            return this.window.onloadend;
        },
        set: function (value) {
            this.window.onloadend = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onloadstart", {
        get: function () {
            return this.window.onloadstart;
        },
        set: function (value) {
            this.window.onloadstart = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onlostpointercapture", {
        get: function () {
            return this.window.onlostpointercapture;
        },
        set: function (value) {
            this.window.onlostpointercapture = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmousedown", {
        get: function () {
            return this.window.onmousedown;
        },
        set: function (value) {
            this.window.onmousedown = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmouseenter", {
        get: function () {
            return this.window.onmouseenter;
        },
        set: function (value) {
            this.window.onmouseenter = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmouseleave", {
        get: function () {
            return this.window.onmouseleave;
        },
        set: function (value) {
            this.window.onmouseleave = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmousemove", {
        get: function () {
            return this.window.onmousemove;
        },
        set: function (value) {
            this.window.onmousemove = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmouseout", {
        get: function () {
            return this.window.onmouseout;
        },
        set: function (value) {
            this.window.onmouseout = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmouseover", {
        get: function () {
            return this.window.onmouseover;
        },
        set: function (value) {
            this.window.onmouseover = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onmouseup", {
        get: function () {
            return this.window.onmouseup;
        },
        set: function (value) {
            this.window.onmouseup = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onpaste", {
        get: function () {
            return null;
        },
        set: function (value) {
            // this.window.onpaste = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onpause", {
        get: function () {
            return this.window.onpause;
        },
        set: function (value) {
            this.window.onpause = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onplay", {
        get: function () {
            return this.window.onplay;
        },
        set: function (value) {
            this.window.onplay = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onplaying", {
        get: function () {
            return this.window.onplaying;
        },
        set: function (value) {
            this.window.onplaying = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onpointercancel", {
        get: function () {
            return this.window.onpointercancel;
        },
        set: function (value) {
            this.window.onpointercancel = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onpointerdown", {
        get: function () {
            return this.window.onpointerdown;
        },
        set: function (value) {
            this.window.onpointerdown = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onpointerenter", {
        get: function () {
            return this.window.onpointerenter;
        },
        set: function (value) {
            this.window.onpointerenter = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onpointerleave", {
        get: function () {
            return this.window.onpointerleave;
        },
        set: function (value) {
            this.window.onpointerleave = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onpointermove", {
        get: function () {
            return this.window.onpointermove;
        },
        set: function (value) {
            this.window.onpointermove = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onpointerout", {
        get: function () {
            return this.window.onpointerout;
        },
        set: function (value) {
            this.window.onpointerout = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onpointerover", {
        get: function () {
            return this.window.onpointerover;
        },
        set: function (value) {
            this.window.onpointerover = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onpointerup", {
        get: function () {
            return this.window.onpointerup;
        },
        set: function (value) {
            this.window.onpointerup = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onprogress", {
        get: function () {
            return this.window.onprogress;
        },
        set: function (value) {
            this.window.onprogress = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onratechange", {
        get: function () {
            return this.window.onratechange;
        },
        set: function (value) {
            this.window.onratechange = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onreadystatechange", {
        get: function () {
            return null;
        },
        set: function (value) {
            // this.window.onreadystatechange = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onreset", {
        get: function () {
            return this.window.onreset;
        },
        set: function (value) {
            this.window.onreset = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onresize", {
        get: function () {
            return this.window.onresize;
        },
        set: function (value) {
            this.window.onresize = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onscroll", {
        get: function () {
            return this.window.onscroll;
        },
        set: function (value) {
            this.window.onscroll = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onsecuritypolicyviolation", {
        get: function () {
            return this.window.onsecuritypolicyviolation;
        },
        set: function (value) {
            this.window.onsecuritypolicyviolation = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onseeked", {
        get: function () {
            return this.window.onseeked;
        },
        set: function (value) {
            this.window.onseeked = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onseeking", {
        get: function () {
            return this.window.onseeking;
        },
        set: function (value) {
            this.window.onseeking = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onselect", {
        get: function () {
            return this.window.onselect;
        },
        set: function (value) {
            this.window.onselect = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onstalled", {
        get: function () {
            return this.window.onstalled;
        },
        set: function (value) {
            this.window.onstalled = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onsubmit", {
        get: function () {
            return this.window.onsubmit;
        },
        set: function (value) {
            this.window.onsubmit = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onsuspend", {
        get: function () {
            return this.window.onsuspend;
        },
        set: function (value) {
            this.window.onsuspend = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ontimeupdate", {
        get: function () {
            return this.window.ontimeupdate;
        },
        set: function (value) {
            this.window.ontimeupdate = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ontoggle", {
        get: function () {
            return this.window.ontoggle;
        },
        set: function (value) {
            this.window.ontoggle = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ontouchcancel", {
        get: function () {
            return this.window.ontouchcancel;
        },
        set: function (value) {
            this.window.ontouchcancel = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ontouchend", {
        get: function () {
            return this.window.ontouchend;
        },
        set: function (value) {
            this.window.ontouchend = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ontouchmove", {
        get: function () {
            return this.window.ontouchmove;
        },
        set: function (value) {
            this.window.ontouchmove = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ontouchstart", {
        get: function () {
            return this.window.ontouchstart;
        },
        set: function (value) {
            this.window.ontouchstart = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ontransitioncancel", {
        get: function () {
            return this.window.ontransitioncancel;
        },
        set: function (value) {
            this.window.ontransitioncancel = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ontransitionend", {
        get: function () {
            return this.window.ontransitionend;
        },
        set: function (value) {
            this.window.ontransitionend = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ontransitionrun", {
        get: function () {
            return this.window.ontransitionrun;
        },
        set: function (value) {
            this.window.ontransitionrun = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "ontransitionstart", {
        get: function () {
            return this.window.ontransitionstart;
        },
        set: function (value) {
            this.window.ontransitionstart = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onvisibilitychange", {
        get: function () {
            return null;
            // return this.window.onvisibilitychange;
        },
        set: function (value) {
            // this.window.onvisibilitychange = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onvolumechange", {
        get: function () {
            return this.window.onvolumechange;
        },
        set: function (value) {
            this.window.onvolumechange = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onwaiting", {
        get: function () {
            return this.window.onwaiting;
        },
        set: function (value) {
            this.window.onwaiting = value;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(SdlCanvas.prototype, "onwheel", {
        get: function () {
            return this.window.onwheel;
        },
        set: function (value) {
            this.window.onwheel = value;
        },
        enumerable: true,
        configurable: true
    });
    return SdlCanvas;
}());
exports.SdlCanvas = SdlCanvas;
//# sourceMappingURL=sdl-canvas.js.map