namespace RosettaUI { public static partial class BinderToElement { public static Element CreateMinMaxSliderElement(LabelElement label, IBinder binder, in SliderElementOption elementOption) { var fieldOption = elementOption.sliderOption?.fieldOption ?? FieldOption.Default; return binder switch { IBinder> b => new IntMinMaxSliderElement(label, b, elementOption.Cast()).AddClipboardMenu(binder, fieldOption), // IBinder> b => new IntMinMaxSliderElement(label, // new CastMinMaxBinder(b), // (IGetter) minGetter, // (IGetter) maxGetter), IBinder> b => null, IBinder> b => new FloatMinMaxSliderElement(label, b, elementOption.Cast()).AddClipboardMenu(binder, fieldOption), _ => CreateCompositeMinMaxSliderElement(label, binder, elementOption) }; } private static Element CreateCompositeMinMaxSliderElement(LabelElement label, IBinder binder, SliderElementOption elementOption) { return CreateCompositeSliderElementBase( label, binder, binder.GetMinMaxValueType(), elementOption, fieldName => { var fieldBinder = PropertyOrFieldMinMaxBinder.Create(binder, fieldName); var fieldOption = new SliderElementOption( elementOption, PropertyOrFieldGetter.Create(elementOption.minGetter, fieldName), PropertyOrFieldGetter.Create(elementOption.maxGetter, fieldName) ); return UI.MinMaxSlider(fieldName, fieldBinder, fieldOption); }); } } }