dom-event-object
Advanced tools
Comparing version 1.0.1 to 1.0.2
@@ -10,7 +10,9 @@ export declare type EventListenerCallback = (event: Event) => any; | ||
constructor(target?: EventTarget); | ||
readonly childEventObjects: EventObject[]; | ||
readonly parentEventObject: EventObject; | ||
appendChild(target: EventObject): EventObject; | ||
removeChild(target: EventObject): EventObject; | ||
addEventListener(type: string, callback: EventListenerCallback, options?: (EventListenerOptions | boolean)): void; | ||
dispatchEvent(event: Event): boolean; | ||
removeEventListener(type: string, callback: EventListenerCallback, options?: (EventListenerOptions | boolean)): void; | ||
appendChild(target: (EventObject | any)): void; | ||
removeChild(target: (EventObject | any)): void; | ||
} |
@@ -5,4 +5,38 @@ "use strict"; | ||
function EventObject(target) { | ||
this._eventTarget = target || document.createDocumentFragment(); | ||
this._eventTarget = target || document.createElement('div') || document.createDocumentFragment(); | ||
Object.defineProperty(this._eventTarget, '_eventObject', { | ||
value: this | ||
}); | ||
} | ||
Object.defineProperty(EventObject.prototype, "childEventObjects", { | ||
get: function () { | ||
var target = this._eventTarget; | ||
return Array.prototype.concat.apply([], target.childNodes).map(function (child) { | ||
return child['_eventObject']; | ||
}); | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
Object.defineProperty(EventObject.prototype, "parentEventObject", { | ||
get: function () { | ||
var target = this._eventTarget; | ||
if (('parentElement' in target) && (target.parentNode !== null) && ('_eventObject' in target.parentNode)) { | ||
return target.parentNode['_eventObject']; | ||
} | ||
else { | ||
return null; | ||
} | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
EventObject.prototype.appendChild = function (target) { | ||
this._eventTarget.appendChild(target._eventTarget); | ||
return target; | ||
}; | ||
EventObject.prototype.removeChild = function (target) { | ||
this._eventTarget.removeChild(target._eventTarget); | ||
return target; | ||
}; | ||
EventObject.prototype.addEventListener = function (type, callback, options) { | ||
@@ -18,31 +52,5 @@ this._eventTarget.addEventListener(type, callback, options); | ||
}; | ||
EventObject.prototype.appendChild = function (target) { | ||
if ('appendChild' in this._eventTarget) { | ||
if (target instanceof EventObject) { | ||
this._eventTarget.appendChild(target._eventTarget); | ||
} | ||
else { | ||
this._eventTarget.appendChild(target); | ||
} | ||
} | ||
else { | ||
throw new Error('Target doen\'t support appendChild'); | ||
} | ||
}; | ||
EventObject.prototype.removeChild = function (target) { | ||
if ('removeChild' in this._eventTarget) { | ||
if (target instanceof EventObject) { | ||
this._eventTarget.removeChild(target._eventTarget); | ||
} | ||
else { | ||
this._eventTarget.removeChild(target); | ||
} | ||
} | ||
else { | ||
throw new Error('Target doen\'t support removeChild'); | ||
} | ||
}; | ||
return EventObject; | ||
}()); | ||
exports.EventObject = EventObject; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLWV2ZW50LW9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kb20tZXZlbnQtb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUE7SUFHRSxxQkFBWSxNQUFvQjtRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sSUFBSSxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUQsc0NBQWdCLEdBQWhCLFVBQWlCLElBQVksRUFBRSxRQUErQixFQUFFLE9BQTBDO1FBQ3hHLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBTyxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsbUNBQWEsR0FBYixVQUFjLEtBQVk7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFBQSxDQUFDO0lBRUYseUNBQW1CLEdBQW5CLFVBQW9CLElBQVksRUFBRSxRQUErQixFQUFFLE9BQTBDO1FBQzNHLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBTyxPQUFPLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsaUNBQVcsR0FBWCxVQUFZLE1BQTJCO1FBQ3JDLEVBQUUsQ0FBQSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN0QyxFQUFFLENBQUEsQ0FBQyxNQUFNLFlBQVksV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQWEsQ0FBQyxXQUFXLENBQVcsTUFBTSxDQUFDLFlBQWEsQ0FBQyxDQUFDO1lBQzNFLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDSSxJQUFJLENBQUMsWUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQsaUNBQVcsR0FBWCxVQUFZLE1BQTJCO1FBQ3JDLEVBQUUsQ0FBQSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN0QyxFQUFFLENBQUEsQ0FBQyxNQUFNLFlBQVksV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQWEsQ0FBQyxXQUFXLENBQVcsTUFBTSxDQUFDLFlBQWEsQ0FBQyxDQUFDO1lBQzNFLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDSSxJQUFJLENBQUMsWUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUgsa0JBQUM7QUFBRCxDQUFDLEFBM0NELElBMkNDO0FBM0NZLGtDQUFXIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRXZlbnRMaXN0ZW5lckNhbGxiYWNrID0gKGV2ZW50OiBFdmVudCkgPT4gYW55O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFdmVudExpc3RlbmVyT3B0aW9ucyB7XHJcbiAgb25jZT86IGJvb2xlYW47XHJcbiAgcGFzc2l2ZT86IGJvb2xlYW47XHJcbiAgY2FwdHVyZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFdmVudE9iamVjdCBpbXBsZW1lbnRzIEV2ZW50VGFyZ2V0IHtcclxuICBwcm90ZWN0ZWQgX2V2ZW50VGFyZ2V0OiBFdmVudFRhcmdldDtcclxuXHJcbiAgY29uc3RydWN0b3IodGFyZ2V0PzogRXZlbnRUYXJnZXQpIHtcclxuICAgIHRoaXMuX2V2ZW50VGFyZ2V0ID0gdGFyZ2V0IHx8IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcclxuICB9XHJcblxyXG4gIGFkZEV2ZW50TGlzdGVuZXIodHlwZTogc3RyaW5nLCBjYWxsYmFjazogRXZlbnRMaXN0ZW5lckNhbGxiYWNrLCBvcHRpb25zPzogKEV2ZW50TGlzdGVuZXJPcHRpb25zIHwgYm9vbGVhbikpOiB2b2lkIHtcclxuICAgIHRoaXMuX2V2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgY2FsbGJhY2ssIDxhbnk+b3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBkaXNwYXRjaEV2ZW50KGV2ZW50OiBFdmVudCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50VGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xyXG4gIH07XHJcblxyXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZTogc3RyaW5nLCBjYWxsYmFjazogRXZlbnRMaXN0ZW5lckNhbGxiYWNrLCBvcHRpb25zPzogKEV2ZW50TGlzdGVuZXJPcHRpb25zIHwgYm9vbGVhbikpOiB2b2lkIHtcclxuICAgIHRoaXMuX2V2ZW50VGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgY2FsbGJhY2ssIDxhbnk+b3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBhcHBlbmRDaGlsZCh0YXJnZXQ6IChFdmVudE9iamVjdCB8IGFueSkpIHtcclxuICAgIGlmKCdhcHBlbmRDaGlsZCcgaW4gdGhpcy5fZXZlbnRUYXJnZXQpIHtcclxuICAgICAgaWYodGFyZ2V0IGluc3RhbmNlb2YgRXZlbnRPYmplY3QpIHtcclxuICAgICAgICAoPEVsZW1lbnQ+dGhpcy5fZXZlbnRUYXJnZXQpLmFwcGVuZENoaWxkKCg8RWxlbWVudD50YXJnZXQuX2V2ZW50VGFyZ2V0KSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgKDxFbGVtZW50PnRoaXMuX2V2ZW50VGFyZ2V0KS5hcHBlbmRDaGlsZCh0YXJnZXQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhcmdldCBkb2VuXFwndCBzdXBwb3J0IGFwcGVuZENoaWxkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVDaGlsZCh0YXJnZXQ6IChFdmVudE9iamVjdCB8IGFueSkpIHtcclxuICAgIGlmKCdyZW1vdmVDaGlsZCcgaW4gdGhpcy5fZXZlbnRUYXJnZXQpIHtcclxuICAgICAgaWYodGFyZ2V0IGluc3RhbmNlb2YgRXZlbnRPYmplY3QpIHtcclxuICAgICAgICAoPEVsZW1lbnQ+dGhpcy5fZXZlbnRUYXJnZXQpLnJlbW92ZUNoaWxkKCg8RWxlbWVudD50YXJnZXQuX2V2ZW50VGFyZ2V0KSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgKDxFbGVtZW50PnRoaXMuX2V2ZW50VGFyZ2V0KS5yZW1vdmVDaGlsZCh0YXJnZXQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhcmdldCBkb2VuXFwndCBzdXBwb3J0IHJlbW92ZUNoaWxkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLWV2ZW50LW9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kb20tZXZlbnQtb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUE7SUFHRSxxQkFBWSxNQUFvQjtRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2pHLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUU7WUFDdkQsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsc0JBQUksMENBQWlCO2FBQXJCO1lBQ0UsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQW9CLENBQUM7WUFDekMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFDLEtBQVc7Z0JBQ3pFLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDBDQUFpQjthQUFyQjtZQUNFLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFvQixDQUFDO1lBQ3pDLEVBQUUsQ0FBQSxDQUFDLENBQUMsZUFBZSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4RyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sTUFBTSxDQUFDLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDOzs7T0FBQTtJQUVELGlDQUFXLEdBQVgsVUFBWSxNQUFtQjtRQUM1QixJQUFJLENBQUMsWUFBcUIsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFlBQW9CLENBQUMsQ0FBQztRQUNyRSxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxpQ0FBVyxHQUFYLFVBQVksTUFBbUI7UUFDNUIsSUFBSSxDQUFDLFlBQXFCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxZQUFvQixDQUFDLENBQUM7UUFDckUsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsc0NBQWdCLEdBQWhCLFVBQWlCLElBQVksRUFBRSxRQUErQixFQUFFLE9BQTBDO1FBQ3hHLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFjLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsbUNBQWEsR0FBYixVQUFjLEtBQVk7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFBQSxDQUFDO0lBRUYseUNBQW1CLEdBQW5CLFVBQW9CLElBQVksRUFBRSxRQUErQixFQUFFLE9BQTBDO1FBQzNHLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFjLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUgsa0JBQUM7QUFBRCxDQUFDLEFBaERELElBZ0RDO0FBaERZLGtDQUFXIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRXZlbnRMaXN0ZW5lckNhbGxiYWNrID0gKGV2ZW50OiBFdmVudCkgPT4gYW55O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFdmVudExpc3RlbmVyT3B0aW9ucyB7XHJcbiAgb25jZT86IGJvb2xlYW47XHJcbiAgcGFzc2l2ZT86IGJvb2xlYW47XHJcbiAgY2FwdHVyZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFdmVudE9iamVjdCBpbXBsZW1lbnRzIEV2ZW50VGFyZ2V0IHtcclxuICBwcm90ZWN0ZWQgX2V2ZW50VGFyZ2V0OiBFdmVudFRhcmdldDtcclxuXHJcbiAgY29uc3RydWN0b3IodGFyZ2V0PzogRXZlbnRUYXJnZXQpIHtcclxuICAgIHRoaXMuX2V2ZW50VGFyZ2V0ID0gdGFyZ2V0IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIHx8IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLl9ldmVudFRhcmdldCwgJ19ldmVudE9iamVjdCcsIHtcclxuICAgICAgdmFsdWU6IHRoaXNcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNoaWxkRXZlbnRPYmplY3RzKCk6IEV2ZW50T2JqZWN0W10ge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5fZXZlbnRUYXJnZXQgYXMgTm9kZTtcclxuICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCB0YXJnZXQuY2hpbGROb2RlcykubWFwKChjaGlsZDogTm9kZSkgPT4ge1xyXG4gICAgICByZXR1cm4gY2hpbGRbJ19ldmVudE9iamVjdCddO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGFyZW50RXZlbnRPYmplY3QoKTogRXZlbnRPYmplY3Qge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5fZXZlbnRUYXJnZXQgYXMgTm9kZTtcclxuICAgIGlmKCgncGFyZW50RWxlbWVudCcgaW4gdGFyZ2V0KSAmJiAodGFyZ2V0LnBhcmVudE5vZGUgIT09IG51bGwpICYmICgnX2V2ZW50T2JqZWN0JyBpbiB0YXJnZXQucGFyZW50Tm9kZSkpIHtcclxuICAgICAgcmV0dXJuIHRhcmdldC5wYXJlbnROb2RlWydfZXZlbnRPYmplY3QnXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwZW5kQ2hpbGQodGFyZ2V0OiBFdmVudE9iamVjdCk6IEV2ZW50T2JqZWN0IHtcclxuICAgICh0aGlzLl9ldmVudFRhcmdldCBhcyBOb2RlKS5hcHBlbmRDaGlsZCh0YXJnZXQuX2V2ZW50VGFyZ2V0IGFzIE5vZGUpO1xyXG4gICAgcmV0dXJuIHRhcmdldDtcclxuICB9XHJcblxyXG4gIHJlbW92ZUNoaWxkKHRhcmdldDogRXZlbnRPYmplY3QpOiBFdmVudE9iamVjdCB7XHJcbiAgICAodGhpcy5fZXZlbnRUYXJnZXQgYXMgTm9kZSkucmVtb3ZlQ2hpbGQodGFyZ2V0Ll9ldmVudFRhcmdldCBhcyBOb2RlKTtcclxuICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgfVxyXG5cclxuICBhZGRFdmVudExpc3RlbmVyKHR5cGU6IHN0cmluZywgY2FsbGJhY2s6IEV2ZW50TGlzdGVuZXJDYWxsYmFjaywgb3B0aW9ucz86IChFdmVudExpc3RlbmVyT3B0aW9ucyB8IGJvb2xlYW4pKTogdm9pZCB7XHJcbiAgICB0aGlzLl9ldmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGNhbGxiYWNrLCBvcHRpb25zIGFzIGFueSk7XHJcbiAgfVxyXG5cclxuICBkaXNwYXRjaEV2ZW50KGV2ZW50OiBFdmVudCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50VGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xyXG4gIH07XHJcblxyXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZTogc3RyaW5nLCBjYWxsYmFjazogRXZlbnRMaXN0ZW5lckNhbGxiYWNrLCBvcHRpb25zPzogKEV2ZW50TGlzdGVuZXJPcHRpb25zIHwgYm9vbGVhbikpOiB2b2lkIHtcclxuICAgIHRoaXMuX2V2ZW50VGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgY2FsbGJhY2ssIG9wdGlvbnMgYXMgYW55KTtcclxuICB9XHJcbiAgXHJcbn1cclxuIl19 |
{ | ||
"name": "dom-event-object", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"description": "Allow any class to have EventTarget methods (addEventListener, removeEventLister and dispatchEvent)", | ||
@@ -8,4 +8,7 @@ "main": "dist/dom-event-object.js", | ||
"scripts": { | ||
"start": "tsc && npm run min", | ||
"min": "uglifyjs ./dist/dom-event-object.js --stats -m -o ./dist/dom-event-object.min.js" | ||
"start": "npm run build && npm run minimify", | ||
"build": "tsc", | ||
"minimify": "uglifyjs ./dist/dom-event-object.js --stats -m -o ./dist/dom-event-object.min.js", | ||
"test": "mocha ./tests/test.js", | ||
"serve": "http-server ./" | ||
}, | ||
@@ -20,5 +23,8 @@ "repository": { | ||
"typescript": "latest", | ||
"uglify-js": "^3.0.1" | ||
"uglify-js": "latest", | ||
"http-server": "latest", | ||
"mocha": "latest", | ||
"selenium-webdriver": "latest" | ||
}, | ||
"dependencies": {} | ||
} |
@@ -12,6 +12,14 @@ ### Add EventTarget methods to any class by extending them with EventObject | ||
export declare class EventObject implements EventTarget { | ||
protected _eventTarget: EventTarget; // the true element which will receive events binding | ||
constructor(target?: EventTarget); // if required a specific target can be selected | ||
protected _eventTarget: EventTarget; // the original element which will receive events binding | ||
constructor(target?: EventTarget); // if required a specific target can be selected | ||
// because Events can bubbles, you can append or remove children like in a Node tree | ||
readonly childEventObjects: EventObject[]; | ||
readonly parentEventObject: EventObject; | ||
appendChild(target: EventObject): EventObject; | ||
removeChild(target: EventObject): EventObject; | ||
// standard EventTarget methods | ||
@@ -22,5 +30,2 @@ addEventListener(type: string, callback: EventListenerCallback, options?: (EventListenerOptions | boolean)): void; | ||
// because Events can bubbles, you can had or remove children | ||
appendChild(target: (EventObject | any)): void; | ||
removeChild(target: (EventObject | any)): void; | ||
``` |
@@ -13,7 +13,36 @@ export type EventListenerCallback = (event: Event) => any; | ||
constructor(target?: EventTarget) { | ||
this._eventTarget = target || document.createDocumentFragment(); | ||
this._eventTarget = target || document.createElement('div') || document.createDocumentFragment(); | ||
Object.defineProperty(this._eventTarget, '_eventObject', { | ||
value: this | ||
}); | ||
} | ||
get childEventObjects(): EventObject[] { | ||
const target = this._eventTarget as Node; | ||
return Array.prototype.concat.apply([], target.childNodes).map((child: Node) => { | ||
return child['_eventObject']; | ||
}); | ||
} | ||
get parentEventObject(): EventObject { | ||
const target = this._eventTarget as Node; | ||
if(('parentElement' in target) && (target.parentNode !== null) && ('_eventObject' in target.parentNode)) { | ||
return target.parentNode['_eventObject']; | ||
} else { | ||
return null; | ||
} | ||
} | ||
appendChild(target: EventObject): EventObject { | ||
(this._eventTarget as Node).appendChild(target._eventTarget as Node); | ||
return target; | ||
} | ||
removeChild(target: EventObject): EventObject { | ||
(this._eventTarget as Node).removeChild(target._eventTarget as Node); | ||
return target; | ||
} | ||
addEventListener(type: string, callback: EventListenerCallback, options?: (EventListenerOptions | boolean)): void { | ||
this._eventTarget.addEventListener(type, callback, <any>options); | ||
this._eventTarget.addEventListener(type, callback, options as any); | ||
} | ||
@@ -26,29 +55,5 @@ | ||
removeEventListener(type: string, callback: EventListenerCallback, options?: (EventListenerOptions | boolean)): void { | ||
this._eventTarget.removeEventListener(type, callback, <any>options); | ||
this._eventTarget.removeEventListener(type, callback, options as any); | ||
} | ||
appendChild(target: (EventObject | any)) { | ||
if('appendChild' in this._eventTarget) { | ||
if(target instanceof EventObject) { | ||
(<Element>this._eventTarget).appendChild((<Element>target._eventTarget)); | ||
} else { | ||
(<Element>this._eventTarget).appendChild(target); | ||
} | ||
} else { | ||
throw new Error('Target doen\'t support appendChild'); | ||
} | ||
} | ||
removeChild(target: (EventObject | any)) { | ||
if('removeChild' in this._eventTarget) { | ||
if(target instanceof EventObject) { | ||
(<Element>this._eventTarget).removeChild((<Element>target._eventTarget)); | ||
} else { | ||
(<Element>this._eventTarget).removeChild(target); | ||
} | ||
} else { | ||
throw new Error('Target doen\'t support removeChild'); | ||
} | ||
} | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
19698
12
313
30
5
1