Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
6 changes: 2 additions & 4 deletions libs/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@
"tslib",
"css-to-style",
"classnames",
"stylenames",
"geteventlisteners"
"stylenames"
],
"lib": {
"languageLevel": [
Expand Down Expand Up @@ -61,8 +60,7 @@
"dependencies": {
"css-to-style": "^1.2.1",
"classnames": "^2.2.6",
"stylenames": "^1.1.6",
"geteventlisteners": "file:external/geteventlisteners/geteventlisteners-1.0.6.tgz"
"stylenames": "^1.1.6"
},
"bundledDependencies": [
"css-to-style",
Expand Down
2 changes: 1 addition & 1 deletion libs/core/src/lib/angular-react-browser.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import { NgModule } from '@angular/core';
import { BrowserModule, ɵDomRendererFactory2 } from '@angular/platform-browser';
import 'geteventlisteners';
import './external/geteventlisteners';
import { AngularReactRendererFactory } from './renderer/renderer';

@NgModule({
Expand Down
86 changes: 86 additions & 0 deletions libs/core/src/lib/external/geteventlisteners.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
// Taken and modified from https://github.com/colxi/getEventListeners to be compiled into ES5, allowing running in older browsers

(function() {
'use strict';

// save the original methods before overwriting them
Element.prototype['_addEventListener'] = Element.prototype.addEventListener;
Element.prototype['_removeEventListener'] = Element.prototype.removeEventListener;

Element.prototype.addEventListener = function<K extends keyof ElementEventMap>(
type: K,
listener: (this: Element, ev: ElementEventMap[K]) => any,
options?: boolean | AddEventListenerOptions
): void {
if (options === undefined) options = false;

// declare listener
this._addEventListener(type, listener, options);

if (!this.eventListenerList) this.eventListenerList = {};
if (!this.eventListenerList[type]) this.eventListenerList[type] = [];

// add listener to event tracking list
this.eventListenerList[type].push({
type: type,
listener: listener,
useCapture: options,
});
};

Element.prototype.removeEventListener = function<K extends keyof ElementEventMap>(
type: K,
listener: (this: Element, ev: ElementEventMap[K]) => any,
options?: boolean | EventListenerOptions
): void {
if (options === undefined) options = false;

// remove listener
this._removeEventListener(type, listener, options);

if (!this.eventListenerList) this.eventListenerList = {};
if (!this.eventListenerList[type]) this.eventListenerList[type] = [];

// Find the event in the list, If a listener is registered twice, one
// with capture and one without, remove each one separately. Removal of
// a capturing listener does not affect a non-capturing version of the
// same listener, and vice versa.
for (let i = 0; i < this.eventListenerList[type].length; i++) {
if (
this.eventListenerList[type][i].listener === listener &&
this.eventListenerList[type][i].useCapture === options
) {
this.eventListenerList[type].splice(i, 1);
break;
}
}
// if no more events of the removed event type are left,remove the group
if (this.eventListenerList[type].length == 0) delete this.eventListenerList[type];
};

Element.prototype.getEventListeners = function<K extends keyof ElementEventMap>(type?: K) {
if (!this.eventListenerList) this.eventListenerList = {};

// return requested listeners type or all them
if (type === undefined) return this.eventListenerList;
return this.eventListenerList[type];
};

/*
Element.prototype.clearEventListeners = function(a){
if(!this.eventListenerList)
this.eventListenerList = {};
if(a==undefined){
for(var x in (this.getEventListeners())) this.clearEventListeners(x);
return;
}
var el = this.getEventListeners(a);
if(el==undefined)
return;
for(var i = el.length - 1; i >= 0; --i) {
var ev = el[i];
this.removeEventListener(a, ev.listener, ev.useCapture);
}
};
*/
})();
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@
"@ngrx/store": "6.1.2",
"@ngrx/store-devtools": "6.1.2",
"core-js": "^2.5.4",
"geteventlisteners": "file:./external/geteventlisteners/geteventlisteners-1.0.6.tgz",
"ngrx-store-freeze": "^0.2.4",
"office-ui-fabric-react": "6.110.0",
"react": "^16.6.3",
Expand Down