33 lines
1 KiB
Svelte
33 lines
1 KiB
Svelte
<script lang="ts">
|
|
/**
|
|
* Constructs an input helper element for the given type.
|
|
* Note that all values are stringified
|
|
*/
|
|
|
|
import { UIEventSource } from "../../Logic/UIEventSource"
|
|
import type { ValidatorType } from "./Validators"
|
|
import InputHelpers from "./InputHelpers"
|
|
import ToSvelte from "../Base/ToSvelte.svelte"
|
|
import type { Feature } from "geojson"
|
|
import BaseUIElement from "../BaseUIElement"
|
|
import { VariableUiElement } from "../Base/VariableUIElement"
|
|
|
|
export let type: ValidatorType
|
|
export let value: UIEventSource<string>
|
|
|
|
export let feature: Feature
|
|
export let args: (string | number | boolean)[] = undefined
|
|
|
|
let properties = { feature, args: args ?? [] }
|
|
let construct = new UIEventSource<(value, extraProperties) => BaseUIElement>(undefined)
|
|
$: {
|
|
construct.setData(InputHelpers.AvailableInputHelpers[type])
|
|
}
|
|
</script>
|
|
|
|
{#if construct !== undefined}
|
|
<ToSvelte
|
|
construct={() =>
|
|
new VariableUiElement(construct.mapD((construct) => construct(value, properties)))}
|
|
/>
|
|
{/if}
|