| 
									
										
										
										
											2024-01-25 03:13:18 +01:00
										 |  |  | <script lang="ts"> | 
					
						
							|  |  |  |   import { UIEventSource } from "../../../Logic/UIEventSource" | 
					
						
							|  |  |  |   import LanguageQuestion from "./LanguageQuestion.svelte" | 
					
						
							|  |  |  |   import LanguageAnswer from "./LanguageAnswer.svelte" | 
					
						
							|  |  |  |   import Tr from "../../Base/Tr.svelte" | 
					
						
							|  |  |  |   import Translations from "../../i18n/Translations" | 
					
						
							|  |  |  |   import type { SpecialVisualizationState } from "../../SpecialVisualization" | 
					
						
							|  |  |  |   import type { Feature } from "geojson" | 
					
						
							|  |  |  |   import LayerConfig from "../../../Models/ThemeConfig/LayerConfig" | 
					
						
							|  |  |  |   import EditButton from "../TagRendering/EditButton.svelte" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   export let key: string | 
					
						
							|  |  |  |   export let tags: UIEventSource<Record<string, string>> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   export let state: SpecialVisualizationState | 
					
						
							|  |  |  |   export let feature: Feature | 
					
						
							|  |  |  |   export let layer: LayerConfig | undefined | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   export let question: string | 
					
						
							|  |  |  |   export let on_no_known_languages: string = undefined | 
					
						
							|  |  |  |   export let single_render: string | 
					
						
							|  |  |  |   export let item_render: string | 
					
						
							|  |  |  |   export let render_all: string // Should contain one `{list()}` | 
					
						
							|  |  |  |   let prefix = key + ":" | 
					
						
							|  |  |  |   let foundLanguages = tags.map((tags) => { | 
					
						
							|  |  |  |     const foundLanguages: string[] = [] | 
					
						
							|  |  |  |     for (const k in tags) { | 
					
						
							|  |  |  |       const v = tags[k] | 
					
						
							|  |  |  |       if (v !== "yes") { | 
					
						
							|  |  |  |         continue | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       if (k.startsWith(prefix)) { | 
					
						
							|  |  |  |         foundLanguages.push(k.substring(prefix.length)) | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return foundLanguages | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const forceInputMode = new UIEventSource(false) | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {#if $foundLanguages.length === 0 && on_no_known_languages && !$forceInputMode} | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |   <div class="low-interaction flex items-center justify-between rounded p-1"> | 
					
						
							| 
									
										
										
										
											2024-01-25 03:13:18 +01:00
										 |  |  |     <div> | 
					
						
							|  |  |  |       {on_no_known_languages} | 
					
						
							|  |  |  |     </div> | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |     <EditButton on:click={(_) => forceInputMode.setData(true)} /> | 
					
						
							| 
									
										
										
										
											2024-01-25 03:13:18 +01:00
										 |  |  |   </div> | 
					
						
							|  |  |  | {:else if $forceInputMode || $foundLanguages.length === 0} | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |   <LanguageQuestion | 
					
						
							|  |  |  |     {question} | 
					
						
							|  |  |  |     {foundLanguages} | 
					
						
							|  |  |  |     {prefix} | 
					
						
							|  |  |  |     {state} | 
					
						
							|  |  |  |     {tags} | 
					
						
							|  |  |  |     {feature} | 
					
						
							|  |  |  |     {layer} | 
					
						
							|  |  |  |     on:save={(_) => forceInputMode.setData(false)} | 
					
						
							|  |  |  |   > | 
					
						
							| 
									
										
										
										
											2024-01-25 03:13:18 +01:00
										 |  |  |     <span slot="cancel-button"> | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |       {#if $forceInputMode} | 
					
						
							|  |  |  |         <button on:click={(_) => forceInputMode.setData(false)}> | 
					
						
							|  |  |  |           <Tr t={Translations.t.general.cancel} /> | 
					
						
							|  |  |  |         </button> | 
					
						
							| 
									
										
										
										
											2024-01-25 03:13:18 +01:00
										 |  |  |       {/if} | 
					
						
							|  |  |  |     </span> | 
					
						
							|  |  |  |   </LanguageQuestion> | 
					
						
							|  |  |  | {:else} | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |   <div class="low-interaction flex items-center justify-between rounded p-2"> | 
					
						
							| 
									
										
										
										
											2024-01-25 03:13:18 +01:00
										 |  |  |     <div> | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |       <LanguageAnswer | 
					
						
							|  |  |  |         {single_render} | 
					
						
							|  |  |  |         {item_render} | 
					
						
							|  |  |  |         {render_all} | 
					
						
							|  |  |  |         languages={foundLanguages} | 
					
						
							|  |  |  |         {state} | 
					
						
							|  |  |  |         {tags} | 
					
						
							|  |  |  |         {feature} | 
					
						
							|  |  |  |         {layer} | 
					
						
							|  |  |  |       /> | 
					
						
							| 
									
										
										
										
											2024-01-25 03:13:18 +01:00
										 |  |  |     </div> | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |     <EditButton on:click={(_) => forceInputMode.setData(true)} /> | 
					
						
							| 
									
										
										
										
											2024-01-25 03:13:18 +01:00
										 |  |  |   </div> | 
					
						
							|  |  |  | {/if} |