| 
									
										
										
										
											2021-04-07 01:32:39 +02:00
										 |  |  | import {UIElement} from "../UIElement"; | 
					
						
							|  |  |  | import Combine from "../Base/Combine"; | 
					
						
							|  |  |  | import Translations from "../i18n/Translations"; | 
					
						
							|  |  |  | import Attribution from "./Attribution"; | 
					
						
							|  |  |  | import State from "../../State"; | 
					
						
							|  |  |  | import {UIEventSource} from "../../Logic/UIEventSource"; | 
					
						
							|  |  |  | import LayoutConfig from "../../Customizations/JSON/LayoutConfig"; | 
					
						
							|  |  |  | import {FixedUiElement} from "../Base/FixedUiElement"; | 
					
						
							| 
									
										
										
										
											2021-04-09 02:57:06 +02:00
										 |  |  | import * as licenses from "../../assets/generated/license_info.json" | 
					
						
							|  |  |  | import SmallLicense from "../../Models/smallLicense"; | 
					
						
							|  |  |  | import {Icon} from "leaflet"; | 
					
						
							|  |  |  | import Img from "../Base/Img"; | 
					
						
							| 
									
										
										
										
											2021-04-10 03:53:48 +02:00
										 |  |  | import {Utils} from "../../Utils"; | 
					
						
							| 
									
										
										
										
											2021-04-07 01:32:39 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * The attribution panel shown on mobile | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | export default class AttributionPanel extends Combine { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-09 02:57:06 +02:00
										 |  |  |     private static LicenseObject = AttributionPanel.GenerateLicenses(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-07 01:32:39 +02:00
										 |  |  |     constructor(layoutToUse: UIEventSource<LayoutConfig>) { | 
					
						
							|  |  |  |         super([ | 
					
						
							|  |  |  |             Translations.t.general.attribution.attributionContent, | 
					
						
							| 
									
										
										
										
											2021-04-09 17:56:13 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |             ((layoutToUse.data.maintainer ?? "") == "") ? "" : Translations.t.general.attribution.themeBy.Subs({author: layoutToUse.data.maintainer}), | 
					
						
							|  |  |  |             layoutToUse.data.credits , | 
					
						
							| 
									
										
										
										
											2021-04-07 01:32:39 +02:00
										 |  |  |             "<br/>", | 
					
						
							|  |  |  |             new Attribution(undefined, undefined, State.state.layoutToUse, undefined), | 
					
						
							|  |  |  |             "<br/>", | 
					
						
							| 
									
										
										
										
											2021-04-09 02:57:06 +02:00
										 |  |  |             Translations.t.general.attribution.iconAttribution.title.Clone().SetClass("font-bold pt-12 pb-3"), | 
					
						
							| 
									
										
										
										
											2021-04-10 03:53:48 +02:00
										 |  |  |             ...Utils.NoNull(Array.from(layoutToUse.data.ExtractImages())) | 
					
						
							|  |  |  |                 .map(AttributionPanel.IconAttribution) | 
					
						
							| 
									
										
										
										
											2021-04-07 01:32:39 +02:00
										 |  |  |         ]); | 
					
						
							| 
									
										
										
										
											2021-04-09 02:57:06 +02:00
										 |  |  |         this.SetClass("flex flex-col") | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private static IconAttribution(iconPath: string) { | 
					
						
							|  |  |  |         if (iconPath.startsWith("http")) { | 
					
						
							|  |  |  |             iconPath = "." + new URL(iconPath).pathname; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const license: SmallLicense = AttributionPanel.LicenseObject[iconPath] | 
					
						
							|  |  |  |         if (license == undefined) { | 
					
						
							|  |  |  |             return undefined; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if(license.license.indexOf("trivial")>=0){ | 
					
						
							|  |  |  |             return undefined; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return new Combine([ | 
					
						
							|  |  |  |             `<img src='${iconPath}' style="width: 50px; height: 50px; margin-right: 0.5em;">`, | 
					
						
							|  |  |  |             new Combine([ | 
					
						
							|  |  |  |                 new FixedUiElement(license.authors.join("; ")).SetClass("font-bold"), | 
					
						
							|  |  |  |                 new Combine([license.license,  license.sources.length > 0 ? " - " : "",  | 
					
						
							| 
									
										
										
										
											2021-04-09 17:56:13 +02:00
										 |  |  |                     ...license.sources.map(link => `<a href='${link}' target="_blank">${new URL(link).hostname}</a> `)]).SetClass("block") | 
					
						
							| 
									
										
										
										
											2021-04-09 02:57:06 +02:00
										 |  |  |             ]).SetClass("flex flex-col") | 
					
						
							|  |  |  |         ]).SetClass("flex") | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private static GenerateLicenses() { | 
					
						
							|  |  |  |         const allLicenses = {} | 
					
						
							|  |  |  |         for (const key in licenses) { | 
					
						
							|  |  |  |             const license: SmallLicense = licenses[key]; | 
					
						
							|  |  |  |             allLicenses[license.path] = license | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return allLicenses; | 
					
						
							| 
									
										
										
										
											2021-04-07 01:32:39 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | } |