function defineWrapper(BaseEvent, proto) {
    const keys = Object.keys(proto);
    if (keys.length === 0) {
        return BaseEvent
    }

    /** CustomEvent */
    function CustomEvent(eventTarget, event) {
        BaseEvent.call(this, eventTarget, event);
    }

    CustomEvent.prototype = Object.create(BaseEvent.prototype, {
        constructor: { value: CustomEvent, configurable: true, writable: true },
    });

    // Define accessors.
    for (let i = 0; i < keys.length; ++i) {
        const key = keys[i];
        if (!(key in BaseEvent.prototype)) {
            const descriptor = Object.getOwnPropertyDescriptor(proto, key);
            const isFunc = typeof descriptor.value === "function";
            Object.defineProperty(
                CustomEvent.prototype,
                key,
                isFunc
                    ? defineCallDescriptor(key)
                    : defineRedirectDescriptor(key)
            );
        }
    }

    return CustomEvent
}
function defineWrapper(BaseEvent, proto) {
    const keys = Object.keys(proto);
    if (keys.length === 0) {
        return BaseEvent
    }

    /** CustomEvent */
    function CustomEvent(eventTarget, event) {
        BaseEvent.call(this, eventTarget, event);
    }

    CustomEvent.prototype = Object.create(BaseEvent.prototype, {
        constructor: { value: CustomEvent, configurable: true, writable: true },
    });

    // Define accessors.
    for (let i = 0; i < keys.length; ++i) {
        const key = keys[i];
        if (!(key in BaseEvent.prototype)) {
            const descriptor = Object.getOwnPropertyDescriptor(proto, key);
            const isFunc = typeof descriptor.value === "function";
            Object.defineProperty(
                CustomEvent.prototype,
                key,
                isFunc
                    ? defineCallDescriptor(key)
                    : defineRedirectDescriptor(key)
            );
        }
    }

    return CustomEvent
}
function defineWrapper ( BaseEvent , proto ) { const keys = Object . keys ( proto ) ; if ( keys . length === 0 ) { return BaseEvent } /** CustomEvent */ function CustomEvent ( eventTarget , event ) { BaseEvent . call ( this , eventTarget , event ) ; } CustomEvent . prototype = Object . create ( BaseEvent . prototype , { constructor : { value : CustomEvent , configurable : true , writable : true } , } ) ; // Define accessors. for ( let i = 0 ; i < keys . length ; ++ i ) { const key = keys [ i ] ; if ( ! ( key in BaseEvent . prototype ) ) { const descriptor = Object . getOwnPropertyDescriptor ( proto , key ) ; const isFunc = typeof descriptor . value === "function" ; Object . defineProperty ( CustomEvent . prototype , key , isFunc ? defineCallDescriptor ( key ) : defineRedirectDescriptor ( key ) ) ; } } return CustomEvent }
Define new wrapper class.
@param {Function} BaseEvent The base wrapper class.
@param {Object} proto The prototype of the original event.
@returns {Function} The defined wrapper class.
@private
Define new wrapper class .