MCPcopy
hub / github.com/aframevr/aframe / updateMixins

Method updateMixins

src/core/a-node.js:189–233  ·  view source on GitHub ↗

* Unregister old mixins and listeners. * Register new mixins and listeners. * Registering means to update `this.mixinEls` with listeners.

(newMixins, oldMixins)

Source from the content-addressed store, hash-verified

187 * Registering means to update `this.mixinEls` with listeners.
188 */
189 updateMixins (newMixins, oldMixins) {
190 var newMixinIdArray = ANode.newMixinIdArray;
191 var oldMixinIdArray = ANode.oldMixinIdArray;
192 var mixinIds = ANode.mixinIds;
193
194 var i;
195 var newMixinIds;
196 var oldMixinIds;
197
198 newMixinIdArray.length = 0;
199 oldMixinIdArray.length = 0;
200 newMixinIds = newMixins ? utils.split(newMixins.trim(), /\s+/) : newMixinIdArray;
201 oldMixinIds = oldMixins ? utils.split(oldMixins.trim(), /\s+/) : oldMixinIdArray;
202
203 mixinIds.newMixinIds = newMixinIds;
204 mixinIds.oldMixinIds = oldMixinIds;
205
206 // Unregister old mixins.
207 for (i = 0; i < oldMixinIds.length; i++) {
208 if (newMixinIds.indexOf(oldMixinIds[i]) === -1) {
209 this.unregisterMixin(oldMixinIds[i]);
210 }
211 }
212
213 // Register new mixins.
214 this.computedMixinStr = '';
215 this.mixinEls.length = 0;
216 for (i = 0; i < newMixinIds.length; i++) {
217 this.registerMixin(newMixinIds[i]);
218 }
219
220 // Update DOM. Keep track of `computedMixinStr` to not recurse back here after
221 // update.
222 if (this.computedMixinStr) {
223 this.computedMixinStr = this.computedMixinStr.trim();
224 window.HTMLElement.prototype.setAttribute.call(this, 'mixin',
225 this.computedMixinStr);
226 }
227
228 if (newMixinIds.length === 0) {
229 window.HTMLElement.prototype.removeAttribute.call(this, 'mixin');
230 }
231
232 return mixinIds;
233 }
234
235 /**
236 * From mixin id, add mixin element to `mixinEls`.

Callers 4

doConnectedCallbackMethod · 0.95
setAttributeMethod · 0.95
mixinUpdateMethod · 0.80

Calls 2

unregisterMixinMethod · 0.95
registerMixinMethod · 0.95

Tested by

no test coverage detected