| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  | import { UIEventSource } from "../../Logic/UIEventSource" | 
					
						
							|  |  |  | import { OsmConnection } from "../../Logic/Osm/OsmConnection" | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  | import FeaturePipeline from "../../Logic/FeatureSource/FeaturePipeline" | 
					
						
							|  |  |  | import BaseUIElement from "../BaseUIElement" | 
					
						
							|  |  |  | import LocationInput from "../Input/LocationInput" | 
					
						
							|  |  |  | import AvailableBaseLayers from "../../Logic/Actors/AvailableBaseLayers" | 
					
						
							| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  | import { BBox } from "../../Logic/BBox" | 
					
						
							|  |  |  | import { TagUtils } from "../../Logic/Tags/TagUtils" | 
					
						
							|  |  |  | import { SubtleButton } from "../Base/SubtleButton" | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  | import Combine from "../Base/Combine" | 
					
						
							|  |  |  | import Translations from "../i18n/Translations" | 
					
						
							|  |  |  | import Svg from "../../Svg" | 
					
						
							|  |  |  | import Toggle from "../Input/Toggle" | 
					
						
							| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  | import SimpleAddUI, { PresetInfo } from "../BigComponents/SimpleAddUI" | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  | import BaseLayer from "../../Models/BaseLayer" | 
					
						
							|  |  |  | import Img from "../Base/Img" | 
					
						
							|  |  |  | import Title from "../Base/Title" | 
					
						
							| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  | import { GlobalFilter } from "../../Logic/State/MapState" | 
					
						
							|  |  |  | import { VariableUiElement } from "../Base/VariableUIElement" | 
					
						
							|  |  |  | import { Tag } from "../../Logic/Tags/Tag" | 
					
						
							|  |  |  | import { WayId } from "../../Models/OsmFeature" | 
					
						
							| 
									
										
										
										
											2022-11-14 01:29:22 +01:00
										 |  |  | import { Translation } from "../i18n/Translation" | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default class ConfirmLocationOfPoint extends Combine { | 
					
						
							|  |  |  |     constructor( | 
					
						
							|  |  |  |         state: { | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             globalFilters: UIEventSource<GlobalFilter[]> | 
					
						
							|  |  |  |             featureSwitchIsTesting: UIEventSource<boolean> | 
					
						
							|  |  |  |             osmConnection: OsmConnection | 
					
						
							|  |  |  |             featurePipeline: FeaturePipeline | 
					
						
							| 
									
										
										
										
											2021-11-30 19:19:53 +01:00
										 |  |  |             backgroundLayer?: UIEventSource<BaseLayer> | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |         }, | 
					
						
							|  |  |  |         filterViewIsOpened: UIEventSource<boolean>, | 
					
						
							|  |  |  |         preset: PresetInfo, | 
					
						
							|  |  |  |         confirmText: BaseUIElement, | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         loc: { lon: number; lat: number }, | 
					
						
							|  |  |  |         confirm: ( | 
					
						
							|  |  |  |             tags: any[], | 
					
						
							|  |  |  |             location: { lat: number; lon: number }, | 
					
						
							| 
									
										
										
										
											2022-09-21 02:21:20 +02:00
										 |  |  |             snapOntoWayId: WayId | undefined | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         ) => void, | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |         cancel: () => void, | 
					
						
							| 
									
										
										
										
											2022-11-14 01:22:38 +01:00
										 |  |  |         closePopup: () => void, | 
					
						
							|  |  |  |         options?: { | 
					
						
							| 
									
										
										
										
											2022-11-14 01:29:22 +01:00
										 |  |  |             cancelIcon: BaseUIElement | 
					
						
							| 
									
										
										
										
											2022-11-14 01:22:38 +01:00
										 |  |  |             cancelText?: string | Translation | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |     ) { | 
					
						
							|  |  |  |         let preciseInput: LocationInput = undefined | 
					
						
							|  |  |  |         if (preset.preciseInput !== undefined) { | 
					
						
							| 
									
										
										
										
											2022-02-09 03:38:40 +01:00
										 |  |  |             // Create location input
 | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |             // We uncouple the event source
 | 
					
						
							| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  |             const zloc = { ...loc, zoom: 19 } | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             const locationSrc = new UIEventSource(zloc) | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             let backgroundLayer = new UIEventSource( | 
					
						
							|  |  |  |                 state?.backgroundLayer?.data ?? AvailableBaseLayers.osmCarto | 
					
						
							|  |  |  |             ) | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |             if (preset.preciseInput.preferredBackground) { | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 const defaultBackground = AvailableBaseLayers.SelectBestLayerAccordingTo( | 
					
						
							|  |  |  |                     locationSrc, | 
					
						
							|  |  |  |                     new UIEventSource<string | string[]>(preset.preciseInput.preferredBackground) | 
					
						
							|  |  |  |                 ) | 
					
						
							| 
									
										
										
										
											2021-11-30 18:10:46 +01:00
										 |  |  |                 // Note that we _break the link_ here, as the minimap will take care of the switching!
 | 
					
						
							|  |  |  |                 backgroundLayer.setData(defaultBackground.data) | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             let snapToFeatures: UIEventSource<{ feature: any }[]> = undefined | 
					
						
							|  |  |  |             let mapBounds: UIEventSource<BBox> = undefined | 
					
						
							|  |  |  |             if (preset.preciseInput.snapToLayers && preset.preciseInput.snapToLayers.length > 0) { | 
					
						
							|  |  |  |                 snapToFeatures = new UIEventSource<{ feature: any }[]>([]) | 
					
						
							|  |  |  |                 mapBounds = new UIEventSource<BBox>(undefined) | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             const tags = TagUtils.KVtoProperties(preset.tags ?? []) | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |             preciseInput = new LocationInput({ | 
					
						
							|  |  |  |                 mapBackground: backgroundLayer, | 
					
						
							|  |  |  |                 centerLocation: locationSrc, | 
					
						
							|  |  |  |                 snapTo: snapToFeatures, | 
					
						
							|  |  |  |                 snappedPointTags: tags, | 
					
						
							|  |  |  |                 maxSnapDistance: preset.preciseInput.maxSnapDistance, | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 bounds: mapBounds, | 
					
						
							| 
									
										
										
										
											2022-10-27 01:50:41 +02:00
										 |  |  |                 state: <any>state, | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |             }) | 
					
						
							| 
									
										
										
										
											2022-01-25 21:55:51 +01:00
										 |  |  |             preciseInput.installBounds(preset.boundsFactor ?? 0.25, true) | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             preciseInput | 
					
						
							|  |  |  |                 .SetClass("rounded-xl overflow-hidden border border-gray") | 
					
						
							|  |  |  |                 .SetStyle("height: 18rem; max-height: 50vh") | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |             if (preset.preciseInput.snapToLayers && preset.preciseInput.snapToLayers.length > 0) { | 
					
						
							|  |  |  |                 // We have to snap to certain layers.
 | 
					
						
							|  |  |  |                 // Lets fetch them
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 let loadedBbox: BBox = undefined | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 mapBounds?.addCallbackAndRunD((bbox) => { | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |                     if (loadedBbox !== undefined && bbox.isContainedIn(loadedBbox)) { | 
					
						
							|  |  |  |                         // All is already there
 | 
					
						
							|  |  |  |                         // return;
 | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                     bbox = bbox.pad( | 
					
						
							|  |  |  |                         Math.max(preset.boundsFactor ?? 0.25, 2), | 
					
						
							|  |  |  |                         Math.max(preset.boundsFactor ?? 0.25, 2) | 
					
						
							|  |  |  |                     ) | 
					
						
							|  |  |  |                     loadedBbox = bbox | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |                     const allFeatures: { feature: any }[] = [] | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                     preset.preciseInput.snapToLayers.forEach((layerId) => { | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |                         console.log("Snapping to", layerId) | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                         state.featurePipeline | 
					
						
							|  |  |  |                             .GetFeaturesWithin(layerId, bbox) | 
					
						
							|  |  |  |                             ?.forEach((feats) => | 
					
						
							| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  |                                 allFeatures.push(...feats.map((f) => ({ feature: f }))) | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                             ) | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |                     }) | 
					
						
							|  |  |  |                     console.log("Snapping to", allFeatures) | 
					
						
							|  |  |  |                     snapToFeatures.setData(allFeatures) | 
					
						
							|  |  |  |                 }) | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         let confirmButton: BaseUIElement = new SubtleButton( | 
					
						
							|  |  |  |             preset.icon(), | 
					
						
							| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  |             new Combine([confirmText]).SetClass("flex flex-col") | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         ) | 
					
						
							|  |  |  |             .SetClass("font-bold break-words") | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |             .onClick(() => { | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 console.log( | 
					
						
							|  |  |  |                     "The confirmLocationPanel - precise input yielded ", | 
					
						
							|  |  |  |                     preciseInput?.GetValue()?.data | 
					
						
							|  |  |  |                 ) | 
					
						
							|  |  |  |                 const globalFilterTagsToAdd: Tag[][] = state.globalFilters.data | 
					
						
							|  |  |  |                     .filter((gf) => gf.onNewPoint !== undefined) | 
					
						
							|  |  |  |                     .map((gf) => gf.onNewPoint.tags) | 
					
						
							|  |  |  |                 const globalTags: Tag[] = [].concat(...globalFilterTagsToAdd) | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  |                 console.log("Global tags to add are: ", globalTags) | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 confirm( | 
					
						
							|  |  |  |                     [...preset.tags, ...globalTags], | 
					
						
							|  |  |  |                     preciseInput?.GetValue()?.data ?? loc, | 
					
						
							|  |  |  |                     preciseInput?.snappedOnto?.data?.properties?.id | 
					
						
							|  |  |  |                 ) | 
					
						
							|  |  |  |             }) | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  |         const warn = Translations.t.general.add.warnVisibleForEveryone | 
					
						
							|  |  |  |             .Clone() | 
					
						
							|  |  |  |             .SetClass("alert w-full block") | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |         if (preciseInput !== undefined) { | 
					
						
							| 
									
										
										
										
											2022-11-07 23:12:31 +01:00
										 |  |  |             confirmButton = new Combine([preciseInput, warn, confirmButton]) | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             confirmButton = new Combine([warn, confirmButton]) | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         const openLayerControl = new SubtleButton( | 
					
						
							|  |  |  |             Svg.layers_ui(), | 
					
						
							|  |  |  |             new Combine([ | 
					
						
							|  |  |  |                 Translations.t.general.add.layerNotEnabled | 
					
						
							| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  |                     .Subs({ layer: preset.layerToAddTo.layerDef.name }) | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                     .SetClass("alert"), | 
					
						
							|  |  |  |                 Translations.t.general.add.openLayerControl, | 
					
						
							|  |  |  |             ]) | 
					
						
							|  |  |  |         ).onClick(() => filterViewIsOpened.setData(true)) | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  |         let openLayerOrConfirm = new Toggle( | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |             confirmButton, | 
					
						
							|  |  |  |             openLayerControl, | 
					
						
							|  |  |  |             preset.layerToAddTo.isDisplayed | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const disableFilter = new SubtleButton( | 
					
						
							|  |  |  |             new Combine([ | 
					
						
							|  |  |  |                 Svg.filter_ui().SetClass("absolute w-full"), | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 Svg.cross_bottom_right_svg().SetClass("absolute red-svg"), | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |             ]).SetClass("relative"), | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             new Combine([ | 
					
						
							|  |  |  |                 Translations.t.general.add.disableFiltersExplanation.Clone(), | 
					
						
							|  |  |  |                 Translations.t.general.add.disableFilters.Clone().SetClass("text-xl"), | 
					
						
							|  |  |  |             ]).SetClass("flex flex-col") | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |         ).onClick(() => { | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             const appliedFilters = preset.layerToAddTo.appliedFilters | 
					
						
							| 
									
										
										
										
											2022-01-08 04:22:50 +01:00
										 |  |  |             appliedFilters.data.forEach((_, k) => appliedFilters.data.set(k, undefined)) | 
					
						
							|  |  |  |             appliedFilters.ping() | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |             cancel() | 
					
						
							| 
									
										
										
										
											2022-01-08 04:22:50 +01:00
										 |  |  |             closePopup() | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |         }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  |         // We assume the number of global filters won't change during the run of the program
 | 
					
						
							|  |  |  |         for (let i = 0; i < state.globalFilters.data.length; i++) { | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             const hasBeenCheckedOf = new UIEventSource(false) | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |             const filterConfirmPanel = new VariableUiElement( | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 state.globalFilters.map((gfs) => { | 
					
						
							|  |  |  |                     const gf = gfs[i] | 
					
						
							| 
									
										
										
										
											2022-11-08 14:37:48 +01:00
										 |  |  |                     const confirm = gf.onNewPoint?.confirmAddNew?.Subs({ preset: preset.title }) | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                     return new Combine([ | 
					
						
							|  |  |  |                         gf.onNewPoint?.safetyCheck, | 
					
						
							|  |  |  |                         new SubtleButton(Svg.confirm_svg(), confirm).onClick(() => | 
					
						
							|  |  |  |                             hasBeenCheckedOf.setData(true) | 
					
						
							|  |  |  |                         ), | 
					
						
							|  |  |  |                     ]) | 
					
						
							|  |  |  |                 }) | 
					
						
							|  |  |  |             ) | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |             openLayerOrConfirm = new Toggle( | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 openLayerOrConfirm, | 
					
						
							|  |  |  |                 filterConfirmPanel, | 
					
						
							|  |  |  |                 state.globalFilters.map( | 
					
						
							|  |  |  |                     (f) => hasBeenCheckedOf.data || f[i]?.onNewPoint === undefined, | 
					
						
							|  |  |  |                     [hasBeenCheckedOf] | 
					
						
							|  |  |  |                 ) | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  |             ) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         const hasActiveFilter = preset.layerToAddTo.appliedFilters.map((appliedFilters) => { | 
					
						
							|  |  |  |             const activeFilters = Array.from(appliedFilters.values()).filter( | 
					
						
							|  |  |  |                 (f) => f?.currentFilter !== undefined | 
					
						
							|  |  |  |             ) | 
					
						
							|  |  |  |             return activeFilters.length === 0 | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2022-01-26 21:40:38 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-08 04:22:50 +01:00
										 |  |  |         // If at least one filter is active which _might_ hide a newly added item, this blocks the preset and requests the filter to be disabled
 | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |         const disableFiltersOrConfirm = new Toggle( | 
					
						
							|  |  |  |             openLayerOrConfirm, | 
					
						
							| 
									
										
										
										
											2022-01-26 21:40:38 +01:00
										 |  |  |             disableFilter, | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             hasActiveFilter | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         const tagInfo = SimpleAddUI.CreateTagInfoFor(preset, state.osmConnection) | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         const cancelButton = new SubtleButton( | 
					
						
							| 
									
										
										
										
											2022-11-14 01:22:38 +01:00
										 |  |  |             options?.cancelIcon ?? Svg.close_ui(), | 
					
						
							|  |  |  |             options?.cancelText ?? Translations.t.general.cancel | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |         ).onClick(cancel) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         let examples: BaseUIElement = undefined | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  |         if (preset.exampleImages !== undefined && preset.exampleImages.length > 0) { | 
					
						
							| 
									
										
										
										
											2022-02-09 03:38:40 +01:00
										 |  |  |             examples = new Combine([ | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                 new Title( | 
					
						
							|  |  |  |                     preset.exampleImages.length == 1 | 
					
						
							|  |  |  |                         ? Translations.t.general.example | 
					
						
							|  |  |  |                         : Translations.t.general.examples | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 new Combine( | 
					
						
							|  |  |  |                     preset.exampleImages.map((img) => | 
					
						
							|  |  |  |                         new Img(img).SetClass("h-64 m-1 w-auto rounded-lg") | 
					
						
							|  |  |  |                     ) | 
					
						
							|  |  |  |                 ).SetClass("flex flex-wrap items-stretch"), | 
					
						
							| 
									
										
										
										
											2022-02-09 03:38:40 +01:00
										 |  |  |             ]) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-07-25 16:55:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |         super([ | 
					
						
							| 
									
										
										
										
											2022-01-21 01:57:16 +01:00
										 |  |  |             new Toggle( | 
					
						
							|  |  |  |                 Translations.t.general.testing.SetClass("alert"), | 
					
						
							|  |  |  |                 undefined, | 
					
						
							|  |  |  |                 state.featureSwitchIsTesting | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |             disableFiltersOrConfirm, | 
					
						
							|  |  |  |             cancelButton, | 
					
						
							|  |  |  |             preset.description, | 
					
						
							| 
									
										
										
										
											2022-02-09 03:38:40 +01:00
										 |  |  |             examples, | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             tagInfo, | 
					
						
							| 
									
										
										
										
											2021-10-31 02:08:39 +01:00
										 |  |  |         ]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         this.SetClass("flex flex-col") | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  | } |