├── .DS_Store ├── .github ├── FUNDING.yml ├── .DS_Store └── workflows │ ├── .DS_Store │ ├── swift.yml │ └── publish-pages.yml ├── docs └── .DS_Store ├── RKSlider ├── .DS_Store ├── 0.0.2 │ └── RKSlider.podspec ├── 0.0.7 │ └── RKSlider.podspec ├── 0.0.8 │ └── RKSlider.podspec ├── 0.0.9 │ └── RKSlider.podspec ├── 0.1.0 │ └── RKSlider.podspec └── 0.1.1 │ └── RKSlider.podspec ├── Sources ├── .DS_Store ├── Managers │ ├── LoggerManager.swift │ └── HapticManager.swift ├── Slider.h ├── Info.plist ├── Documentation.docc │ ├── ThumbConfiguration.md │ ├── RangeEndpointConfiguration.md │ ├── TrackConfiguration.md │ ├── SliderDelegate.md │ └── Slider.md ├── TextLayer.swift ├── Extensions │ └── String.swift ├── ThumbLayer.swift └── Configurations │ ├── HapticConfiguration.swift │ ├── ThumbConfiguration.swift │ └── RangeEndpointsConfiguration.swift ├── Slider_Example ├── .DS_Store ├── Flows │ ├── .DS_Store │ └── Main │ │ ├── .DS_Store │ │ └── Extensions │ │ ├── CodeViewController+SliderDelegate.swift │ │ └── CodeViewController+UIColorPickerViewControllerDelegate.swift ├── Supporting Files │ ├── Assets.xcassets │ │ ├── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ └── Info.plist └── Application │ ├── SceneDelegate.swift │ ├── Base.lproj │ └── LaunchScreen.storyboard │ └── AppDelegate.swift ├── Screenshots ├── preference.png ├── leftToRightCustom.png ├── leftToRightDefault.png └── rightToLeftDefault.png ├── Slider.doccarchive ├── favicon.ico ├── index │ ├── data.mdb │ ├── navigator.index │ └── availability.index ├── developer-og.jpg ├── developer-og-twitter.jpg ├── metadata.json ├── img │ ├── deprecated-icon.7bf1740a.svg │ ├── added-icon.832a5d2c.svg │ └── modified-icon.efb2697d.svg ├── index.html ├── documentation │ └── slider │ │ ├── index.html │ │ ├── slider │ │ ├── index.html │ │ ├── step │ │ │ └── index.html │ │ ├── delegate │ │ │ └── index.html │ │ ├── maximum │ │ │ └── index.html │ │ ├── minimum │ │ │ └── index.html │ │ ├── value │ │ │ └── index.html │ │ ├── continuous │ │ │ └── index.html │ │ ├── cornerradius │ │ │ └── index.html │ │ ├── init(frame:) │ │ │ └── index.html │ │ ├── addaction(_:for:) │ │ │ └── index.html │ │ ├── hapticconfiguration │ │ │ └── index.html │ │ ├── layoutsubviews() │ │ │ └── index.html │ │ ├── previoustouchpoint │ │ │ └── index.html │ │ ├── thumbconfiguration │ │ │ └── index.html │ │ ├── trackconfiguration │ │ │ └── index.html │ │ ├── addtarget(_:action:for:) │ │ │ └── index.html │ │ ├── begintracking(_:with:) │ │ │ └── index.html │ │ ├── direction-swift.enum │ │ │ ├── index.html │ │ │ ├── !=(_:_:) │ │ │ │ └── index.html │ │ │ ├── bottomtotop │ │ │ │ └── index.html │ │ │ ├── lefttoright │ │ │ │ └── index.html │ │ │ ├── righttoleft │ │ │ │ └── index.html │ │ │ ├── toptobottom │ │ │ │ └── index.html │ │ │ └── equatable-implementations │ │ │ │ └── index.html │ │ ├── direction-swift.property │ │ │ └── index.html │ │ ├── endtracking(_:with:) │ │ │ └── index.html │ │ ├── init(direction:frame:) │ │ │ └── index.html │ │ ├── intrinsiccontentsize │ │ │ └── index.html │ │ ├── removeaction(_:for:) │ │ │ └── index.html │ │ ├── usabletrackinglength │ │ │ └── index.html │ │ ├── animationstyle-swift.enum │ │ │ ├── index.html │ │ │ ├── !=(_:_:) │ │ │ │ └── index.html │ │ │ ├── default │ │ │ │ └── index.html │ │ │ ├── none │ │ │ │ └── index.html │ │ │ └── equatable-implementations │ │ │ │ └── index.html │ │ ├── animationstyle-swift.property │ │ │ └── index.html │ │ ├── continuetracking(_:with:) │ │ │ └── index.html │ │ ├── maximumendpointconfiguration │ │ │ └── index.html │ │ ├── minimumendpointconfiguration │ │ │ └── index.html │ │ └── removetarget(_:action:for:) │ │ │ └── index.html │ │ ├── sliderdelegate │ │ ├── index.html │ │ ├── didbegintracking(_:)-51xp9 │ │ │ └── index.html │ │ ├── didbegintracking(_:)-7wwfi │ │ │ └── index.html │ │ ├── didendtracking(_:)-28et │ │ │ └── index.html │ │ ├── didendtracking(_:)-2wyzq │ │ │ └── index.html │ │ ├── didcontinuetracking(_:)-3v87 │ │ │ └── index.html │ │ ├── didcontinuetracking(_:)-57wz9 │ │ │ └── index.html │ │ └── slider(_:displaytextforvalue:) │ │ │ └── index.html │ │ ├── hapticconfiguration │ │ ├── index.html │ │ └── init(reachlimitvaluehapticenabled:changevaluehapticenabled:changedirectionhapticenabled:reachimpactgeneratorstyle:changevalueimpactgeneratorstyle:) │ │ │ └── index.html │ │ ├── thumbconfiguration │ │ ├── index.html │ │ ├── size │ │ │ └── index.html │ │ ├── borderwidth │ │ │ └── index.html │ │ ├── fontsize │ │ │ └── index.html │ │ ├── backgroundcolor │ │ │ └── index.html │ │ └── init(backgroundcolor:fontsize:size:borderwidth:) │ │ │ └── index.html │ │ ├── trackconfiguration │ │ ├── index.html │ │ ├── height │ │ │ └── index.html │ │ ├── inset │ │ │ └── index.html │ │ ├── maxcolor │ │ │ └── index.html │ │ ├── mincolor │ │ │ └── index.html │ │ ├── reversemincolor │ │ │ └── index.html │ │ └── init(maxcolor:mincolor:reversemincolor:height:inset:) │ │ │ └── index.html │ │ └── rangeendpointsconfiguration │ │ ├── index.html │ │ └── init(anchorpoint:foregroundcolor:fontsize:aligmentmode:) │ │ └── index.html ├── js │ ├── highlight-js-shell-js.0ad5b20f.js │ ├── highlight-js-json-js.2a1856ba.js │ ├── highlight-js-diff-js.4db9a783.js │ ├── highlight-js-http-js.f78e83c2.js │ ├── highlight-js-xml-js.0d78f903.js │ ├── highlight-js-markdown-js.a2f456af.js │ ├── highlight-js-java-js.4fe21e94.js │ ├── highlight-js-llvm-js.26121771.js │ ├── highlight-js-objectivec-js.74dea052.js │ ├── highlight-js-bash-js.702f0c5c.js │ ├── highlight-js-custom-markdown.78c9f6ed.js │ └── highlight-js-python-js.60354774.js ├── favicon.svg └── data │ └── documentation │ └── slider │ ├── slider │ ├── layoutsubviews().json │ ├── continuous.json │ ├── previoustouchpoint.json │ ├── intrinsiccontentsize.json │ ├── usabletrackinglength.json │ ├── direction-swift.enum │ │ ├── bottomtotop.json │ │ ├── lefttoright.json │ │ ├── righttoleft.json │ │ ├── toptobottom.json │ │ └── equatable-implementations.json │ ├── animationstyle-swift.enum │ │ ├── none.json │ │ ├── default.json │ │ └── equatable-implementations.json │ └── endtracking(_:with:).json │ └── trackconfiguration │ ├── height.json │ ├── maxcolor.json │ ├── inset.json │ ├── mincolor.json │ └── reversemincolor.json ├── Tests └── SliderTests │ └── SliderTests.swift ├── .swiftpm └── xcode │ ├── package.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── ramizkichibekov.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ └── ramizkichibekov.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── Slider.xcodeproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcuserdata │ │ └── ramizkichibekov.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── xcuserdata │ └── ramizkichibekov.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist └── xcshareddata │ └── xcschemes │ ├── Slider.xcscheme │ └── Slider_Example.xcscheme ├── Package.swift ├── RKSlider.podspec ├── LICENSE ├── README.md └── CHANGELOG.md /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/.DS_Store -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [ramiz69] 2 | buy_me_a_coffee: ramiz069 3 | -------------------------------------------------------------------------------- /docs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/docs/.DS_Store -------------------------------------------------------------------------------- /.github/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/.github/.DS_Store -------------------------------------------------------------------------------- /RKSlider/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/RKSlider/.DS_Store -------------------------------------------------------------------------------- /Sources/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Sources/.DS_Store -------------------------------------------------------------------------------- /Slider_Example/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Slider_Example/.DS_Store -------------------------------------------------------------------------------- /Screenshots/preference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Screenshots/preference.png -------------------------------------------------------------------------------- /.github/workflows/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/.github/workflows/.DS_Store -------------------------------------------------------------------------------- /Slider.doccarchive/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Slider.doccarchive/favicon.ico -------------------------------------------------------------------------------- /Slider_Example/Flows/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Slider_Example/Flows/.DS_Store -------------------------------------------------------------------------------- /Screenshots/leftToRightCustom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Screenshots/leftToRightCustom.png -------------------------------------------------------------------------------- /Screenshots/leftToRightDefault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Screenshots/leftToRightDefault.png -------------------------------------------------------------------------------- /Screenshots/rightToLeftDefault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Screenshots/rightToLeftDefault.png -------------------------------------------------------------------------------- /Slider.doccarchive/index/data.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Slider.doccarchive/index/data.mdb -------------------------------------------------------------------------------- /Slider.doccarchive/developer-og.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Slider.doccarchive/developer-og.jpg -------------------------------------------------------------------------------- /Slider_Example/Flows/Main/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Slider_Example/Flows/Main/.DS_Store -------------------------------------------------------------------------------- /Slider.doccarchive/index/navigator.index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Slider.doccarchive/index/navigator.index -------------------------------------------------------------------------------- /Slider.doccarchive/developer-og-twitter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Slider.doccarchive/developer-og-twitter.jpg -------------------------------------------------------------------------------- /Slider.doccarchive/index/availability.index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Slider.doccarchive/index/availability.index -------------------------------------------------------------------------------- /Slider_Example/Supporting Files/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Slider.doccarchive/metadata.json: -------------------------------------------------------------------------------- 1 | {"schemaVersion":{"major":0,"minor":1,"patch":0},"bundleDisplayName":"Slider","bundleIdentifier":"Ramiz-Kichibekov.Slider"} -------------------------------------------------------------------------------- /Tests/SliderTests/SliderTests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | @testable import Slider 3 | 4 | final class SliderTests: XCTestCase { 5 | func testExample() throws { 6 | XCTAssertEqual(4, 4) 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Slider.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.swiftpm/xcode/package.xcworkspace/xcuserdata/ramizkichibekov.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/.swiftpm/xcode/package.xcworkspace/xcuserdata/ramizkichibekov.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Slider.xcodeproj/xcuserdata/ramizkichibekov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /Slider.xcodeproj/project.xcworkspace/xcuserdata/ramizkichibekov.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ramiz69/Slider/HEAD/Slider.xcodeproj/project.xcworkspace/xcuserdata/ramizkichibekov.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Slider.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Sources/Managers/LoggerManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LoggerManager.swift 3 | // Slider 4 | // 5 | // Created by Рамиз Кичибеков on 06.01.2025. 6 | // Copyright © 2025 Ramiz Kichibekov. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import OSLog 11 | 12 | extension Logger { 13 | private static let subsystem: String = "Slider" 14 | 15 | static let haptic = Logger(subsystem: subsystem, category: "haptic_feedback") 16 | } 17 | -------------------------------------------------------------------------------- /Sources/Slider.h: -------------------------------------------------------------------------------- 1 | // 2 | // Slider.h 3 | // Slider 4 | // 5 | // Created by Рамиз Кичибеков on 05.01.2020. 6 | // Copyright © 2020 Ramiz Kichibekov. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for Slider. 12 | FOUNDATION_EXPORT double SliderVersionNumber; 13 | 14 | //! Project version string for Slider. 15 | FOUNDATION_EXPORT const unsigned char SliderVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version: 6.0 2 | 3 | import PackageDescription 4 | 5 | let package = Package( 6 | name: "Slider", 7 | platforms: [ 8 | .iOS(.v14) 9 | ], 10 | products: [ 11 | .library( 12 | name: "Slider", 13 | targets: ["Slider"]), 14 | ], 15 | dependencies: [], 16 | targets: [ 17 | .target( 18 | name: "Slider", 19 | dependencies: []), 20 | .testTarget( 21 | name: "SliderTests", 22 | dependencies: ["Slider"]), 23 | ], 24 | swiftLanguageModes: [.v6] 25 | ) 26 | -------------------------------------------------------------------------------- /Slider.doccarchive/img/deprecated-icon.7bf1740a.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /Slider.doccarchive/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/step/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/delegate/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/maximum/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/minimum/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/value/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/sliderdelegate/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/hapticconfiguration/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/continuous/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/cornerradius/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/init(frame:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/thumbconfiguration/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/trackconfiguration/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/addaction(_:for:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/hapticconfiguration/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/layoutsubviews()/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/previoustouchpoint/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/thumbconfiguration/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/trackconfiguration/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/thumbconfiguration/size/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/trackconfiguration/height/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/trackconfiguration/inset/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/rangeendpointsconfiguration/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/addtarget(_:action:for:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/begintracking(_:with:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/direction-swift.enum/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/direction-swift.property/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/endtracking(_:with:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/init(direction:frame:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/intrinsiccontentsize/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/removeaction(_:for:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/usabletrackinglength/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/thumbconfiguration/borderwidth/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/thumbconfiguration/fontsize/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/trackconfiguration/maxcolor/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/trackconfiguration/mincolor/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/animationstyle-swift.enum/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/animationstyle-swift.property/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/continuetracking(_:with:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/direction-swift.enum/!=(_:_:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/maximumendpointconfiguration/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/minimumendpointconfiguration/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/removetarget(_:action:for:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/thumbconfiguration/backgroundcolor/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/trackconfiguration/reversemincolor/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/animationstyle-swift.enum/!=(_:_:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/animationstyle-swift.enum/default/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/animationstyle-swift.enum/none/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/direction-swift.enum/bottomtotop/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/direction-swift.enum/lefttoright/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/direction-swift.enum/righttoleft/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/direction-swift.enum/toptobottom/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/sliderdelegate/didbegintracking(_:)-51xp9/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/sliderdelegate/didbegintracking(_:)-7wwfi/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/sliderdelegate/didendtracking(_:)-28et/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/sliderdelegate/didendtracking(_:)-2wyzq/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/sliderdelegate/didcontinuetracking(_:)-3v87/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/sliderdelegate/didcontinuetracking(_:)-57wz9/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/sliderdelegate/slider(_:displaytextforvalue:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/img/added-icon.832a5d2c.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/direction-swift.enum/equatable-implementations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/slider/animationstyle-swift.enum/equatable-implementations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/thumbconfiguration/init(backgroundcolor:fontsize:size:borderwidth:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/js/highlight-js-shell-js.0ad5b20f.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[176],{7874:function(s){function e(s){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}s.exports=e}}]); -------------------------------------------------------------------------------- /.swiftpm/xcode/xcuserdata/ramizkichibekov.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Slider.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | Slider 16 | 17 | primary 18 | 19 | 20 | SliderTests 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/trackconfiguration/init(maxcolor:mincolor:reversemincolor:height:inset:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/rangeendpointsconfiguration/init(anchorpoint:foregroundcolor:fontsize:aligmentmode:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /.github/workflows/swift.yml: -------------------------------------------------------------------------------- 1 | name: "Slider CI" 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | - development 8 | pull_request: 9 | branches: 10 | - master 11 | - development 12 | jobs: 13 | iOS: 14 | name: Test iOS 15 | runs-on: macOS-latest 16 | env: 17 | DEVELOPER_DIR: /Applications/Xcode_13.4.1.app/Contents/Developer 18 | strategy: 19 | matrix: 20 | destination: ["OS=14.5,name=iPhone 11 Pro"] #, "OS=12.4,name=iPhone XS", "OS=11.4,name=iPhone X", "OS=10.3.1,name=iPhone SE"] 21 | steps: 22 | - uses: actions/checkout@v1 23 | - name: iOS - ${{ matrix.destination }} 24 | run: xcodebuild -project "Slider.xcodeproj" -destination "${{ matrix.destination }}" 25 | -------------------------------------------------------------------------------- /Slider.xcodeproj/xcuserdata/ramizkichibekov.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Slider.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 1 11 | 12 | Slider_Example.xcscheme_^#shared#^_ 13 | 14 | orderHint 15 | 0 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | 4B2EB6C123C1E11E00FB91AD 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Slider.doccarchive/documentation/slider/hapticconfiguration/init(reachlimitvaluehapticenabled:changevaluehapticenabled:changedirectionhapticenabled:reachimpactgeneratorstyle:changevalueimpactgeneratorstyle:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /RKSlider.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |spec| 2 | 3 | spec.name = 'RKSlider' 4 | spec.version = '0.2.1' 5 | spec.summary = 'A CocoaPods library written in Swift' 6 | 7 | spec.description = <<-DESC 8 | This CocoaPods library helps you create application with the best slider. 9 | DESC 10 | 11 | spec.homepage = 'https://github.com/Ramiz69/Slider' 12 | 13 | spec.license = 'MIT' 14 | 15 | spec.author = { 'Ramiz Kichibekov' => 'ramiz161@icloud.com' } 16 | spec.social_media_url = 'https://t.me/Ramiz69' 17 | 18 | spec.ios.deployment_target = "14.0" 19 | 20 | spec.source = { :git => 'https://github.com/Ramiz69/Slider.git', :tag => spec.version } 21 | 22 | spec.swift_version = ['6.0'] 23 | 24 | spec.source_files = 'Sources/*.swift', 'Sources/**/*.swift' 25 | 26 | end 27 | -------------------------------------------------------------------------------- /Sources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | 22 | 23 | -------------------------------------------------------------------------------- /RKSlider/0.0.2/RKSlider.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |spec| 2 | 3 | spec.name = 'RKSlider' 4 | spec.version = '0.0.2' 5 | spec.summary = 'A CocoaPods library written in Swift' 6 | 7 | spec.description = <<-DESC 8 | This CocoaPods library helps you create application with the best slider. 9 | DESC 10 | 11 | spec.homepage = 'https://github.com/Ramiz69/Slider' 12 | 13 | spec.license = 'MIT' 14 | 15 | spec.author = { 'Ramiz Kichibekov' => 'ramiz161@icloud.com' } 16 | spec.social_media_url = 'https://t.me/Ramiz69' 17 | 18 | spec.ios.deployment_target = "11.0" 19 | 20 | spec.source = { :git => 'https://github.com/Ramiz69/Slider.git', :tag => spec.version } 21 | 22 | spec.swift_version = ['5.0', '5.1'] 23 | 24 | spec.source_files = 'Slider/*.swift', 'Slider/**/*.swift' 25 | 26 | end 27 | -------------------------------------------------------------------------------- /RKSlider/0.0.7/RKSlider.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |spec| 2 | 3 | spec.name = 'RKSlider' 4 | spec.version = '0.0.7' 5 | spec.summary = 'A CocoaPods library written in Swift' 6 | 7 | spec.description = <<-DESC 8 | This CocoaPods library helps you create application with the best slider. 9 | DESC 10 | 11 | spec.homepage = 'https://github.com/Ramiz69/Slider' 12 | 13 | spec.license = 'MIT' 14 | 15 | spec.author = { 'Ramiz Kichibekov' => 'ramiz161@icloud.com' } 16 | spec.social_media_url = 'https://t.me/Ramiz69' 17 | 18 | spec.ios.deployment_target = "14.0" 19 | 20 | spec.source = { :git => 'https://github.com/Ramiz69/Slider.git', :tag => spec.version } 21 | 22 | spec.swift_version = ['5.0', '5.9'] 23 | 24 | spec.source_files = 'Slider/*.swift', 'Slider/**/*.swift' 25 | 26 | end 27 | -------------------------------------------------------------------------------- /RKSlider/0.0.8/RKSlider.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |spec| 2 | 3 | spec.name = 'RKSlider' 4 | spec.version = '0.0.8' 5 | spec.summary = 'A CocoaPods library written in Swift' 6 | 7 | spec.description = <<-DESC 8 | This CocoaPods library helps you create application with the best slider. 9 | DESC 10 | 11 | spec.homepage = 'https://github.com/Ramiz69/Slider' 12 | 13 | spec.license = 'MIT' 14 | 15 | spec.author = { 'Ramiz Kichibekov' => 'ramiz161@icloud.com' } 16 | spec.social_media_url = 'https://t.me/Ramiz69' 17 | 18 | spec.ios.deployment_target = "14.0" 19 | 20 | spec.source = { :git => 'https://github.com/Ramiz69/Slider.git', :tag => spec.version } 21 | 22 | spec.swift_version = ['5.0', '5.9'] 23 | 24 | spec.source_files = 'Slider/*.swift', 'Slider/**/*.swift' 25 | 26 | end 27 | -------------------------------------------------------------------------------- /RKSlider/0.0.9/RKSlider.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |spec| 2 | 3 | spec.name = 'RKSlider' 4 | spec.version = '0.0.9' 5 | spec.summary = 'A CocoaPods library written in Swift' 6 | 7 | spec.description = <<-DESC 8 | This CocoaPods library helps you create application with the best slider. 9 | DESC 10 | 11 | spec.homepage = 'https://github.com/Ramiz69/Slider' 12 | 13 | spec.license = 'MIT' 14 | 15 | spec.author = { 'Ramiz Kichibekov' => 'ramiz161@icloud.com' } 16 | spec.social_media_url = 'https://t.me/Ramiz69' 17 | 18 | spec.ios.deployment_target = "14.0" 19 | 20 | spec.source = { :git => 'https://github.com/Ramiz69/Slider.git', :tag => spec.version } 21 | 22 | spec.swift_version = ['5.0', '5.9'] 23 | 24 | spec.source_files = 'Sources/*.swift', 'Sources/**/*.swift' 25 | 26 | end 27 | -------------------------------------------------------------------------------- /RKSlider/0.1.0/RKSlider.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |spec| 2 | 3 | spec.name = 'RKSlider' 4 | spec.version = '0.1.0' 5 | spec.summary = 'A CocoaPods library written in Swift' 6 | 7 | spec.description = <<-DESC 8 | This CocoaPods library helps you create application with the best slider. 9 | DESC 10 | 11 | spec.homepage = 'https://github.com/Ramiz69/Slider' 12 | 13 | spec.license = 'MIT' 14 | 15 | spec.author = { 'Ramiz Kichibekov' => 'ramiz161@icloud.com' } 16 | spec.social_media_url = 'https://t.me/Ramiz69' 17 | 18 | spec.ios.deployment_target = "14.0" 19 | 20 | spec.source = { :git => 'https://github.com/Ramiz69/Slider.git', :tag => spec.version } 21 | 22 | spec.swift_version = ['5.0', '5.9'] 23 | 24 | spec.source_files = 'Sources/*.swift', 'Sources/**/*.swift' 25 | 26 | end 27 | -------------------------------------------------------------------------------- /RKSlider/0.1.1/RKSlider.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |spec| 2 | 3 | spec.name = 'RKSlider' 4 | spec.version = '0.1.1' 5 | spec.summary = 'A CocoaPods library written in Swift' 6 | 7 | spec.description = <<-DESC 8 | This CocoaPods library helps you create application with the best slider. 9 | DESC 10 | 11 | spec.homepage = 'https://github.com/Ramiz69/Slider' 12 | 13 | spec.license = 'MIT' 14 | 15 | spec.author = { 'Ramiz Kichibekov' => 'ramiz161@icloud.com' } 16 | spec.social_media_url = 'https://t.me/Ramiz69' 17 | 18 | spec.ios.deployment_target = "14.0" 19 | 20 | spec.source = { :git => 'https://github.com/Ramiz69/Slider.git', :tag => spec.version } 21 | 22 | spec.swift_version = ['5.0', '5.9'] 23 | 24 | spec.source_files = 'Sources/*.swift', 'Sources/**/*.swift' 25 | 26 | end 27 | -------------------------------------------------------------------------------- /Slider.doccarchive/js/highlight-js-json-js.2a1856ba.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[82],{14:function(e){function n(e){const n={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},c={match:/[{}[\],:]/,className:"punctuation",relevance:0},a={beginKeywords:["true","false","null"].join(" ")};return{name:"JSON",contains:[n,c,e.QUOTE_STRING_MODE,a,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}e.exports=n}}]); -------------------------------------------------------------------------------- /Slider.doccarchive/js/highlight-js-diff-js.4db9a783.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[213],{7731:function(e){function n(e){const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}e.exports=n}}]); -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Kichibekov Ramiz 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Slider.doccarchive/img/modified-icon.efb2697d.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /Sources/Documentation.docc/ThumbConfiguration.md: -------------------------------------------------------------------------------- 1 | # ``Slider/ThumbConfiguration`` 2 | 3 | ## Overview 4 | 5 | Use `ThumbConfiguration` to define the appearance of the slider's thumb. This structure provides customization options for the thumb's background color, font size, physical size, and border width. 6 | 7 | ## Topics 8 | 9 | ### Initialization 10 | 11 | - ``init(backgroundColor:fontSize:size:borderWidth:)`` 12 | 13 | ### Customization Options 14 | 15 | - ``backgroundColor`` 16 | The background color of the thumb. Defaults to `.white`. 17 | - ``fontSize`` 18 | The font size used for any text within the thumb. Defaults to `14`. 19 | - ``size`` 20 | The size of the thumb, specified as a `CGSize`. Defaults to `(width: 60, height: 36)`. 21 | - ``borderWidth`` 22 | The width of the thumb's border. Defaults to `4`. 23 | 24 | ## Example Usage 25 | 26 | ```swift 27 | let thumbConfig = ThumbConfiguration(backgroundColor: .lightGray, 28 | fontSize: 12, 29 | size: CGSize(width: 50, height: 30), 30 | borderWidth: 2) 31 | let slider = Slider() 32 | slider.thumbConfiguration = thumbConfig 33 | ``` 34 | -------------------------------------------------------------------------------- /Sources/Documentation.docc/RangeEndpointConfiguration.md: -------------------------------------------------------------------------------- 1 | # ``Slider/RangeEndpointsConfiguration`` 2 | 3 | ## Overview 4 | 5 | `RangeEndpointsConfiguration` defines the appearance and positioning of the text labels at the minimum and maximum ends of the `Slider`. It allows customization of the anchor point, text color, font size, and text alignment. 6 | 7 | ## Topics 8 | 9 | ### Initialization 10 | 11 | - ``init(anchorPoint:foregroundColor:fontSize:aligmentMode:)`` 12 | 13 | ### Configuration Options 14 | 15 | - ``anchorPoint`` 16 | The anchor point for the text layer of the endpoint label. Defaults to the center of the layer. 17 | - ``foregroundColor`` 18 | The color used for the endpoint text. Defaults to white. 19 | - ``fontSize`` 20 | The font size of the endpoint text. Defaults to `12`. 21 | - ``aligmentMode`` 22 | The alignment of the text within the text layer. Defaults to `.center`. 23 | 24 | ## Example Usage 25 | 26 | ```swift 27 | let endpointsConfig = RangeEndpointsConfiguration( 28 | anchorPoint: CGPoint(x: 0.5, y: 0.5), 29 | foregroundColor: UIColor.white.cgColor, 30 | fontSize: 14, 31 | aligmentMode: .left 32 | ) 33 | let slider = Slider() 34 | slider.minimumEndpointConfiguration = endpointsConfig 35 | slider.maximumEndpointConfiguration = endpointsConfig 36 | ``` 37 | -------------------------------------------------------------------------------- /Slider.doccarchive/js/highlight-js-http-js.f78e83c2.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[878],{8937:function(e){function n(e){const n=e.regex,a="HTTP/(2|1\\.[01])",s=/[A-Za-z][A-Za-z0-9-]*/,t={className:"attribute",begin:n.concat("^",s,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},i=[t,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})",end:/$/,contains:[{className:"meta",begin:a},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},{begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},e.inherit(t,{relevance:0})]}}e.exports=n}}]); -------------------------------------------------------------------------------- /.github/workflows/publish-pages.yml: -------------------------------------------------------------------------------- 1 | name: Deploy DocC 2 | on: 3 | # Runs on pushes targeting the default branch 4 | push: 5 | branches: ["master"] 6 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages 7 | permissions: 8 | contents: read 9 | pages: write 10 | id-token: write 11 | # Allow one concurrent deployment 12 | concurrency: 13 | group: "pages" 14 | cancel-in-progress: true 15 | jobs: 16 | deploy: 17 | runs-on: macOS-latest 18 | environment: 19 | name: github-pages 20 | url: ${{ steps.deployment.outputs.page_url }} 21 | steps: 22 | - name: Setup Xcode version 23 | uses: maxim-lobanov/setup-xcode@v1.6.0 24 | with: 25 | xcode-version: latest 26 | - name: Checkout 🛎️ 27 | uses: actions/checkout@v3 28 | - name: Build DocC 29 | run: | 30 | xcodebuild docbuild -scheme Slider \ 31 | -derivedDataPath /tmp/docbuild \ 32 | -destination 'generic/platform=iOS'; 33 | $(xcrun --find docc) process-archive \ 34 | transform-for-static-hosting /tmp/docbuild/Build/Products/Debug-iphoneos/Slider.doccarchive \ 35 | --hosting-base-path master \ 36 | --output-path docs; 37 | - name: Upload artifact 📜 38 | uses: actions/upload-pages-artifact@v3.0.1 39 | with: 40 | path: 'docs' 41 | - name: Deploy to GitHub Pages 42 | id: deployment 43 | uses: actions/deploy-pages@v4.0.5 44 | -------------------------------------------------------------------------------- /Slider.doccarchive/favicon.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /Slider_Example/Application/SceneDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SceneDelegate.swift 3 | // 4 | // Copyright (c) 2024 Ramiz Kichibekov (https://github.com/ramiz69) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | import UIKit 26 | 27 | final class SceneDelegate: UIResponder, UIWindowSceneDelegate { 28 | 29 | var window: UIWindow? 30 | 31 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { 32 | 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /Slider_Example/Flows/Main/Extensions/CodeViewController+SliderDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CodeViewController+SliderDelegate.swift 3 | // 4 | // Copyright (c) 2024 Ramiz Kichibekov (https://github.com/ramiz69) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | import UIKit 26 | import Slider 27 | 28 | extension CodeViewController: SliderDelegate { 29 | 30 | func slider(_ slider: Slider, displayTextForValue value: CGFloat) -> String { 31 | print(value) 32 | return "\(value)" 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /Sources/TextLayer.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TextLayer.swift 3 | // 4 | // Copyright (c) 2024 Ramiz Kichibekov (https://github.com/ramiz69) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | import QuartzCore 26 | import CoreGraphics 27 | 28 | final class TextLayer: CATextLayer { 29 | 30 | override func draw(in ctx: CGContext) { 31 | let height = bounds.size.height 32 | let yDiff = (height - fontSize) / 2 - fontSize / 10 33 | 34 | ctx.saveGState() 35 | ctx.translateBy(x: .zero, y: yDiff) 36 | super.draw(in: ctx) 37 | 38 | ctx.restoreGState() 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Slider_Example/Application/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Sources/Extensions/String.swift: -------------------------------------------------------------------------------- 1 | // 2 | // String.swift 3 | // 4 | // Copyright (c) 2020 Ramiz Kichibekov (https://github.com/ramiz69) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | import UIKit 26 | 27 | extension String { 28 | 29 | func size(withConstrainedWidth width: CGFloat, font: UIFont) -> CGRect { 30 | let constraintRect = CGSize(width: width, 31 | height: .greatestFiniteMagnitude) 32 | let boundingBox = self.boundingRect(with: constraintRect, 33 | options: .usesLineFragmentOrigin, 34 | attributes: [.font: font], 35 | context: nil) 36 | 37 | return boundingBox 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Sources/Documentation.docc/TrackConfiguration.md: -------------------------------------------------------------------------------- 1 | # ``Slider/TrackConfiguration`` 2 | 3 | ## Overview 4 | 5 | `TrackConfiguration` defines the appearance settings for the track of the `Slider` control. It allows customization of the track's colors, height, and inset. 6 | 7 | ## Properties 8 | 9 | - `maxColor`: The color used for the track's background. Default value is a light gray color. 10 | - `minColor`: The color used for the portion of the track that represents values less than the slider's current value. Default value is the system blue color. 11 | - `reverseMinColor`: The color used for the portion of the track that represents values greater than the slider's current value when the slider's direction is reversed. Default value is a red color. 12 | - `height`: The height of the track. Default value is `36`. 13 | - `inset`: The inset of the track within the slider's bounds. Default value is `0`, which means the track will extend the full width/height of the slider. 14 | 15 | ## Initialization 16 | 17 | ### ``init(maxColor:minColor:reverseMinColor:height:inset:)`` 18 | 19 | Initializes a `TrackConfiguration` instance with specified colors, height, and inset. 20 | 21 | - Parameters: 22 | - `maxColor`: The color for the track's background. 23 | - `minColor`: The color for the track segment representing values below the slider's current value. 24 | - `reverseMinColor`: The color for the track segment representing values above the slider's current value in a reversed direction. 25 | - `height`: The height of the track. 26 | - `inset`: The inset for the track within the slider's bounds. 27 | 28 | ## Example Usage 29 | 30 | ```swift 31 | let trackConfig = TrackConfiguration(maxColor: UIColor.lightGray, 32 | minColor: UIColor.blue, 33 | reverseMinColor: UIColor.red, 34 | height: 20, 35 | inset: 2) 36 | let slider = Slider() 37 | slider.trackConfiguration = trackConfig 38 | ``` 39 | -------------------------------------------------------------------------------- /Sources/ThumbLayer.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThumbLayer.swift 3 | // 4 | // Copyright (c) 2024 Ramiz Kichibekov (https://github.com/ramiz69) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | import Foundation 26 | import QuartzCore 27 | import CoreGraphics 28 | 29 | final class ThumbLayer: CATextLayer { 30 | 31 | // MARK: Life cycle 32 | 33 | override func setNeedsDisplay() { 34 | super.setNeedsDisplay() 35 | 36 | configureBorder() 37 | } 38 | 39 | override func draw(in ctx: CGContext) { 40 | let height = bounds.size.height 41 | let yDiff = (height - fontSize) / 2 - fontSize / 10 42 | 43 | ctx.saveGState() 44 | ctx.translateBy(x: .zero, y: yDiff) 45 | super.draw(in: ctx) 46 | 47 | ctx.restoreGState() 48 | } 49 | 50 | private func configureBorder() { 51 | borderColor = foregroundColor 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Slider_Example/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /Sources/Documentation.docc/SliderDelegate.md: -------------------------------------------------------------------------------- 1 | # ``Slider/SliderDelegate`` 2 | 3 | ## Overview 4 | 5 | `SliderDelegate` defines a set of methods that you can use to respond to various slider events and to customize the text displayed for the slider's value. It's marked with `@MainActor` to ensure that all protocol methods are executed on the main thread, which is crucial for UI updates. The protocol provides default implementations for tracking methods, so you only need to implement `slider(_:displayTextForValue:)` and any tracking methods you're interested in. 6 | 7 | ## Topics 8 | 9 | ### Required Methods 10 | 11 | - ``slider(_:displayTextForValue:)`` 12 | Asks the delegate for the display text for a specific value of the slider. Implement this method to return a customized text representation of the slider's value. 13 | 14 | ### Optional Methods 15 | 16 | The following methods have default empty implementations, making them optional: 17 | 18 | - ``didBeginTracking(_:)`` 19 | Tells the delegate that the user has started interacting with the slider. Override this method to respond to the beginning of the user's tracking action. 20 | - ``didContinueTracking(_:)`` 21 | Informs the delegate that the user is continuing to move the slider. Override this method to track changes as the user drags the slider. 22 | - ``didEndTracking(_:)`` 23 | Notifies the delegate that the user has finished interacting with the slider. Override this method to perform any final actions when the user completes the tracking. 24 | 25 | ## Example Usage 26 | 27 | ```swift 28 | extension YourViewController: SliderDelegate { 29 | public func slider(_ slider: Slider, displayTextForValue value: CGFloat) -> String { 30 | // Return a string representation of the value 31 | return String(format: "%.2f", value) 32 | } 33 | 34 | public func didBeginTracking(_ slider: Slider) { 35 | // Respond to the start of tracking 36 | print("Started tracking slider.") 37 | } 38 | 39 | // No need to override didContinueTracking and didEndTracking unless you need specific behavior. 40 | } 41 | ``` 42 | -------------------------------------------------------------------------------- /Slider_Example/Application/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // 4 | // Copyright (c) 2024 Ramiz Kichibekov (https://github.com/ramiz69) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | import UIKit 26 | 27 | @main 28 | final class AppDelegate: UIResponder, UIApplicationDelegate { 29 | 30 | func application(_ application: UIApplication, 31 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 32 | true 33 | } 34 | 35 | // MARK: UISceneSession Lifecycle 36 | 37 | func application(_ application: UIApplication, 38 | configurationForConnecting connectingSceneSession: UISceneSession, 39 | options: UIScene.ConnectionOptions) -> UISceneConfiguration { 40 | UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) 41 | } 42 | 43 | func application(_ application: UIApplication, 44 | didDiscardSceneSessions sceneSessions: Set) { 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /Slider.doccarchive/js/highlight-js-xml-js.0d78f903.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[490],{4610:function(e){function n(e){const n=e.regex,a=n.concat(/[A-Z_]/,n.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),s=/[A-Za-z0-9._:-]+/,t={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},c={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},i=e.inherit(c,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{className:"string"}),r=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),g={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[c,r,l,i,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[c,i,r,l]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},t,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[g],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[g],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:n.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:a,relevance:0,starts:g}]},{className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(a,/>/))),contains:[{className:"name",begin:a,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}e.exports=n}}]); -------------------------------------------------------------------------------- /Slider_Example/Supporting Files/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UIApplicationSceneManifest 24 | 25 | UIApplicationSupportsMultipleScenes 26 | 27 | UISceneConfigurations 28 | 29 | UIWindowSceneSessionRoleApplication 30 | 31 | 32 | UISceneConfigurationName 33 | Default Configuration 34 | UISceneDelegateClassName 35 | $(PRODUCT_MODULE_NAME).SceneDelegate 36 | UISceneStoryboardFile 37 | Main 38 | 39 | 40 | 41 | 42 | UILaunchStoryboardName 43 | LaunchScreen 44 | UIMainStoryboardFile 45 | Main 46 | UIRequiredDeviceCapabilities 47 | 48 | armv7 49 | 50 | UISupportedInterfaceOrientations 51 | 52 | UIInterfaceOrientationPortrait 53 | UIInterfaceOrientationLandscapeLeft 54 | UIInterfaceOrientationLandscapeRight 55 | 56 | UISupportedInterfaceOrientations~ipad 57 | 58 | UIInterfaceOrientationPortrait 59 | UIInterfaceOrientationPortraitUpsideDown 60 | UIInterfaceOrientationLandscapeLeft 61 | UIInterfaceOrientationLandscapeRight 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /Slider.doccarchive/js/highlight-js-markdown-js.a2f456af.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[113],{1312:function(e){function n(e){const n=e.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},c={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},s={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},t={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},d=/[A-Za-z][A-Za-z0-9+.-]*/,l={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:n.concat(/\[.+?\]\(/,d,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},g={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},b={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};g.contains.push(b),b.contains.push(g);let o=[a,l];g.contains=g.contains.concat(o),b.contains=b.contains.concat(o),o=o.concat(g,b);const r={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:o},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:o}]}]},u={className:"quote",begin:"^>\\s+",contains:o,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[r,a,s,g,b,u,c,i,l,t]}}e.exports=n}}]); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Slider 2 | 3 | ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/ramiz69/Slider/swift.yml) 4 | [![Version](https://img.shields.io/cocoapods/v/RKSlider.svg?style=flat)](https://cocoapods.org/pods/RKSlider) 5 | [![License](https://img.shields.io/cocoapods/l/RKSlider.svg?style=flat)](https://cocoapods.org/pods/RKSlider) 6 | [![Platform](https://img.shields.io/cocoapods/p/RKSlider.svg?style=flat)](https://cocoapods.org/pods/RKSlider) 7 | ![GitHub Release](https://img.shields.io/github/v/release/ramiz69/Slider) 8 | [![Swift](https://img.shields.io/badge/swift-5.9-orange.svg)](https://swift.org) 9 | 10 | - [Installation](#installation) 11 | - [Author](#author) 12 | - [License](#license) 13 | 14 | ## Requirements 15 | 16 | - iOS 14.0+ 17 | - Xcode 16+ 18 | - Swift 5+ 19 | 20 | ## Preview 21 |
22 | Preview 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | ## Installation 31 | 32 | ### Swift Package Manager 33 | 34 | The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. 35 | 36 | Once you have your Swift package set up, adding Slider as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift` or the Package list in Xcode. 37 | 38 | ```swift 39 | dependencies: [ 40 | .package(url: "https://github.com/Ramiz69/Slider.git", .upToNextMajor(from: "0.2.1")) 41 | ] 42 | ``` 43 | 44 | Normally you'll want to depend on the `Slider` target: 45 | 46 | ```swift 47 | .product(name: "Slider", package: "Slider") 48 | ``` 49 | 50 | ### CocoaPods 51 | 52 | [CocoaPods](https://cocoapods.org) is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate Slider into your Xcode project using CocoaPods, specify it in your `Podfile`: 53 | 54 | ```ruby 55 | pod 'RKSlider' 56 | ``` 57 | 58 | ### Manually 59 | copy `Slider.swift` to your project 60 | 61 | ### Usage 62 | 63 | #### code 64 | - init Slider with frame or use Auto Layout 65 | - add a view to your superview 66 | 67 | ## Author 68 | 69 | ramiz69, ramiz161@icloud.com 70 | 71 | ## License 72 | 73 | Slider is available under the MIT license. [See LICENSE](https://github.com/Ramiz69/Slider/blob/master/LICENSE) for details. 74 | -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/layoutsubviews().json: -------------------------------------------------------------------------------- 1 | {"schemaVersion":{"minor":3,"patch":0,"major":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/slider\/slider\/layoutsubviews()"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/layoutSubviews()"},"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider"]]},"sections":[],"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["iOS"],"tokens":[{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"layoutSubviews","kind":"identifier"},{"text":"()","kind":"text"}]}]}],"abstract":[{"type":"text","text":"Lays out the slider’s subviews and updates the layout based on the current state and properties."}],"metadata":{"modules":[{"name":"Slider"}],"roleHeading":"Instance Method","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"layoutSubviews"},{"kind":"text","text":"()"}],"symbolKind":"method","externalID":"c:@M@Slider@objc(cs)Slider(im)layoutSubviews","title":"layoutSubviews()"},"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Slider","kind":"identifier"}],"role":"symbol","title":"Slider","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","type":"topic","abstract":[{"text":"An open class that extends ","type":"text"},{"code":"UIControl","type":"codeVoice"},{"type":"text","text":" to create a customizable slider component."}],"navigatorTitle":[{"kind":"identifier","text":"Slider"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/layoutSubviews()":{"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/layoutSubviews()","kind":"symbol","abstract":[{"type":"text","text":"Lays out the slider’s subviews and updates the layout based on the current state and properties."}],"type":"topic","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"layoutSubviews","kind":"identifier"},{"text":"()","kind":"text"}],"title":"layoutSubviews()","url":"\/documentation\/slider\/slider\/layoutsubviews()"}}} -------------------------------------------------------------------------------- /Slider.xcodeproj/xcshareddata/xcschemes/Slider.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 9 | 10 | 16 | 22 | 23 | 24 | 25 | 26 | 32 | 33 | 43 | 44 | 50 | 51 | 57 | 58 | 59 | 60 | 62 | 63 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /Sources/Configurations/HapticConfiguration.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HapticConfiguration.swift 3 | // Slider 4 | // 5 | // Created by Рамиз Кичибеков on 06.01.2025. 6 | // Copyright © 2025 Ramiz Kichibekov. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// A structure describing the configuration for haptic feedback. 12 | public struct HapticConfiguration { 13 | 14 | // MARK: Properties 15 | 16 | /// An option set that defines the type(s) of haptic feedback. 17 | /// 18 | /// **Available cases:** 19 | /// - `transient`: A short, impulse-like haptic. 20 | /// - `continuous`: A continuous haptic. 21 | public struct Kind: OptionSet, Sendable { 22 | public typealias RawValue = UInt8 23 | 24 | public var rawValue: UInt8 25 | 26 | nonisolated public init(rawValue: UInt8) { 27 | self.rawValue = rawValue 28 | } 29 | 30 | public static let transient = Kind(rawValue: 1 << 0) 31 | public static let continuous = Kind(rawValue: 1 << 1) 32 | } 33 | /// The type(s) of haptic feedback (see `Kind`). 34 | let kind: Kind 35 | 36 | /// The initial intensity of the haptic feedback, in the range [0, 1]. 37 | let initialIntensity: Float 38 | 39 | /// The initial sharpness of the haptic feedback, in the range [0, 1]. 40 | let initialSharpness: Float 41 | 42 | /// A relative time (such as a delay) before the haptic feedback begins. 43 | let relativeTime: TimeInterval 44 | 45 | /// The total duration of the haptic feedback, relevant for continuous types. 46 | let duration: TimeInterval 47 | 48 | // MARK: Initial methods 49 | 50 | /** 51 | Creates a new `HapticConfiguration`. 52 | 53 | - Parameters: 54 | - kind: The type(s) of haptic feedback. Defaults to `[.transient, .continuous]`. 55 | - initialIntensity: The initial intensity of the haptic (0 to 1). Defaults to `1`. 56 | - initialSharpness: The initial sharpness of the haptic (0 to 1). Defaults to `0.5`. 57 | - relativeTime: The relative time or delay before the haptic feedback starts. Defaults to `.zero`. 58 | - duration: The duration of the haptic feedback, mainly for continuous types. Defaults to `100`. 59 | */ 60 | public init( 61 | kind: Kind = [.transient, .continuous], 62 | initialIntensity: Float = 1, 63 | initialSharpness: Float = 0.5, 64 | relativeTime: TimeInterval = .zero, 65 | duration: TimeInterval = 100 66 | ) { 67 | self.kind = kind 68 | self.initialIntensity = initialIntensity 69 | self.initialSharpness = initialSharpness 70 | self.relativeTime = relativeTime 71 | self.duration = duration 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/continuous.json: -------------------------------------------------------------------------------- 1 | {"metadata":{"title":"continuous","role":"symbol","roleHeading":"Instance Property","symbolKind":"property","externalID":"s:6SliderAAC10continuousSbvp","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"continuous"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"modules":[{"name":"Slider"}]},"identifier":{"url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/continuous","interfaceLanguage":"swift"},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"final"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"continuous","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"platforms":["iOS"],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider"]]},"abstract":[{"type":"text","text":"Indicates if the value change events are continuous during user interaction."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/slider\/slider\/continuous"]}],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Slider","kind":"identifier"}],"role":"symbol","title":"Slider","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","type":"topic","abstract":[{"text":"An open class that extends ","type":"text"},{"code":"UIControl","type":"codeVoice"},{"type":"text","text":" to create a customizable slider component."}],"navigatorTitle":[{"kind":"identifier","text":"Slider"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/continuous":{"title":"continuous","url":"\/documentation\/slider\/slider\/continuous","role":"symbol","abstract":[{"text":"Indicates if the value change events are continuous during user interaction.","type":"text"}],"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/continuous","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"continuous"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"type":"topic","kind":"symbol"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"}}} -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/previoustouchpoint.json: -------------------------------------------------------------------------------- 1 | {"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider"]]},"abstract":[{"type":"text","text":"Used for tracking the user’s touch location during interaction."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/slider\/slider\/previoustouchpoint"]}],"kind":"symbol","sections":[],"identifier":{"url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/previousTouchPoint","interfaceLanguage":"swift"},"metadata":{"role":"symbol","roleHeading":"Instance Property","modules":[{"name":"Slider"}],"externalID":"s:6SliderAAC18previousTouchPointSo7CGPointVvp","symbolKind":"property","title":"previousTouchPoint","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"previousTouchPoint","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@S@CGPoint","text":"CGPoint","kind":"typeIdentifier"}]},"schemaVersion":{"patch":0,"minor":3,"major":0},"primaryContentSections":[{"declarations":[{"platforms":["iOS"],"tokens":[{"text":"final","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"previousTouchPoint","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGPoint","preciseIdentifier":"c:@S@CGPoint"}],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"title":"Slider","role":"collection","kind":"symbol","url":"\/documentation\/slider","abstract":[],"type":"topic","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"role":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"Slider"}],"abstract":[{"type":"text","text":"An open class that extends "},{"type":"codeVoice","code":"UIControl"},{"type":"text","text":" to create a customizable slider component."}],"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Slider"}],"title":"Slider","type":"topic"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/previousTouchPoint":{"kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"previousTouchPoint"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@S@CGPoint","text":"CGPoint"}],"abstract":[{"type":"text","text":"Used for tracking the user’s touch location during interaction."}],"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/previousTouchPoint","url":"\/documentation\/slider\/slider\/previoustouchpoint","title":"previousTouchPoint","role":"symbol"}}} -------------------------------------------------------------------------------- /Slider.doccarchive/js/highlight-js-java-js.4fe21e94.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[788],{8257:function(e){var n="[0-9](_*[0-9])*",a=`\\.(${n})`,s="[0-9a-fA-F](_*[0-9a-fA-F])*",t={className:"number",variants:[{begin:`(\\b(${n})((${a})|\\.)?|(${a}))[eE][+-]?(${n})[fFdD]?\\b`},{begin:`\\b(${n})((${a})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${a})[fFdD]?\\b`},{begin:`\\b(${n})[fFdD]\\b`},{begin:`\\b0[xX]((${s})\\.?|(${s})?\\.(${s}))[pP][+-]?(${n})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${s})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function i(e,n,a){return-1===a?"":e.replace(n,(s=>i(e,n,a-1)))}function r(e){e.regex;const n="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",a=n+i("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),s=["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"],r=["super","this"],c=["false","true","null"],l=["char","boolean","long","float","int","byte","short","double"],b={keyword:s,literal:c,type:l,built_in:r},o={className:"meta",begin:"@"+n,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},_={className:"params",begin:/\(/,end:/\)/,keywords:b,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:b,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{begin:[n,/\s+/,n,/\s+/,/=/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword",3:"title.class"},contains:[_,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+a+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:b,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:b,relevance:0,contains:[o,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,t,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},t,o]}}e.exports=r}}]); -------------------------------------------------------------------------------- /Slider_Example/Flows/Main/Extensions/CodeViewController+UIColorPickerViewControllerDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CodeViewController+UIColorPickerViewControllerDelegate.swift 3 | // 4 | // Copyright (c) 2024 Ramiz Kichibekov (https://github.com/ramiz69) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | import UIKit 26 | 27 | extension CodeViewController: UIColorPickerViewControllerDelegate { 28 | 29 | func colorPickerViewControllerDidSelectColor(_ viewController: UIColorPickerViewController) { 30 | let selectedColor = viewController.selectedColor 31 | switch selectedColorPickerType { 32 | case .endpoint(let endpoint): 33 | if endpoint == .minimum { 34 | preference.minimumEndpointPreference.foregroundColor = selectedColor.cgColor 35 | configureMinimumEndpoint() 36 | } else { 37 | preference.maximumEndpointPreference.foregroundColor = selectedColor.cgColor 38 | configureMaximumEndpoint() 39 | } 40 | case .thumb: 41 | preference.thumbPreference.backgroundColor = selectedColor 42 | configureThumb() 43 | case .track(let track): 44 | if track == .max { 45 | preference.trackPreference.maxColor = selectedColor 46 | } else if track == .min { 47 | preference.trackPreference.minColor = selectedColor 48 | } else { 49 | preference.trackPreference.reverseMinColor = selectedColor 50 | } 51 | configureTrack() 52 | default: break 53 | } 54 | } 55 | 56 | func colorPickerViewControllerDidFinish(_ viewController: UIColorPickerViewController) { 57 | viewController.dismiss(animated: true) 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/intrinsiccontentsize.json: -------------------------------------------------------------------------------- 1 | {"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider"]]},"variants":[{"paths":["\/documentation\/slider\/slider\/intrinsiccontentsize"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["iOS"],"tokens":[{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"intrinsicContentSize","kind":"identifier"},{"text":": ","kind":"text"},{"text":"CGSize","kind":"typeIdentifier","preciseIdentifier":"c:@S@CGSize"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/intrinsicContentSize","interfaceLanguage":"swift"},"sections":[],"kind":"symbol","abstract":[{"type":"text","text":"The intrinsic content size of the slider, depending on its direction."}],"metadata":{"modules":[{"name":"Slider"}],"roleHeading":"Instance Property","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"intrinsicContentSize"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@S@CGSize","text":"CGSize","kind":"typeIdentifier"}],"symbolKind":"property","title":"intrinsicContentSize","externalID":"c:@M@Slider@objc(cs)Slider(py)intrinsicContentSize"},"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/intrinsicContentSize":{"kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/intrinsicContentSize","type":"topic","url":"\/documentation\/slider\/slider\/intrinsiccontentsize","abstract":[{"type":"text","text":"The intrinsic content size of the slider, depending on its direction."}],"role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"intrinsicContentSize","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGSize","preciseIdentifier":"c:@S@CGSize"}],"title":"intrinsicContentSize"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Slider","kind":"identifier"}],"role":"symbol","title":"Slider","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","type":"topic","abstract":[{"text":"An open class that extends ","type":"text"},{"code":"UIControl","type":"codeVoice"},{"type":"text","text":" to create a customizable slider component."}],"navigatorTitle":[{"kind":"identifier","text":"Slider"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"}}} -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/usabletrackinglength.json: -------------------------------------------------------------------------------- 1 | {"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider"]]},"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/usableTrackingLength","interfaceLanguage":"swift"},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/slider\/slider\/usabletrackinglength"]}],"abstract":[{"type":"text","text":"The length of the track that is usable for moving the thumb, excluding the thumb width."}],"metadata":{"modules":[{"name":"Slider"}],"title":"usableTrackingLength","roleHeading":"Instance Property","externalID":"s:6SliderAAC20usableTrackingLength14CoreFoundation7CGFloatVvp","symbolKind":"property","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"usableTrackingLength"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}],"role":"symbol"},"primaryContentSections":[{"declarations":[{"platforms":["iOS"],"tokens":[{"kind":"keyword","text":"final"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"usableTrackingLength"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Slider","kind":"identifier"}],"role":"symbol","title":"Slider","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","type":"topic","abstract":[{"text":"An open class that extends ","type":"text"},{"code":"UIControl","type":"codeVoice"},{"type":"text","text":" to create a customizable slider component."}],"navigatorTitle":[{"kind":"identifier","text":"Slider"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/usableTrackingLength":{"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/usableTrackingLength","role":"symbol","title":"usableTrackingLength","kind":"symbol","type":"topic","url":"\/documentation\/slider\/slider\/usabletrackinglength","abstract":[{"text":"The length of the track that is usable for moving the thumb, excluding the thumb width.","type":"text"}],"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"usableTrackingLength","kind":"identifier"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"}}} -------------------------------------------------------------------------------- /Slider.doccarchive/js/highlight-js-llvm-js.26121771.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[133],{4972:function(e){function n(e){const n=e.regex,a=/([-a-zA-Z$._][\w$.-]*)/,t={className:"type",begin:/\bi\d+(?=\s|\b)/},i={className:"operator",relevance:0,begin:/=/},c={className:"punctuation",relevance:0,begin:/,/},l={className:"number",variants:[{begin:/0[xX][a-fA-F0-9]+/},{begin:/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/}],relevance:0},r={className:"symbol",variants:[{begin:/^\s*[a-z]+:/}],relevance:0},s={className:"variable",variants:[{begin:n.concat(/%/,a)},{begin:/%\d+/},{begin:/#\d+/}]},o={className:"title",variants:[{begin:n.concat(/@/,a)},{begin:/@\d+/},{begin:n.concat(/!/,a)},{begin:n.concat(/!\d+/,a)},{begin:/!\d+/}]};return{name:"LLVM IR",keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[t,e.COMMENT(/;\s*$/,null,{relevance:0}),e.COMMENT(/;/,/$/),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:/"/,end:/[^\\]"/}]},o,c,i,s,r,l]}}e.exports=n}}]); -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/direction-swift.enum/bottomtotop.json: -------------------------------------------------------------------------------- 1 | {"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum"]]},"metadata":{"roleHeading":"Case","externalID":"s:6SliderAAC9DirectionO11bottomToTopyA2DmF","symbolKind":"case","role":"symbol","title":"Slider.Direction.bottomToTop","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"bottomToTop","kind":"identifier"}],"modules":[{"name":"Slider"}]},"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/slider\/slider\/direction-swift.enum\/bottomtotop"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum\/bottomToTop"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"bottomToTop"}],"languages":["swift"],"platforms":["iOS"]}]}],"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/Direction-swift.enum/bottomToTop":{"abstract":[],"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum\/bottomToTop","title":"Slider.Direction.bottomToTop","url":"\/documentation\/slider\/slider\/direction-swift.enum\/bottomtotop","kind":"symbol","role":"symbol","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"bottomToTop","kind":"identifier"}],"type":"topic"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/Direction-swift.enum":{"type":"topic","role":"symbol","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[{"text":"Enumerates the possible directions of the slider.","type":"text"}],"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Direction","kind":"identifier"}],"title":"Slider.Direction","url":"\/documentation\/slider\/slider\/direction-swift.enum","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Slider","kind":"identifier"}],"role":"symbol","title":"Slider","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","type":"topic","abstract":[{"text":"An open class that extends ","type":"text"},{"code":"UIControl","type":"codeVoice"},{"type":"text","text":" to create a customizable slider component."}],"navigatorTitle":[{"kind":"identifier","text":"Slider"}]}}} -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/direction-swift.enum/lefttoright.json: -------------------------------------------------------------------------------- 1 | {"sections":[],"identifier":{"url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum\/leftToRight","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/slider\/slider\/direction-swift.enum\/lefttoright"]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"externalID":"s:6SliderAAC9DirectionO11leftToRightyA2DmF","modules":[{"name":"Slider"}],"role":"symbol","symbolKind":"case","title":"Slider.Direction.leftToRight","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"leftToRight","kind":"identifier"}],"roleHeading":"Case"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["iOS"],"tokens":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"text":"leftToRight","kind":"identifier"}],"languages":["swift"]}]}],"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Slider","kind":"identifier"}],"role":"symbol","title":"Slider","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","type":"topic","abstract":[{"text":"An open class that extends ","type":"text"},{"code":"UIControl","type":"codeVoice"},{"type":"text","text":" to create a customizable slider component."}],"navigatorTitle":[{"kind":"identifier","text":"Slider"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/Direction-swift.enum":{"type":"topic","role":"symbol","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[{"text":"Enumerates the possible directions of the slider.","type":"text"}],"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Direction","kind":"identifier"}],"title":"Slider.Direction","url":"\/documentation\/slider\/slider\/direction-swift.enum","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/Direction-swift.enum/leftToRight":{"abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"leftToRight","kind":"identifier"}],"title":"Slider.Direction.leftToRight","role":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum\/leftToRight","url":"\/documentation\/slider\/slider\/direction-swift.enum\/lefttoright","type":"topic"}}} -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/direction-swift.enum/righttoleft.json: -------------------------------------------------------------------------------- 1 | {"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/slider\/slider\/direction-swift.enum\/righttoleft"]}],"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum"]]},"metadata":{"role":"symbol","roleHeading":"Case","title":"Slider.Direction.rightToLeft","symbolKind":"case","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"rightToLeft"}],"modules":[{"name":"Slider"}],"externalID":"s:6SliderAAC9DirectionO11rightToLeftyA2DmF"},"primaryContentSections":[{"declarations":[{"platforms":["iOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"rightToLeft","kind":"identifier"}]}],"kind":"declarations"}],"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum\/rightToLeft"},"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Slider","kind":"identifier"}],"role":"symbol","title":"Slider","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","type":"topic","abstract":[{"text":"An open class that extends ","type":"text"},{"code":"UIControl","type":"codeVoice"},{"type":"text","text":" to create a customizable slider component."}],"navigatorTitle":[{"kind":"identifier","text":"Slider"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/Direction-swift.enum":{"type":"topic","role":"symbol","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[{"text":"Enumerates the possible directions of the slider.","type":"text"}],"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Direction","kind":"identifier"}],"title":"Slider.Direction","url":"\/documentation\/slider\/slider\/direction-swift.enum","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/Direction-swift.enum/rightToLeft":{"abstract":[],"title":"Slider.Direction.rightToLeft","kind":"symbol","url":"\/documentation\/slider\/slider\/direction-swift.enum\/righttoleft","role":"symbol","type":"topic","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"rightToLeft"}],"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum\/rightToLeft"}}} -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/direction-swift.enum/toptobottom.json: -------------------------------------------------------------------------------- 1 | {"metadata":{"externalID":"s:6SliderAAC9DirectionO11topToBottomyA2DmF","symbolKind":"case","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"topToBottom"}],"roleHeading":"Case","modules":[{"name":"Slider"}],"title":"Slider.Direction.topToBottom","role":"symbol"},"primaryContentSections":[{"declarations":[{"platforms":["iOS"],"tokens":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"topToBottom","kind":"identifier"}],"languages":["swift"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum\/topToBottom","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/slider\/slider\/direction-swift.enum\/toptobottom"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"kind":"symbol","references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Slider","kind":"identifier"}],"role":"symbol","title":"Slider","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","type":"topic","abstract":[{"text":"An open class that extends ","type":"text"},{"code":"UIControl","type":"codeVoice"},{"type":"text","text":" to create a customizable slider component."}],"navigatorTitle":[{"kind":"identifier","text":"Slider"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/Direction-swift.enum":{"type":"topic","role":"symbol","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[{"text":"Enumerates the possible directions of the slider.","type":"text"}],"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Direction","kind":"identifier"}],"title":"Slider.Direction","url":"\/documentation\/slider\/slider\/direction-swift.enum","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/Direction-swift.enum/topToBottom":{"role":"symbol","type":"topic","kind":"symbol","url":"\/documentation\/slider\/slider\/direction-swift.enum\/toptobottom","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"topToBottom"}],"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum\/topToBottom","title":"Slider.Direction.topToBottom","abstract":[]}}} -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/animationstyle-swift.enum/none.json: -------------------------------------------------------------------------------- 1 | {"metadata":{"modules":[{"name":"Slider"}],"fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"none","kind":"identifier"}],"role":"symbol","title":"Slider.AnimationStyle.none","roleHeading":"Case","externalID":"s:6SliderAAC14AnimationStyleO4noneyA2DmF","symbolKind":"case"},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"none","kind":"identifier"}],"platforms":["iOS"],"languages":["swift"]}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/AnimationStyle-swift.enum\/none"},"sections":[],"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/AnimationStyle-swift.enum"]]},"variants":[{"paths":["\/documentation\/slider\/slider\/animationstyle-swift.enum\/none"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/AnimationStyle-swift.enum":{"navigatorTitle":[{"text":"AnimationStyle","kind":"identifier"}],"abstract":[{"type":"text","text":"Enumerates the possible animation styles for the slider’s value change."}],"url":"\/documentation\/slider\/slider\/animationstyle-swift.enum","role":"symbol","title":"Slider.AnimationStyle","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/AnimationStyle-swift.enum","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"kind":"identifier","text":"AnimationStyle"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/AnimationStyle-swift.enum/none":{"abstract":[],"url":"\/documentation\/slider\/slider\/animationstyle-swift.enum\/none","role":"symbol","title":"Slider.AnimationStyle.none","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/AnimationStyle-swift.enum\/none","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"none","kind":"identifier"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Slider","kind":"identifier"}],"role":"symbol","title":"Slider","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","type":"topic","abstract":[{"text":"An open class that extends ","type":"text"},{"code":"UIControl","type":"codeVoice"},{"type":"text","text":" to create a customizable slider component."}],"navigatorTitle":[{"kind":"identifier","text":"Slider"}]}}} -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/animationstyle-swift.enum/default.json: -------------------------------------------------------------------------------- 1 | {"kind":"symbol","sections":[],"variants":[{"paths":["\/documentation\/slider\/slider\/animationstyle-swift.enum\/default"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/AnimationStyle-swift.enum"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"`default`","kind":"identifier"}],"languages":["swift"],"platforms":["iOS"]}]}],"metadata":{"fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"`default`","kind":"identifier"}],"symbolKind":"case","externalID":"s:6SliderAAC14AnimationStyleO7defaultyA2DmF","role":"symbol","modules":[{"name":"Slider"}],"roleHeading":"Case","title":"Slider.AnimationStyle.default"},"schemaVersion":{"patch":0,"minor":3,"major":0},"identifier":{"url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/AnimationStyle-swift.enum\/default","interfaceLanguage":"swift"},"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/AnimationStyle-swift.enum/default":{"type":"topic","role":"symbol","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"kind":"identifier","text":"`default`"}],"abstract":[],"kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/AnimationStyle-swift.enum\/default","title":"Slider.AnimationStyle.default","url":"\/documentation\/slider\/slider\/animationstyle-swift.enum\/default"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/AnimationStyle-swift.enum":{"navigatorTitle":[{"text":"AnimationStyle","kind":"identifier"}],"abstract":[{"type":"text","text":"Enumerates the possible animation styles for the slider’s value change."}],"url":"\/documentation\/slider\/slider\/animationstyle-swift.enum","role":"symbol","title":"Slider.AnimationStyle","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/AnimationStyle-swift.enum","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"kind":"identifier","text":"AnimationStyle"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Slider","kind":"identifier"}],"role":"symbol","title":"Slider","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","type":"topic","abstract":[{"text":"An open class that extends ","type":"text"},{"code":"UIControl","type":"codeVoice"},{"type":"text","text":" to create a customizable slider component."}],"navigatorTitle":[{"kind":"identifier","text":"Slider"}]}}} -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/trackconfiguration/height.json: -------------------------------------------------------------------------------- 1 | {"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration\/height","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"height","kind":"identifier"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"platforms":["iOS"]}]},{"kind":"content","content":[{"type":"heading","text":"Discussion","anchor":"discussion","level":2},{"type":"paragraph","inlineContent":[{"type":"text","text":"Default value is "},{"code":"36","type":"codeVoice"},{"type":"text","text":"."}]}]}],"abstract":[{"text":"The height of the track.","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/slider\/trackconfiguration\/height"]}],"metadata":{"modules":[{"name":"Slider"}],"externalID":"s:6Slider18TrackConfigurationV6height14CoreFoundation7CGFloatVvp","title":"height","symbolKind":"property","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"height"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}],"roleHeading":"Instance Property"},"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/TrackConfiguration":{"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration","abstract":[{"type":"codeVoice","code":"TrackConfiguration"},{"text":" defines the appearance settings for the track of the ","type":"text"},{"code":"Slider","type":"codeVoice"},{"text":" control.","type":"text"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TrackConfiguration"}],"type":"topic","role":"symbol","title":"TrackConfiguration","navigatorTitle":[{"text":"TrackConfiguration","kind":"identifier"}],"kind":"symbol","url":"\/documentation\/slider\/trackconfiguration"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/TrackConfiguration/height":{"title":"height","url":"\/documentation\/slider\/trackconfiguration\/height","abstract":[{"text":"The height of the track.","type":"text"}],"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"height"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}],"role":"symbol","type":"topic","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration\/height","kind":"symbol"}}} -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/direction-swift.enum/equatable-implementations.json: -------------------------------------------------------------------------------- 1 | {"kind":"article","metadata":{"modules":[{"name":"Slider"}],"role":"collectionGroup","title":"Equatable Implementations","roleHeading":"API Collection"},"topicSections":[{"title":"Operators","identifiers":["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum\/!=(_:_:)"],"generated":true}],"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum\/Equatable-Implementations"},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/slider\/slider\/direction-swift.enum\/equatable-implementations"]}],"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Slider","kind":"identifier"}],"role":"symbol","title":"Slider","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","type":"topic","abstract":[{"text":"An open class that extends ","type":"text"},{"code":"UIControl","type":"codeVoice"},{"type":"text","text":" to create a customizable slider component."}],"navigatorTitle":[{"kind":"identifier","text":"Slider"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/Direction-swift.enum/!=(_:_:)":{"url":"\/documentation\/slider\/slider\/direction-swift.enum\/!=(_:_:)","title":"!=(_:_:)","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum\/!=(_:_:)","abstract":[],"fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"role":"symbol","type":"topic","kind":"symbol"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/Direction-swift.enum":{"type":"topic","role":"symbol","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[{"text":"Enumerates the possible directions of the slider.","type":"text"}],"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Direction","kind":"identifier"}],"title":"Slider.Direction","url":"\/documentation\/slider\/slider\/direction-swift.enum","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/Direction-swift.enum"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"}}} -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/trackconfiguration/maxcolor.json: -------------------------------------------------------------------------------- 1 | {"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["iOS"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"maxColor"},{"text":": ","kind":"text"},{"text":"UIColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)UIColor"}],"languages":["swift"]}]},{"content":[{"anchor":"discussion","text":"Discussion","type":"heading","level":2},{"type":"paragraph","inlineContent":[{"type":"text","text":"This is the color displayed for the maximum value part of the track. The default value is "},{"code":"rgba(191, 194, 209, 1)","type":"codeVoice"}]}],"kind":"content"}],"metadata":{"role":"symbol","title":"maxColor","symbolKind":"property","roleHeading":"Instance Property","modules":[{"name":"Slider"}],"externalID":"s:6Slider18TrackConfigurationV8maxColorSo7UIColorCvp","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"maxColor"},{"text":": ","kind":"text"},{"text":"UIColor","preciseIdentifier":"c:objc(cs)UIColor","kind":"typeIdentifier"}]},"variants":[{"paths":["\/documentation\/slider\/trackconfiguration\/maxcolor"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration\/maxColor"},"abstract":[{"type":"text","text":"The color used for the track’s background."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/TrackConfiguration":{"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration","abstract":[{"type":"codeVoice","code":"TrackConfiguration"},{"text":" defines the appearance settings for the track of the ","type":"text"},{"code":"Slider","type":"codeVoice"},{"text":" control.","type":"text"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TrackConfiguration"}],"type":"topic","role":"symbol","title":"TrackConfiguration","navigatorTitle":[{"text":"TrackConfiguration","kind":"identifier"}],"kind":"symbol","url":"\/documentation\/slider\/trackconfiguration"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/TrackConfiguration/maxColor":{"url":"\/documentation\/slider\/trackconfiguration\/maxcolor","title":"maxColor","abstract":[{"text":"The color used for the track’s background.","type":"text"}],"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"maxColor"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)UIColor","text":"UIColor","kind":"typeIdentifier"}],"role":"symbol","type":"topic","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration\/maxColor","kind":"symbol"}}} -------------------------------------------------------------------------------- /Slider.xcodeproj/xcshareddata/xcschemes/Slider_Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 45 | 51 | 52 | 53 | 54 | 60 | 62 | 68 | 69 | 70 | 71 | 73 | 74 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /Sources/Documentation.docc/Slider.md: -------------------------------------------------------------------------------- 1 | # ``Slider/Slider`` 2 | 3 | ## Overview 4 | 5 | An open class that extends `UIControl` to create a customizable slider component. It allows setting various properties to control the appearance and behavior of the slider, including its value range, direction, thumb and track configurations, and haptic feedback for user interactions. 6 | 7 | ## Topics 8 | 9 | ### Initialization 10 | 11 | - ``init(direction:frame:)`` 12 | Initializes a new slider with the specified direction and frame. 13 | - ``init(frame:)`` 14 | Initializes a new slider with the specified frame. 15 | 16 | ### Customization Properties 17 | 18 | - ``value`` 19 | The current value of the slider. Changing this value updates the slider's visual representation. 20 | - ``minimum`` 21 | The minimum value of the slider. It defaults to `10`. 22 | - ``maximum`` 23 | The maximum value of the slider. It defaults to `800`. 24 | - ``step`` 25 | The step value of the slider. It determines the increments between values. 26 | - ``cornerRadius`` 27 | The corner radius for the slider's track and thumb. 28 | - ``thumbConfiguration`` 29 | Configuration for the slider's thumb, including its size, color, and other properties. 30 | - ``trackConfiguration`` 31 | Configuration for the slider's track, defining its appearance and behavior. 32 | - ``maximumEndpointConfiguration`` 33 | Configuration for the maximum endpoint label of the slider. 34 | - ``minimumEndpointConfiguration`` 35 | Configuration for the minimum endpoint label of the slider. 36 | - ``hapticConfiguration`` 37 | Configuration for haptic feedback during user interactions with the slider. 38 | 39 | ### Direction and Animation 40 | 41 | - ``Direction`` 42 | An enumeration that defines the slider's orientation and direction. 43 | - ``AnimationStyle`` 44 | An enumeration that defines the animation style when the slider value changes. 45 | 46 | ### Delegate 47 | 48 | - ``delegate`` 49 | The delegate for the slider, conforming to `SliderDelegate`, to handle value changes and user interactions. 50 | 51 | ### User Interaction 52 | 53 | - ``didBeginTracking()`` 54 | Called when the user starts interacting with the slider. 55 | - ``endTracking()`` 56 | Called when the user finishes interacting with the slider. 57 | 58 | ### Visual Updates 59 | 60 | - ``updateVisualComponents()`` 61 | Updates the visual components of the slider, like the track and thumb, when certain properties change. 62 | - ``setNeedsLayersDisplay()`` 63 | Requests the layers to update their display based on the current slider properties. 64 | 65 | ### Layout and Positioning 66 | 67 | - ``layoutSubviews()`` 68 | Lays out subviews and updates the layout of the slider's components based on its current state and properties. 69 | - ``position(forValue:)`` 70 | Determines the position of the thumb based on the current slider value. 71 | 72 | ### Handling User Interactions 73 | 74 | - ``updateSlider()`` 75 | Updates the slider's value and visual appearance in response to user interactions. 76 | 77 | ## Example Usage 78 | 79 | ```swift 80 | let slider = Slider() 81 | slider.minimum = .zero 82 | slider.maximum = 1000 83 | slider.value = .zero 84 | slider.step = 10 85 | slider.delegate = self 86 | ``` 87 | -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/animationstyle-swift.enum/equatable-implementations.json: -------------------------------------------------------------------------------- 1 | {"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/AnimationStyle-swift.enum"]]},"sections":[],"kind":"article","metadata":{"role":"collectionGroup","modules":[{"name":"Slider"}],"roleHeading":"API Collection","title":"Equatable Implementations"},"topicSections":[{"title":"Operators","generated":true,"identifiers":["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/AnimationStyle-swift.enum\/!=(_:_:)"]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/slider\/slider\/animationstyle-swift.enum\/equatable-implementations"]}],"identifier":{"url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/AnimationStyle-swift.enum\/Equatable-Implementations","interfaceLanguage":"swift"},"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/AnimationStyle-swift.enum/!=(_:_:)":{"url":"\/documentation\/slider\/slider\/animationstyle-swift.enum\/!=(_:_:)","title":"!=(_:_:)","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/AnimationStyle-swift.enum\/!=(_:_:)","type":"topic","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"abstract":[],"role":"symbol"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Slider","kind":"identifier"}],"role":"symbol","title":"Slider","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","type":"topic","abstract":[{"text":"An open class that extends ","type":"text"},{"code":"UIControl","type":"codeVoice"},{"type":"text","text":" to create a customizable slider component."}],"navigatorTitle":[{"kind":"identifier","text":"Slider"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/AnimationStyle-swift.enum":{"navigatorTitle":[{"text":"AnimationStyle","kind":"identifier"}],"abstract":[{"type":"text","text":"Enumerates the possible animation styles for the slider’s value change."}],"url":"\/documentation\/slider\/slider\/animationstyle-swift.enum","role":"symbol","title":"Slider.AnimationStyle","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/AnimationStyle-swift.enum","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"kind":"identifier","text":"AnimationStyle"}]}}} -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/trackconfiguration/inset.json: -------------------------------------------------------------------------------- 1 | {"sections":[],"abstract":[{"text":"The inset of the track within the slider’s bounds.","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/slider\/trackconfiguration\/inset"]}],"schemaVersion":{"patch":0,"minor":3,"major":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration\/inset"},"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration"]]},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"inset","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"}],"languages":["swift"],"platforms":["iOS"]}]},{"content":[{"text":"Discussion","anchor":"discussion","level":2,"type":"heading"},{"type":"paragraph","inlineContent":[{"text":"This value is used to inset the track from the edges of the slider’s bounds. The default value is ","type":"text"},{"type":"codeVoice","code":"0"},{"type":"text","text":"."}]}],"kind":"content"}],"metadata":{"roleHeading":"Instance Property","symbolKind":"property","externalID":"s:6Slider18TrackConfigurationV5inset14CoreFoundation7CGFloatVvp","modules":[{"name":"Slider"}],"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"inset","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"role":"symbol","title":"inset"},"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/TrackConfiguration/inset":{"url":"\/documentation\/slider\/trackconfiguration\/inset","title":"inset","abstract":[{"text":"The inset of the track within the slider’s bounds.","type":"text"}],"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"inset"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}],"role":"symbol","type":"topic","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration\/inset","kind":"symbol"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/TrackConfiguration":{"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration","abstract":[{"type":"codeVoice","code":"TrackConfiguration"},{"text":" defines the appearance settings for the track of the ","type":"text"},{"code":"Slider","type":"codeVoice"},{"text":" control.","type":"text"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TrackConfiguration"}],"type":"topic","role":"symbol","title":"TrackConfiguration","navigatorTitle":[{"text":"TrackConfiguration","kind":"identifier"}],"kind":"symbol","url":"\/documentation\/slider\/trackconfiguration"}}} -------------------------------------------------------------------------------- /Slider.doccarchive/js/highlight-js-objectivec-js.74dea052.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[637],{2446:function(e){function n(e){const n={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},_=/[a-zA-Z@][a-zA-Z0-9_]*/,i=["int","float","while","char","export","sizeof","typedef","const","struct","for","union","unsigned","long","volatile","static","bool","mutable","if","do","return","goto","void","enum","else","break","extern","asm","case","short","default","double","register","explicit","signed","typename","this","switch","continue","wchar_t","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","super","unichar","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],t=["false","true","FALSE","TRUE","nil","YES","NO","NULL"],a=["BOOL","dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],r={$pattern:_,keyword:i,literal:t,built_in:a},s={$pattern:_,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:r,illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+s.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:s,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}e.exports=n}}]); -------------------------------------------------------------------------------- /Sources/Configurations/ThumbConfiguration.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThumbConfiguration.swift 3 | // 4 | // Copyright (c) 2024 Ramiz Kichibekov (https://github.com/ramiz69) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | import UIKit 26 | 27 | /// `ThumbConfiguration` defines the appearance settings for the thumb of the `Slider` control. 28 | /// 29 | /// It allows customization of the thumb's background color, font size, size, and border width. 30 | public struct ThumbConfiguration { 31 | 32 | /// The background color of the thumb. 33 | /// 34 | /// This color is used as the fill color for the thumb's background. The default value is `.white`. 35 | public var backgroundColor: UIColor 36 | 37 | /// The font size of the thumb's label. 38 | /// 39 | /// This property determines the size of the text inside the thumb. Default value is `14`. 40 | public var fontSize: CGFloat 41 | 42 | /// The size of the thumb. 43 | /// 44 | /// Defines the width and height of the thumb. The default size is `(width: 60, height: 36)`. 45 | public var size: CGSize 46 | 47 | /// The border width of the thumb. 48 | /// 49 | /// Specifies the width of the thumb's border. The default value is `4`. 50 | public var borderWidth: CGFloat 51 | 52 | /// Initializes a `ThumbConfiguration` instance with specified background color, font size, size, and border width. 53 | /// - Parameters: 54 | /// - backgroundColor: The background color of the thumb. Default is `.white`. 55 | /// - fontSize: The font size for the thumb's label. Default is `14`. 56 | /// - size: The size of the thumb. Default is `(width: 60, height: 36)`. 57 | /// - borderWidth: The border width of the thumb. Default is `4`. 58 | public init(backgroundColor: UIColor = .white, 59 | fontSize: CGFloat = 14, 60 | size: CGSize = CGSize(width: 60, height: 36), 61 | borderWidth: CGFloat = 4) { 62 | self.backgroundColor = backgroundColor 63 | self.fontSize = fontSize 64 | self.size = size 65 | self.borderWidth = borderWidth 66 | } 67 | } 68 | 69 | -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/trackconfiguration/mincolor.json: -------------------------------------------------------------------------------- 1 | {"metadata":{"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"minColor","kind":"identifier"},{"text":": ","kind":"text"},{"text":"UIColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)UIColor"}],"roleHeading":"Instance Property","title":"minColor","modules":[{"name":"Slider"}],"symbolKind":"property","role":"symbol","externalID":"s:6Slider18TrackConfigurationV8minColorSo7UIColorCvp"},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"type":"text","text":"The color used for the portion of the track representing values less than the slider’s current value."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["iOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"minColor"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)UIColor","text":"UIColor","kind":"typeIdentifier"}]}]},{"kind":"content","content":[{"text":"Discussion","type":"heading","level":2,"anchor":"discussion"},{"inlineContent":[{"type":"text","text":"The default value is "},{"type":"codeVoice","code":"rgba(0, 122, 255, 1)"},{"text":".","type":"text"}],"type":"paragraph"}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/slider\/trackconfiguration\/mincolor"]}],"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration"]]},"kind":"symbol","identifier":{"url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration\/minColor","interfaceLanguage":"swift"},"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/TrackConfiguration":{"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration","abstract":[{"type":"codeVoice","code":"TrackConfiguration"},{"text":" defines the appearance settings for the track of the ","type":"text"},{"code":"Slider","type":"codeVoice"},{"text":" control.","type":"text"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TrackConfiguration"}],"type":"topic","role":"symbol","title":"TrackConfiguration","navigatorTitle":[{"text":"TrackConfiguration","kind":"identifier"}],"kind":"symbol","url":"\/documentation\/slider\/trackconfiguration"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/TrackConfiguration/minColor":{"abstract":[{"text":"The color used for the portion of the track representing values less than the slider’s current value.","type":"text"}],"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration\/minColor","kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"minColor"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)UIColor","kind":"typeIdentifier","text":"UIColor"}],"type":"topic","url":"\/documentation\/slider\/trackconfiguration\/mincolor","title":"minColor","role":"symbol"}}} -------------------------------------------------------------------------------- /Sources/Managers/HapticManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HapticManager.swift 3 | // Slider 4 | // 5 | // Created by Рамиз Кичибеков on 06.01.2025. 6 | // Copyright © 2025 Ramiz Kichibekov. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import CoreHaptics 11 | import OSLog 12 | 13 | final class HapticManager: @unchecked Sendable { 14 | 15 | // MARK: Properties 16 | 17 | private let initialIntensity: Float 18 | private let initialSharpness: Float 19 | private let relativeTime: TimeInterval 20 | private let duration: TimeInterval 21 | private var engine: CHHapticEngine! 22 | private let supportsHaptics: Bool 23 | 24 | // MARK: Initial methods 25 | 26 | init( 27 | initialIntensity: Float = 1, 28 | initialSharpness: Float = 0.5, 29 | relativeTime: TimeInterval = .zero, 30 | duration: TimeInterval = 100 31 | ) { 32 | self.initialIntensity = initialIntensity 33 | self.initialSharpness = initialSharpness 34 | self.relativeTime = relativeTime 35 | self.duration = duration 36 | let hapticCapability = CHHapticEngine.capabilitiesForHardware() 37 | supportsHaptics = hapticCapability.supportsHaptics 38 | guard supportsHaptics else { 39 | Logger.haptic.info("Haptics are not supported") 40 | return 41 | } 42 | 43 | do { 44 | try createAndStartHapticEngine() 45 | Task { try await startEngine() } 46 | } catch { 47 | Logger.haptic.error("Error creating haptic engine: \(error)") 48 | } 49 | } 50 | 51 | // MARK: Public methods 52 | 53 | func startEngine() async throws { 54 | guard supportsHaptics else { return } 55 | 56 | try await engine.start() 57 | } 58 | 59 | func stopEngine() async throws { 60 | guard supportsHaptics else { return } 61 | 62 | try await engine.stop() 63 | } 64 | 65 | func playTransientHaptic(intensity: Float, sharpness: Float) throws { 66 | guard supportsHaptics else { return } 67 | 68 | let intensityParameter = CHHapticEventParameter(parameterID: .hapticIntensity, 69 | value: intensity) 70 | let sharpnessParameter = CHHapticEventParameter(parameterID: .hapticSharpness, 71 | value: sharpness) 72 | let event = CHHapticEvent(eventType: .hapticTransient, 73 | parameters: [intensityParameter, sharpnessParameter], 74 | relativeTime: .zero) 75 | let pattern = try CHHapticPattern(events: [event], parameters: []) 76 | 77 | let player = try engine.makePlayer(with: pattern) 78 | try player.start(atTime: CHHapticTimeImmediate) 79 | } 80 | 81 | // MARK: Private methods 82 | 83 | private func createAndStartHapticEngine() throws { 84 | engine = try CHHapticEngine() 85 | engine.playsHapticsOnly = true 86 | engine.resetHandler = { 87 | do { 88 | try self.engine.start() 89 | } catch { 90 | Logger.haptic.error("Failed to start haptic engine: \(error)") 91 | } 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /Sources/Configurations/RangeEndpointsConfiguration.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThumbConfiguration.swift 3 | // 4 | // Copyright (c) 2024 Ramiz Kichibekov (https://github.com/ramiz69) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | import Foundation 26 | import QuartzCore 27 | 28 | /// `RangeEndpointsConfiguration` defines the appearance and positioning of the endpoint labels on a `Slider`. 29 | /// 30 | /// This configuration allows you to customize the anchor point, text color, font size, and alignment mode 31 | /// for the text displayed at the minimum and maximum endpoints of the slider. 32 | public struct RangeEndpointsConfiguration { 33 | 34 | /// The anchor point of the endpoint label's layer. 35 | /// 36 | /// It determines the position of the label relative to its frame. The default is `(0.5, 0.5)`, which centers the label. 37 | let anchorPoint: CGPoint 38 | 39 | /// The color of the endpoint label's text. 40 | /// 41 | /// The default color is white. 42 | let foregroundColor: CGColor 43 | 44 | /// The font size of the endpoint label's text. 45 | /// 46 | /// Default value is `12`. 47 | let fontSize: CGFloat 48 | 49 | /// The alignment mode of the endpoint label's text within its layer. 50 | /// 51 | /// Default alignment mode is `.center`. 52 | let aligmentMode: CATextLayerAlignmentMode 53 | 54 | /// Initializes a `RangeEndpointsConfiguration` with the provided values or defaults. 55 | /// 56 | /// - Parameters: 57 | /// - anchorPoint: The anchor point for the text layer. Defaults to `(0.5, 0.5)`. 58 | /// - foregroundColor: The text color. Defaults to white. 59 | /// - fontSize: The text font size. Defaults to `12`. 60 | /// - aligmentMode: The text alignment within the layer. Defaults to `.center`. 61 | public init(anchorPoint: CGPoint = CGPoint(x: 0.5, y: 0.5), 62 | foregroundColor: CGColor = CGColor(red: 1, green: 1, blue: 1, alpha: 1), 63 | fontSize: CGFloat = 12, 64 | aligmentMode: CATextLayerAlignmentMode = .center) { 65 | self.anchorPoint = anchorPoint 66 | self.foregroundColor = foregroundColor 67 | self.fontSize = fontSize 68 | self.aligmentMode = aligmentMode 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG 2 | 3 | ## [0.2.1] - 2025-01-06 4 | 5 | ### Added 6 | - Support Swift 6.0 7 | 8 | ### Changed 9 | - Rewrite Haptic Feedback from UIFeedbackGenerator to CoreHaptic 10 | 11 | ## [0.2.0] - 2024-04-06 12 | 13 | ### Added 14 | - Added vertical direction support (`bottomToTop`, `topToBottom`) for the slider, complementing the existing horizontal orientation. 15 | - Implemented new `TrackConfiguration` and `ThumbConfiguration` structures to allow detailed customization of the slider's appearance and behavior. 16 | - Developed and documented the `SliderDelegate` protocol and associated methods for handling slider events. 17 | - Implemented a documentation system using DocC, providing detailed guides and usage examples for the `Slider` class. 18 | - Added Swift-style documentation comments for all new and updated slider components. 19 | 20 | ### Changed 21 | - Updated methods to enhance performance and reduce code duplication in the `Slider` class. 22 | - Modified the animation mechanism for smoother thumb movement on value changes. 23 | - Improved the system for updating and displaying the slider's visual components when its properties change. 24 | 25 | ### Fixed 26 | - Fixed potential compatibility issues when changing the slider's direction. 27 | - Addressed minor visual display issues in the slider identified during testing. 28 | 29 | ### Documentation 30 | - Created and published comprehensive documentation covering all aspects of using, configuring, and integrating the slider into an application. 31 | 32 | ## [0.1.1] - 2024-03-17 33 | 34 | ### Changed 35 | - Updated changelog 36 | 37 | ## [0.1.0] - 2024-03-17 38 | 39 | ### Added 40 | - Added new configurations for direction-specific animations 41 | - Refined animation transitions when changing directions for a more fluid user experience 42 | - SliderDelegate now supports Swift Concurrency for asynchronous event handling 43 | 44 | ### Changed 45 | - Rendering of changes is now synchronized with the GPU using CADisplayLink for smoother visual updates. 46 | - Removed support for Interface Builder to streamline codebase and improve programmability. 47 | 48 | ## [0.0.9] - 2024-03-14 49 | 50 | ### Fixed 51 | - Fixed podspec and SPM dependencies; 52 | 53 | ## [0.0.8] - 2024-03-14 54 | 55 | ### Added 56 | - Added SPM support; 57 | 58 | ## [0.0.7] - 2024-03-14 59 | 60 | ### Added 61 | - Added changelog.md 62 | 63 | ### Changed 64 | - Removed IBDesignable support 65 | - Replaced CAShapeLayer with CALayer for better rendering optimization 66 | 67 | ## [0.0.6] - 2022-09-29 68 | 69 | ### Changed 70 | - Update podspec. 71 | 72 | ## [0.0.5] - 2022-09-29 73 | 74 | ### Added 75 | - Added haptic generator 76 | 77 | ### Fixed 78 | - Fixed the track layer 79 | - Fixed iPad UI bugs 80 | 81 | ## [0.0.4] - 2021-01-15 82 | 83 | ### Added 84 | - Added callbacks which allow you to listen to the slider's tracking events 85 | 86 | ## [0.0.3] - 2020-12-08 87 | 88 | ### Added 89 | - Added examples.gif; 90 | 91 | ## [0.0.2] - 2020-03-31 92 | 93 | ### Added 94 | - Added more examples; 95 | - Added customization Slider; 96 | 97 | ### Changed 98 | - Fold is removed when slider is dragging from minimum value to other value; 99 | 100 | ## [0.0.1] - 2020-01-05 101 | 102 | ### Added 103 | - First stable release of the Slider 104 | - Implemented functionality for a bidirectional Slider 105 | -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/trackconfiguration/reversemincolor.json: -------------------------------------------------------------------------------- 1 | {"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","sections":[],"metadata":{"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reverseMinColor"},{"kind":"text","text":": "},{"text":"UIColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)UIColor"}],"symbolKind":"property","roleHeading":"Instance Property","role":"symbol","title":"reverseMinColor","externalID":"s:6Slider18TrackConfigurationV15reverseMinColorSo7UIColorCvp","modules":[{"name":"Slider"}]},"variants":[{"paths":["\/documentation\/slider\/trackconfiguration\/reversemincolor"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"The color used for the portion of the track that represents values greater than the slider’s current value when the slider’s direction is reversed."}],"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration\/reverseMinColor"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["iOS"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reverseMinColor"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)UIColor","text":"UIColor","kind":"typeIdentifier"}],"languages":["swift"]}]},{"content":[{"text":"Discussion","anchor":"discussion","type":"heading","level":2},{"type":"paragraph","inlineContent":[{"type":"text","text":"The default value is "},{"code":"rgba(247, 73, 2, 1)","type":"codeVoice"},{"type":"text","text":"."}]}],"kind":"content"}],"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/TrackConfiguration":{"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration","abstract":[{"type":"codeVoice","code":"TrackConfiguration"},{"text":" defines the appearance settings for the track of the ","type":"text"},{"code":"Slider","type":"codeVoice"},{"text":" control.","type":"text"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TrackConfiguration"}],"type":"topic","role":"symbol","title":"TrackConfiguration","navigatorTitle":[{"text":"TrackConfiguration","kind":"identifier"}],"kind":"symbol","url":"\/documentation\/slider\/trackconfiguration"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/TrackConfiguration/reverseMinColor":{"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"reverseMinColor"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)UIColor","text":"UIColor","kind":"typeIdentifier"}],"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/TrackConfiguration\/reverseMinColor","kind":"symbol","type":"topic","title":"reverseMinColor","role":"symbol","abstract":[{"type":"text","text":"The color used for the portion of the track that represents values greater than the slider’s current value when the slider’s direction is reversed."}],"url":"\/documentation\/slider\/trackconfiguration\/reversemincolor"}}} -------------------------------------------------------------------------------- /Slider.doccarchive/js/highlight-js-bash-js.702f0c5c.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[393],{8780:function(e){function s(e){const s=e.regex,t={},n={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{className:"variable",variants:[{begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={className:"",begin:/\\"/},r={className:"string",begin:/'/,end:/'/},l={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]},d=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],p=e.SHEBANG({binary:`(${d.join("|")})`,relevance:10}),m={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},u=["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"],h=["true","false"],b={match:/(\/[a-z._-]+)+/},f=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],g=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias"],w=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],k=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:u,literal:h,built_in:[...f,...g,"set","shopt",...w,...k]},contains:[p,e.SHEBANG(),m,l,e.HASH_COMMENT_MODE,i,b,c,o,r,t]}}e.exports=s}}]); -------------------------------------------------------------------------------- /Slider.doccarchive/js/highlight-js-custom-markdown.78c9f6ed.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | "use strict";(self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[642],{2003:function(e,n,a){function i(e){const n=e.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},c={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},t={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},d=/[A-Za-z][A-Za-z0-9+.-]*/,l={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:n.concat(/\[.+?\]\(/,d,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},g={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},r={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};g.contains.push(r),r.contains.push(g);let o=[a,l];g.contains=g.contains.concat(o),r.contains=r.contains.concat(o),o=o.concat(g,r);const b={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:o},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:o}]}]},u={className:"quote",begin:"^>\\s+",contains:o,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[b,a,c,g,r,u,s,i,l,t]}}a.r(n),a.d(n,{default:function(){return l}});const s={begin:"",returnBegin:!0,contains:[{className:"link",begin:"doc:",end:">",excludeEnd:!0}]},c={className:"link",begin:/`{2}(?!`)/,end:/`{2}(?!`)/,excludeBegin:!0,excludeEnd:!0},t={begin:"^>\\s+[Note:|Tip:|Important:|Experiment:|Warning:]",end:"$",returnBegin:!0,contains:[{className:"quote",begin:"^>",end:"\\s+"},{className:"type",begin:"Note|Tip|Important|Experiment|Warning",end:":"},{className:"quote",begin:".*",end:"$",endsParent:!0}]},d={begin:"@",end:"[{\\)\\s]",returnBegin:!0,contains:[{className:"title",begin:"@",end:"[\\s+(]",excludeEnd:!0},{begin:":",end:"[,\\)\n\t]",excludeBegin:!0,keywords:{literal:"true false null undefined"},contains:[{className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",endsWithParent:!0,excludeEnd:!0},{className:"string",variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}],endsParent:!0},{className:"link",begin:"http|https",endsWithParent:!0,excludeEnd:!0}]}]};function l(e){const n=i(e),a=n.contains.find((({className:e})=>"code"===e));a.variants=a.variants.filter((({begin:e})=>!e.includes("( {4}|\\t)")));const l=[...n.contains.filter((({className:e})=>"code"!==e)),a];return{...n,contains:[c,s,t,d,...l]}}}}]); -------------------------------------------------------------------------------- /Slider.doccarchive/data/documentation/slider/slider/endtracking(_:with:).json: -------------------------------------------------------------------------------- 1 | {"hierarchy":{"paths":[["doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider"]]},"metadata":{"title":"endTracking(_:with:)","modules":[{"name":"Slider"}],"roleHeading":"Instance Method","symbolKind":"method","externalID":"c:@CM@Slider@objc(cs)Slider(im)endTrackingWithTouch:withEvent:","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"endTracking"},{"kind":"text","text":"("},{"text":"UITouch","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)UITouch"},{"text":"?, ","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)UIEvent","text":"UIEvent","kind":"typeIdentifier"},{"text":"?)","kind":"text"}],"role":"symbol","extendedModule":"Slider"},"sections":[],"schemaVersion":{"patch":0,"minor":3,"major":0},"primaryContentSections":[{"declarations":[{"platforms":["iOS"],"tokens":[{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"endTracking"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"touch","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"UITouch","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)UITouch"},{"text":"?, ","kind":"text"},{"kind":"externalParam","text":"with"},{"text":" ","kind":"text"},{"text":"event","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)UIEvent","text":"UIEvent","kind":"typeIdentifier"},{"kind":"text","text":"?)"}],"languages":["swift"]}],"kind":"declarations"}],"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/slider\/slider\/endtracking(_:with:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/endTracking(_:with:)"},"abstract":[{"text":"Notifies the control when a touch event associated with the control ends.","type":"text"}],"references":{"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider":{"url":"\/documentation\/slider\/slider","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Slider","kind":"identifier"}],"role":"symbol","title":"Slider","kind":"symbol","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider","type":"topic","abstract":[{"text":"An open class that extends ","type":"text"},{"code":"UIControl","type":"codeVoice"},{"type":"text","text":" to create a customizable slider component."}],"navigatorTitle":[{"kind":"identifier","text":"Slider"}]},"doc://Ramiz-Kichibekov.Slider/documentation/Slider":{"type":"topic","url":"\/documentation\/slider","kind":"symbol","title":"Slider","identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider","abstract":[],"role":"collection"},"doc://Ramiz-Kichibekov.Slider/documentation/Slider/Slider/endTracking(_:with:)":{"role":"symbol","type":"topic","kind":"symbol","url":"\/documentation\/slider\/slider\/endtracking(_:with:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"endTracking","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)UITouch","text":"UITouch"},{"text":"?, ","kind":"text"},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"UIEvent","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)UIEvent"},{"kind":"text","text":"?)"}],"identifier":"doc:\/\/Ramiz-Kichibekov.Slider\/documentation\/Slider\/Slider\/endTracking(_:with:)","title":"endTracking(_:with:)","abstract":[{"text":"Notifies the control when a touch event associated with the control ends.","type":"text"}]}}} -------------------------------------------------------------------------------- /Slider.doccarchive/js/highlight-js-python-js.60354774.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[435],{8245:function(e){function n(e){const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i=["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],s=["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],t=["__debug__","Ellipsis","False","None","NotImplemented","True"],r=["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"],l={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i,built_in:s,literal:t,type:r},b={className:"meta",begin:/^(>>>|\.\.\.) /},o={className:"subst",begin:/\{/,end:/\}/,keywords:l,illegal:/#/},c={begin:/\{\{/,relevance:0},d={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,b],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,b],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,b,c,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,b,c,o]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,c,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,c,o]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},p="[0-9](_?[0-9])*",_=`(\\b(${p}))?\\.(${p})|\\b(${p})\\.`,g={className:"number",relevance:0,variants:[{begin:`(\\b(${p})|(${_}))[eE][+-]?(${p})[jJ]?\\b`},{begin:`(${_})[jJ]?`},{begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${p})[jJ]\\b`}]},m={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:l,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},f={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:["self",b,g,d,e.HASH_COMMENT_MODE]}]};return o.contains=[d,g,b],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:l,illegal:/(<\/|->|\?)|=>/,contains:[b,g,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},d,m,e.HASH_COMMENT_MODE,{match:[/def/,/\s+/,a],scope:{1:"keyword",3:"title.function"},contains:[f]},{variants:[{match:[/class/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/class/,/\s+/,a]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,f,d]}]}}e.exports=n}}]); --------------------------------------------------------------------------------