in packages/svg-mixer/runtime/src/browser-sprite.js [28:76]
constructor(cfg = {}) {
super(merge(defaultConfig, cfg));
const emitter = Emitter();
this._emitter = emitter;
this.node = null;
const { config } = this;
if (config.autoConfigure) {
this._autoConfigure(cfg);
}
if (config.syncUrlsWithBaseTag) {
const baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');
emitter.on(Events.MOUNT, () => this.updateUrls('#', baseUrl));
}
const handleLocationChange = this._handleLocationChange.bind(this);
this._handleLocationChange = handleLocationChange;
// Provide way to update sprite urls externally via dispatching custom window event
if (config.listenLocationChangeEvent) {
window.addEventListener(config.locationChangeEvent, handleLocationChange);
}
// Emit location change event in Angular automatically
if (config.locationChangeAngularEmitter) {
locationChangeAngularEmitter(config.locationChangeEvent);
}
// After sprite mounted
emitter.on(Events.MOUNT, (spriteNode) => {
if (config.moveGradientsOutsideSymbol) {
moveGradientsOutsideSymbol(spriteNode);
}
});
// After symbol mounted into sprite
emitter.on(Events.SYMBOL_MOUNT, (symbolNode) => {
if (config.moveGradientsOutsideSymbol) {
moveGradientsOutsideSymbol(symbolNode.parentNode);
}
if (browser.isIE || browser.isEdge) {
evalStylesIEWorkaround(symbolNode);
}
});
}