<?php

use Kirby\Toolkit\Str;

return [
	'props' => [
		/**
		 * Default number that will be saved when a new page/user/file is created
		 */
		'default' => function ($default = null) {
			return $this->toNumber($default) ?? '';
		},
		/**
		 * The lowest allowed number
		 */
		'min' => function (float $min = null) {
			return $min;
		},
		/**
		 * The highest allowed number
		 */
		'max' => function (float $max = null) {
			return $max;
		},
		/**
		 * Allowed incremental steps between numbers (i.e `0.5`)
		 */
		'step' => function ($step = null) {
			return $this->toNumber($step) ?? '';
		},
		'value' => function ($value = null) {
			return $this->toNumber($value) ?? '';
		}
	],
	'methods' => [
		'toNumber' => function ($value) {
			if ($this->isEmpty($value) === true) {
				return null;
			}

			return is_float($value) === true ? $value : (float)Str::float($value);
		}
	],
	'validations' => [
		'min',
		'max'
	]
];