// Copyright 2020-present the Material Components for iOS authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#import <UIKit/UIKit.h>

API_DEPRECATED_BEGIN("🤖👀 Use go/material-ios-branding UISlider instead. "
                     "See go/material-ios-slider/gm2-migration for more details. "
                     "This has go/material-ios-migrations#scriptable-potential 🤖👀.",
                     ios(12, 12))

@class MDCSlider;

NS_SWIFT_UI_ACTOR
@protocol MDCSliderDelegate <NSObject>
@optional

/**
 Called when the user taps on the MDCSlider.

 If not implemented, the MDCSlider will always be allowed to jump to any value.
 */
- (BOOL)slider:(nonnull MDCSlider *)slider shouldJumpToValue:(CGFloat)value;

/**
 For discrete sliders, called when the slider is determining the string label to display for a given
 discrete value.

 If not implemented, or if no slider delegate is specified, the slider defaults to displaying the
 value rounded to the closest relevant digit. For instance, 0.50000 would become "0.5"

 Override this to provide custom behavior, for instance if your slider deals in percentages, the
 above example could become "50%"

 @param slider The MDCSlider sender.
 @param value The value whose label needs to be calculated.
 */
- (nonnull NSString *)slider:(nonnull MDCSlider *)slider displayedStringForValue:(CGFloat)value;

/**
 Used to determine what string value should be used as the accessibility string for a given value.

 If not implemented, or if no slider delegate is specified, the slider defaults to how filled the
 slider is, as a percentage. Override this method to provide custom behavior, and when implementing,
 you may want to also implement @c -slider:displayedStringForValue: to ensure consistency between
 the displayed value and the accessibility label.

 @param slider The MDCSlider sender.
 @param value The value whose accessibility label needs to be calculated.
 */
- (nonnull NSString *)slider:(nonnull MDCSlider *)slider accessibilityLabelForValue:(CGFloat)value;

@end

API_DEPRECATED_END
