forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			31 lines
		
	
	
		
			No EOL
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			No EOL
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import FeatureSource from "../FeatureSource";
 | |
| import {UIEventSource} from "../../UIEventSource";
 | |
| 
 | |
| /**
 | |
|  * A simple dummy implementation for whenever it is needed
 | |
|  */
 | |
| export default class StaticFeatureSource implements FeatureSource {
 | |
|     public readonly features: UIEventSource<{ feature: any; freshness: Date }[]>;
 | |
|     public readonly name: string = "StaticFeatureSource"
 | |
| 
 | |
|     constructor(features: any[] | UIEventSource<any[] | UIEventSource<{ feature: any, freshness: Date }>>, useFeaturesDirectly) {
 | |
|         const now = new Date();
 | |
|         if(features === undefined){
 | |
|             throw "Static feature source received undefined as source"
 | |
|         }
 | |
|         if (useFeaturesDirectly) {
 | |
|             // @ts-ignore
 | |
|             this.features = features
 | |
|         } else if (features instanceof UIEventSource) {
 | |
|             // @ts-ignore
 | |
|             this.features = features.map(features => features?.map(f => ({feature: f, freshness: now}) ?? []))
 | |
|         } else {
 | |
|             this.features = new UIEventSource(features?.map(f => ({
 | |
|                 feature: f,
 | |
|                 freshness: now
 | |
|             }))??[])
 | |
|         }
 | |
|     }
 | |
| 
 | |
| 
 | |
| } |