| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  | import ThemeIntroductionPanel from "./ThemeIntroductionPanel" | 
					
						
							|  |  |  | import Svg from "../../Svg" | 
					
						
							|  |  |  | import Translations from "../i18n/Translations" | 
					
						
							|  |  |  | import ShareScreen from "./ShareScreen" | 
					
						
							|  |  |  | import MoreScreen from "./MoreScreen" | 
					
						
							|  |  |  | import Constants from "../../Models/Constants" | 
					
						
							|  |  |  | import Combine from "../Base/Combine" | 
					
						
							|  |  |  | import { TabbedComponent } from "../Base/TabbedComponent" | 
					
						
							|  |  |  | import { UIEventSource } from "../../Logic/UIEventSource" | 
					
						
							|  |  |  | import UserDetails, { OsmConnection } from "../../Logic/Osm/OsmConnection" | 
					
						
							|  |  |  | import ScrollableFullScreen from "../Base/ScrollableFullScreen" | 
					
						
							|  |  |  | import BaseUIElement from "../BaseUIElement" | 
					
						
							|  |  |  | import Toggle from "../Input/Toggle" | 
					
						
							|  |  |  | import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig" | 
					
						
							|  |  |  | import { Utils } from "../../Utils" | 
					
						
							|  |  |  | import UserRelatedState from "../../Logic/State/UserRelatedState" | 
					
						
							|  |  |  | import Loc from "../../Models/Loc" | 
					
						
							|  |  |  | import BaseLayer from "../../Models/BaseLayer" | 
					
						
							|  |  |  | import FilteredLayer from "../../Models/FilteredLayer" | 
					
						
							|  |  |  | import CopyrightPanel from "./CopyrightPanel" | 
					
						
							|  |  |  | import FeaturePipeline from "../../Logic/FeatureSource/FeaturePipeline" | 
					
						
							|  |  |  | import PrivacyPolicy from "./PrivacyPolicy" | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-12 02:58:32 +02:00
										 |  |  | export default class FullWelcomePaneWithTabs extends ScrollableFullScreen { | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |     public static MoreThemesTabIndex = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     constructor( | 
					
						
							|  |  |  |         isShown: UIEventSource<boolean>, | 
					
						
							|  |  |  |         currentTab: UIEventSource<number>, | 
					
						
							|  |  |  |         state: { | 
					
						
							|  |  |  |             layoutToUse: LayoutConfig | 
					
						
							|  |  |  |             osmConnection: OsmConnection | 
					
						
							|  |  |  |             featureSwitchShareScreen: UIEventSource<boolean> | 
					
						
							|  |  |  |             featureSwitchMoreQuests: UIEventSource<boolean> | 
					
						
							|  |  |  |             locationControl: UIEventSource<Loc> | 
					
						
							|  |  |  |             featurePipeline: FeaturePipeline | 
					
						
							|  |  |  |             backgroundLayer: UIEventSource<BaseLayer> | 
					
						
							|  |  |  |             filteredLayers: UIEventSource<FilteredLayer[]> | 
					
						
							|  |  |  |         } & UserRelatedState | 
					
						
							|  |  |  |     ) { | 
					
						
							|  |  |  |         const layoutToUse = state.layoutToUse | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  |         super( | 
					
						
							| 
									
										
										
										
											2021-02-25 02:23:26 +01:00
										 |  |  |             () => layoutToUse.title.Clone(), | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |             () => FullWelcomePaneWithTabs.GenerateContents(state, currentTab, isShown), | 
					
						
							| 
									
										
										
										
											2021-10-25 20:50:59 +02:00
										 |  |  |             "welcome", | 
					
						
							| 
									
										
										
										
											2021-10-23 02:46:37 +02:00
										 |  |  |             isShown | 
					
						
							| 
									
										
										
										
											2021-02-25 02:23:26 +01:00
										 |  |  |         ) | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |     private static ConstructBaseTabs( | 
					
						
							|  |  |  |         state: { | 
					
						
							|  |  |  |             layoutToUse: LayoutConfig | 
					
						
							|  |  |  |             osmConnection: OsmConnection | 
					
						
							|  |  |  |             featureSwitchShareScreen: UIEventSource<boolean> | 
					
						
							|  |  |  |             featureSwitchMoreQuests: UIEventSource<boolean> | 
					
						
							|  |  |  |             featurePipeline: FeaturePipeline | 
					
						
							|  |  |  |             locationControl: UIEventSource<Loc> | 
					
						
							|  |  |  |             backgroundLayer: UIEventSource<BaseLayer> | 
					
						
							|  |  |  |             filteredLayers: UIEventSource<FilteredLayer[]> | 
					
						
							|  |  |  |         } & UserRelatedState, | 
					
						
							|  |  |  |         isShown: UIEventSource<boolean>, | 
					
						
							|  |  |  |         currentTab: UIEventSource<number> | 
					
						
							|  |  |  |     ): { header: string | BaseUIElement; content: BaseUIElement }[] { | 
					
						
							|  |  |  |         const tabs: { header: string | BaseUIElement; content: BaseUIElement }[] = [ | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 header: `<img src='${state.layoutToUse.icon}'>`, | 
					
						
							|  |  |  |                 content: new ThemeIntroductionPanel(isShown, currentTab, state), | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |         ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |         if (state.featureSwitchMoreQuests.data) { | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |             tabs.push({ | 
					
						
							|  |  |  |                 header: Svg.add_img, | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 content: new Combine([ | 
					
						
							|  |  |  |                     Translations.t.general.morescreen.intro, | 
					
						
							|  |  |  |                     new MoreScreen(state), | 
					
						
							|  |  |  |                 ]).SetClass("flex flex-col"), | 
					
						
							|  |  |  |             }) | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-21 02:44:35 +01:00
										 |  |  |         if (state.featureSwitchShareScreen.data) { | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             tabs.push({ header: Svg.share_img, content: new ShareScreen(state) }) | 
					
						
							| 
									
										
										
										
											2021-11-21 02:44:35 +01:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const copyright = { | 
					
						
							|  |  |  |             header: Svg.copyright_svg(), | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             content: new Combine([ | 
					
						
							|  |  |  |                 Translations.t.general.openStreetMapIntro.SetClass("link-underline"), | 
					
						
							|  |  |  |                 new CopyrightPanel(state), | 
					
						
							|  |  |  |             ]), | 
					
						
							| 
									
										
										
										
											2021-11-21 02:44:35 +01:00
										 |  |  |         } | 
					
						
							|  |  |  |         tabs.push(copyright) | 
					
						
							| 
									
										
										
										
											2022-01-26 21:40:38 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-21 02:44:35 +01:00
										 |  |  |         const privacy = { | 
					
						
							|  |  |  |             header: Svg.eye_svg(), | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             content: new PrivacyPolicy(), | 
					
						
							| 
									
										
										
										
											2021-11-21 02:44:35 +01:00
										 |  |  |         } | 
					
						
							|  |  |  |         tabs.push(privacy) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         return tabs | 
					
						
							| 
									
										
										
										
											2021-06-14 17:42:26 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |     private static GenerateContents( | 
					
						
							|  |  |  |         state: { | 
					
						
							|  |  |  |             layoutToUse: LayoutConfig | 
					
						
							|  |  |  |             osmConnection: OsmConnection | 
					
						
							|  |  |  |             featureSwitchShareScreen: UIEventSource<boolean> | 
					
						
							|  |  |  |             featureSwitchMoreQuests: UIEventSource<boolean> | 
					
						
							|  |  |  |             featurePipeline: FeaturePipeline | 
					
						
							|  |  |  |             locationControl: UIEventSource<Loc> | 
					
						
							|  |  |  |             backgroundLayer: UIEventSource<BaseLayer> | 
					
						
							|  |  |  |             filteredLayers: UIEventSource<FilteredLayer[]> | 
					
						
							|  |  |  |         } & UserRelatedState, | 
					
						
							|  |  |  |         currentTab: UIEventSource<number>, | 
					
						
							|  |  |  |         isShown: UIEventSource<boolean> | 
					
						
							|  |  |  |     ) { | 
					
						
							| 
									
										
										
										
											2022-06-22 18:52:50 +02:00
										 |  |  |         const tabs = FullWelcomePaneWithTabs.ConstructBaseTabs(state, isShown, currentTab) | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         const tabsWithAboutMc = [ | 
					
						
							|  |  |  |             ...FullWelcomePaneWithTabs.ConstructBaseTabs(state, isShown, currentTab), | 
					
						
							|  |  |  |         ] | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-13 15:04:55 +02:00
										 |  |  |         tabsWithAboutMc.push({ | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             header: Svg.help, | 
					
						
							|  |  |  |             content: new Combine([ | 
					
						
							|  |  |  |                 Translations.t.general.aboutMapcomplete.Subs({ | 
					
						
							|  |  |  |                     osmcha_link: Utils.OsmChaLinkFor(7), | 
					
						
							|  |  |  |                 }), | 
					
						
							|  |  |  |                 "<br/>Version " + Constants.vNumber, | 
					
						
							|  |  |  |             ]).SetClass("link-underline"), | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         tabs.forEach((c) => c.content.SetClass("p-4")) | 
					
						
							|  |  |  |         tabsWithAboutMc.forEach((c) => c.content.SetClass("p-4")) | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-13 15:04:55 +02:00
										 |  |  |         return new Toggle( | 
					
						
							| 
									
										
										
										
											2021-10-15 05:20:02 +02:00
										 |  |  |             new TabbedComponent(tabsWithAboutMc, currentTab), | 
					
						
							|  |  |  |             new TabbedComponent(tabs, currentTab), | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             state.osmConnection.userDetails.map( | 
					
						
							|  |  |  |                 (userdetails: UserDetails) => | 
					
						
							|  |  |  |                     userdetails.loggedIn && | 
					
						
							|  |  |  |                     userdetails.csCount >= Constants.userJourney.mapCompleteHelpUnlock | 
					
						
							|  |  |  |             ) | 
					
						
							| 
									
										
										
										
											2021-06-13 15:04:55 +02:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-01-04 04:06:21 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  | } |