@@ -25,7 +25,7 @@ export default class EventController {
2525 * doesn't do anything, delete it.
2626 * @returns {void }
2727 */
28- constructor ( baseElement , queryFilter = '*' , onlyNewElements = true ,
28+ constructor ( baseElement , queryFilter = '*' , classes = [ ] , onlyNewElements = true ,
2929 eventControlClass = ECE ) {
3030 /**
3131 * @type {MutationObserver }
@@ -45,10 +45,8 @@ export default class EventController {
4545 this . onlyNewElements = onlyNewElements ;
4646 /**
4747 * @type {string }
48- * @todo add more specific classes in child classes of this classes
49- * for example .transformable-element
5048 */
51- this . classes = [ 'event-controlled-element' ] ;
49+ this . classes = [ 'event-controlled-element' , ... classes ] ;
5250 /**
5351 * @type {class }
5452 */
@@ -68,16 +66,11 @@ export default class EventController {
6866 * @returns {void }
6967 */
7068 _addExistingElements ( baseElement ) {
71- const classesConnected = this . classes
72- . map ( className => '.' + className )
73- . join ( ' ' ) ;
74-
7569 const filtered =
7670 [ ...baseElement . querySelectorAll ( this . queryFilter ) ]
7771 . filter ( e =>
78- this . onlyNewElements ?
79- e . matches ( `:not(${ classesConnected } )` ) :
80- true
72+ ! this . onlyNewElements ||
73+ this . classes . some ( c => e . matches ( `:not(.${ c } )` ) )
8174 ) ;
8275
8376 filtered . forEach ( element =>
@@ -146,22 +139,17 @@ export default class EventController {
146139 /**
147140 * Adds an array of elements to the system. Calling this method from
148141 * outside this class only makes sense in few cases, because changes
149- * to the element are not observed if itn 't child of the baseElement.
142+ * to the element are not observed if isn 't child of the baseElement.
150143 * @param {object[] } elements - Array of DOM elements. Only elements
151144 * that pass the queryFilter are added.
152145 * @returns {void }
153146 */
154147 add ( elements ) {
155- const classesConnected = this . classes
156- . map ( className => '.' + className )
157- . join ( ' ' ) ;
158-
159148 elements
160149 . filter ( e => e . matches ( this . queryFilter ) )
161150 . filter ( e =>
162- this . onlyNewElements ?
163- e . matches ( `:not(${ classesConnected } )` ) :
164- true
151+ ! this . onlyNewElements ||
152+ this . classes . some ( c => e . matches ( `:not(.${ c } )` ) )
165153 )
166154 . forEach ( element =>
167155 this . addEventControlElement ( element )
@@ -210,7 +198,7 @@ export default class EventController {
210198 * @param {string } [additionalFilter='*'] - css query that has to
211199 * apply additionaly to the one passed in the constructor
212200 * @param {function } [postFunction = (event, element)=>{}] - optional
213- * function that runs after the css change is sucessfully
201+ * function that runs after the css change is successfully
214202 * handeled internally. See {PostTransformFunctions} for examples
215203 * and predefined functions.
216204 * @returns {void }
@@ -219,14 +207,17 @@ export default class EventController {
219207 eventType = 'mousemove' ,
220208 modificationFunction = args => [ ] ,
221209 additionalFilter = '*' ,
222- postFunction = ( controller , event , element ) => { } ) {
210+ postFunction = ( controller , event , element ) => { }
211+ ) {
212+
223213 this . eventControlElements
224214 . filter ( ece => ece . domElement . matches ( additionalFilter ) )
225- . forEach ( ece =>
215+ . forEach ( ece => {
226216 document . addEventListener ( eventType , event => {
227217 this . _modify ( event , ece , modificationFunction ) ;
228218 postFunction . call ( this , event , ece ) ;
229219 } )
220+ }
230221 ) ;
231222 }
232223
@@ -245,7 +236,7 @@ export default class EventController {
245236 */
246237 _modify ( event , ece , modificationFunction ) {
247238 /**
248- * @todo remove transformOrigin and make modification funtions use that directly
239+ * @todo remove transformOrigin and make modification functions use that directly
249240 * from eventControlElement
250241 */
251242 const args = {
0 commit comments