import { Injectable } from '@angular/core' ; import { AbstractAssetService , BaseAssetSource } from './abstract-asset.service' ; export interface IconSource extends BaseAssetSource { allowColorOverride : boolean ; isCCW : boolean ; noHoles : boolean ; } @ Injectable ( ) export class IconService extends AbstractAssetService < IconSource > { defaultProvider = 'md' ; protected init ( ) { this . registerProvider ( 'md' , { url : 'https://raw.githubusercontent.com/material-icons/material-icons/master/svg/?/baseline.svg' , allowColorOverride : true , isCCW : false , noHoles : false } ) ; this . registerProvider ( 'a' , { url : 'assets/svg/?.svg' , allowColorOverride : true , isCCW : false , noHoles : false } ) ; this . registerProvider ( 'az' , { url : 'https://raw.githubusercontent.com/makimenko/files/master/azure-icons/?.svg' , allowColorOverride : false , isCCW : false , noHoles : false } ) ; this . registerProvider ( 'g' , { url : 'https://raw.githubusercontent.com/makimenko/files/master/google-cloud-icons/?.svg' , allowColorOverride : true , isCCW : false , noHoles : false } ) ; this . registerProvider ( 'aws' , { url : 'https://raw.githubusercontent.com/makimenko/files/master/aws-icons/?.svg' , allowColorOverride : false , isCCW : false , noHoles : true } ) ; } defaultIfNotFound ( icon ) { return { url : icon , allowColorOverride : true , isCCW : false , noHoles : false } ; } getFinalResult ( finalUrl , provider ) { return { url : finalUrl , allowColorOverride : provider . allowColorOverride , isCCW : provider . isCCW , noHoles : provider . noHoles } ; } }