{ "version": 3, "sources": ["src/util/angular/ng-material-icon-helpers.ts"], "sourcesContent": ["import { MatIconRegistry } from '@angular/material/icon';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\nconst svgpath = './/assets/images/mat-icons/';\r\n\r\n// Names of custom SVGs we import\r\nexport type TcsSvgIcon =\r\n | 'fc_unspecified'\r\n | 'fc_helicopter'\r\n | 'fc_plane'\r\n | 'fc_ambulance'\r\n | 'fc_rotorwing'\r\n | 'fc_fixedwing'\r\n | 'fc_ground'\r\n | 'fc_medic_bag'\r\n | 'fc_patient'\r\n | 'fc_pilot'\r\n | 'fc_crew';\r\n\r\n// Names of icons we use from the Google Material Design icon font https://material.io/tools/icons/\r\nexport type TcsMatIcon =\r\n | 'assignment'\r\n | 'flight_takeoff'\r\n | 'local_airport'\r\n | 'group'\r\n | 'my_location';\r\n\r\n// Combined type signature\r\nexport type TcsIcon = TcsSvgIcon | TcsMatIcon;\r\n\r\nexport type MatIconsConfiguration = {\r\n [mi in TcsMatIcon]: {\r\n icon: TcsMatIcon;\r\n description?: string;\r\n };\r\n};\r\n\r\nexport const matIconConfig: MatIconsConfiguration = {\r\n assignment: {\r\n icon: 'assignment',\r\n description: 'Used for Unit Card',\r\n },\r\n flight_takeoff: {\r\n icon: 'flight_takeoff',\r\n description: 'Used for Unit Departed',\r\n },\r\n local_airport: {\r\n icon: 'local_airport',\r\n description: 'Used for Flight Plan',\r\n },\r\n group: {\r\n icon: 'group',\r\n description: 'Used for Team or Manifest',\r\n },\r\n my_location: {\r\n icon: 'my_location',\r\n description: 'Used for Position',\r\n },\r\n};\r\n\r\nexport type SVGIconsConfiguration = {\r\n [si in TcsSvgIcon]: {\r\n icon: TcsSvgIcon;\r\n filename: string;\r\n description?: string;\r\n };\r\n};\r\n\r\nexport const svgIconConfig: SVGIconsConfiguration = {\r\n fc_unspecified: {\r\n icon: 'fc_unspecified',\r\n filename: svgpath + 'help_outline-24px.svg',\r\n },\r\n fc_helicopter: {\r\n icon: 'fc_helicopter',\r\n filename: svgpath + 'helicopter.svg',\r\n },\r\n fc_plane: {\r\n icon: 'fc_plane',\r\n filename: svgpath + 'plane.svg',\r\n },\r\n fc_ambulance: {\r\n icon: 'fc_ambulance',\r\n filename: svgpath + 'emergency-ambulance.svg',\r\n },\r\n fc_rotorwing: {\r\n icon: 'fc_rotorwing',\r\n filename: svgpath + 'helicopter.svg',\r\n },\r\n fc_fixedwing: {\r\n icon: 'fc_fixedwing',\r\n filename: svgpath + 'plane.svg',\r\n },\r\n fc_ground: {\r\n icon: 'fc_ground',\r\n filename: svgpath + 'emergency-ambulance.svg',\r\n },\r\n fc_medic_bag: {\r\n icon: 'fc_medic_bag',\r\n filename: svgpath + 'medical-bag.svg',\r\n },\r\n fc_patient: {\r\n icon: 'fc_patient',\r\n filename: svgpath + 'patient.svg',\r\n },\r\n fc_pilot: {\r\n icon: 'fc_pilot',\r\n filename: svgpath + 'pilot.svg',\r\n },\r\n fc_crew: {\r\n icon: 'fc_crew',\r\n filename: svgpath + 'crew.svg',\r\n },\r\n};\r\n\r\nexport function registerSVGIcons(iconRegistration: MatIconRegistry, domSanitizer: DomSanitizer) {\r\n Object.values(svgIconConfig).forEach((svgIcon) => {\r\n iconRegistration.addSvgIcon(\r\n svgIcon.icon,\r\n domSanitizer.bypassSecurityTrustResourceUrl(svgIcon.filename),\r\n );\r\n });\r\n}\r\nexport interface IconNamespaceRegistration {\r\n [namespace: string]: { [name: string]: string };\r\n}\r\n\r\ninterface IconNamespaceRegistrationResult {\r\n namespace: string;\r\n name: string;\r\n filename: string;\r\n}\r\n\r\nexport function flatten(registry: IconNamespaceRegistration): IconNamespaceRegistrationResult[] {\r\n return Object.entries(registry).reduce((prev, next) => {\r\n const [namespace, icoObj] = next;\r\n const nsIcons: IconNamespaceRegistrationResult[] = Object.entries(icoObj).map(\r\n ([name, filename]) => {\r\n return {\r\n namespace,\r\n name,\r\n filename,\r\n };\r\n },\r\n );\r\n return [...prev, ...nsIcons];\r\n }, []);\r\n}\r\n\r\nexport function registerIcons(\r\n iconsToRegister: IconNamespaceRegistration,\r\n iconRegistration: MatIconRegistry,\r\n domSanitizer: DomSanitizer,\r\n) {\r\n const registrations = flatten(iconsToRegister);\r\n registrations.forEach((icon) => {\r\n iconRegistration.addSvgIconInNamespace(\r\n icon.namespace,\r\n icon.name,\r\n domSanitizer.bypassSecurityTrustResourceUrl(icon.filename),\r\n );\r\n });\r\n}\r\n"], "mappings": "AAGA,IAAMA,EAAU,8BAiET,IAAMC,EAAuC,CAClDC,eAAgB,CACdC,KAAM,iBACNC,SAAUC,EAAU,yBAEtBC,cAAe,CACbH,KAAM,gBACNC,SAAUC,EAAU,kBAEtBE,SAAU,CACRJ,KAAM,WACNC,SAAUC,EAAU,aAEtBG,aAAc,CACZL,KAAM,eACNC,SAAUC,EAAU,2BAEtBI,aAAc,CACZN,KAAM,eACNC,SAAUC,EAAU,kBAEtBK,aAAc,CACZP,KAAM,eACNC,SAAUC,EAAU,aAEtBM,UAAW,CACTR,KAAM,YACNC,SAAUC,EAAU,2BAEtBO,aAAc,CACZT,KAAM,eACNC,SAAUC,EAAU,mBAEtBQ,WAAY,CACVV,KAAM,aACNC,SAAUC,EAAU,eAEtBS,SAAU,CACRX,KAAM,WACNC,SAAUC,EAAU,aAEtBU,QAAS,CACPZ,KAAM,UACNC,SAAUC,EAAU,aAIlB,SAAUW,EAAiBC,EAAmCC,EAA0B,CAC5FC,OAAOC,OAAOnB,CAAa,EAAEoB,QAASC,GAAW,CAC/CL,EAAiBM,WACfD,EAAQnB,KACRe,EAAaM,+BAA+BF,EAAQlB,QAAQ,CAAC,CAEjE,CAAC,CACH,CAWM,SAAUqB,EAAQC,EAAmC,CACzD,OAAOP,OAAOQ,QAAQD,CAAQ,EAAEE,OAA0C,CAACC,EAAMC,IAAQ,CACvF,GAAM,CAACC,EAAWC,CAAM,EAAIF,EACtBG,EAA6Cd,OAAOQ,QAAQK,CAAM,EAAEE,IACxE,CAAC,CAACC,EAAM/B,CAAQ,KACP,CACL2B,UAAAA,EACAI,KAAAA,EACA/B,SAAAA,GAEH,EAEH,MAAO,CAAC,GAAGyB,EAAM,GAAGI,CAAO,CAC7B,EAAG,CAAA,CAAE,CACP,CAEM,SAAUG,EACdC,EACApB,EACAC,EAA0B,CAEJO,EAAQY,CAAe,EAC/BhB,QAASlB,GAAQ,CAC7Bc,EAAiBqB,sBACfnC,EAAK4B,UACL5B,EAAKgC,KACLjB,EAAaM,+BAA+BrB,EAAKC,QAAQ,CAAC,CAE9D,CAAC,CACH", "names": ["svgpath", "svgIconConfig", "fc_unspecified", "icon", "filename", "svgpath", "fc_helicopter", "fc_plane", "fc_ambulance", "fc_rotorwing", "fc_fixedwing", "fc_ground", "fc_medic_bag", "fc_patient", "fc_pilot", "fc_crew", "registerSVGIcons", "iconRegistration", "domSanitizer", "Object", "values", "forEach", "svgIcon", "addSvgIcon", "bypassSecurityTrustResourceUrl", "flatten", "registry", "entries", "reduce", "prev", "next", "namespace", "icoObj", "nsIcons", "map", "name", "registerIcons", "iconsToRegister", "addSvgIconInNamespace"] }