| 
									
										
										
										
											2023-08-23 11:11:53 +02:00
										 |  |  | <script lang="ts"> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   import EditLayerState from "./EditLayerState"; | 
					
						
							|  |  |  |   import { UIEventSource } from "../../Logic/UIEventSource"; | 
					
						
							|  |  |  |   import type { TagConfigJson } from "../../Models/ThemeConfig/Json/TagConfigJson"; | 
					
						
							|  |  |  |   import { TagUtils } from "../../Logic/Tags/TagUtils"; | 
					
						
							|  |  |  |   import FromHtml from "../Base/FromHtml.svelte"; | 
					
						
							|  |  |  |   import { PencilIcon } from "@rgossiaux/svelte-heroicons/outline"; | 
					
						
							|  |  |  |   import Region from "./Region.svelte"; | 
					
						
							|  |  |  |   import type { ConfigMeta } from "./configMeta"; | 
					
						
							|  |  |  |   import configs from "../../assets/schemas/questionabletagrenderingconfigmeta.json"; | 
					
						
							|  |  |  |   import { Utils } from "../../Utils"; | 
					
						
							| 
									
										
										
										
											2023-11-05 12:05:00 +01:00
										 |  |  |   import ToSvelte from "../Base/ToSvelte.svelte"; | 
					
						
							|  |  |  |   import { VariableUiElement } from "../Base/VariableUIElement"; | 
					
						
							| 
									
										
										
										
											2023-08-23 11:11:53 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   export let state: EditLayerState; | 
					
						
							|  |  |  |   export let path: (string | number)[]; | 
					
						
							|  |  |  |   let tag: UIEventSource<TagConfigJson> = state.getStoreFor([...path, "if"]); | 
					
						
							|  |  |  |   let parsedTag = tag.map(t => t ? TagUtils.Tag(t) : undefined); | 
					
						
							|  |  |  |   let exampleTags = parsedTag.map(pt => { | 
					
						
							|  |  |  |     if (!pt) { | 
					
						
							|  |  |  |       return {}; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     const keys = pt.usedKeys(); | 
					
						
							|  |  |  |     const o = {}; | 
					
						
							|  |  |  |     for (const key of keys) { | 
					
						
							|  |  |  |       o[key] = "value"; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return o; | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  |   let uploadableOnly: boolean = true; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-05 12:05:00 +01:00
										 |  |  |   let thenText: UIEventSource<Record<string, string>> = state.getStoreFor([...path, "then"]) | 
					
						
							|  |  |  |   let thenTextEn = thenText   .mapD(translation => typeof translation === "string" ? translation : translation["en"] ) | 
					
						
							| 
									
										
										
										
											2023-11-09 15:42:15 +01:00
										 |  |  |   let editMode = Object.keys($thenText ?? {})?.length === 0; | 
					
						
							| 
									
										
										
										
											2023-08-23 11:11:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-05 12:05:00 +01:00
										 |  |  |   let mappingConfigs: ConfigMeta[] = configs.filter(c => c.path[0] === "mappings") | 
					
						
							| 
									
										
										
										
											2023-08-23 11:11:53 +02:00
										 |  |  |     .map(c => <ConfigMeta>Utils.Clone(c)) | 
					
						
							|  |  |  |     .map(c => { | 
					
						
							|  |  |  |       c.path.splice(0, 1); | 
					
						
							|  |  |  |       return c; | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |     .filter(c => c.path.length == 1 && c.hints.group !== "hidden"); | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <button on:click={() => {editMode = !editMode}}> | 
					
						
							|  |  |  |   <PencilIcon class="w-6 h-6" /> | 
					
						
							|  |  |  | </button> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {#if editMode} | 
					
						
							|  |  |  |   <div class="flex justify-between items-start w-full"> | 
					
						
							|  |  |  |     <div class="flex flex-col w-full"> | 
					
						
							|  |  |  |       <Region {state} configs={mappingConfigs} path={path} /> | 
					
						
							|  |  |  |     </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <slot name="delete" /> | 
					
						
							|  |  |  |   </div> | 
					
						
							|  |  |  | {:else} | 
					
						
							|  |  |  |   <div> | 
					
						
							| 
									
										
										
										
											2023-11-05 12:05:00 +01:00
										 |  |  |     {#if Object.keys($thenText).length > 0} | 
					
						
							| 
									
										
										
										
											2023-08-23 11:11:53 +02:00
										 |  |  |       <b> | 
					
						
							| 
									
										
										
										
											2023-11-05 12:05:00 +01:00
										 |  |  |         {$thenTextEn} | 
					
						
							| 
									
										
										
										
											2023-08-23 11:11:53 +02:00
										 |  |  |       </b> | 
					
						
							|  |  |  |     {:else} | 
					
						
							|  |  |  |       <i>No then is set</i> | 
					
						
							|  |  |  |     {/if} | 
					
						
							|  |  |  |     <FromHtml src={ $parsedTag?.asHumanString(false, false, $exampleTags)} /> | 
					
						
							|  |  |  |   </div> | 
					
						
							|  |  |  | {/if} | 
					
						
							|  |  |  | 
 |