import { UIEventSource } from "../../UIEventSource"
import FilteredLayer from "../../../Models/FilteredLayer"
import { FeatureSourceForLayer, Tiled } from "../FeatureSource"
import { BBox } from "../../BBox"

export default class SimpleFeatureSource implements FeatureSourceForLayer, Tiled {
    public readonly features: UIEventSource<{ feature: any; freshness: Date }[]>
    public readonly name: string = "SimpleFeatureSource"
    public readonly layer: FilteredLayer
    public readonly bbox: BBox = BBox.global
    public readonly tileIndex: number

    constructor(
        layer: FilteredLayer,
        tileIndex: number,
        featureSource?: UIEventSource<{ feature: any; freshness: Date }[]>
    ) {
        this.name = "SimpleFeatureSource(" + layer.layerDef.id + ")"
        this.layer = layer
        this.tileIndex = tileIndex ?? 0
        this.bbox = BBox.fromTileIndex(this.tileIndex)
        this.features = featureSource ?? new UIEventSource<{ feature: any; freshness: Date }[]>([])
    }
}