2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/Example/ReactionButton/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/Sources/ReactionButton/ReactionButtonConfig.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ReactionButtonConfig.swift
3 | // ReactionButton
4 | //
5 | // Created by Jorge R Ovalle Z on 4/6/18.
6 | //
7 |
8 | import CoreGraphics
9 |
10 | public extension ReactionButton {
11 | /// A type representing the basic configurations for a `ReactionButton`.
12 | struct Config {
13 |
14 | /// The space between options.
15 | let spacing: CGFloat
16 |
17 | /// The default size for an option.
18 | let size: CGFloat
19 |
20 | /// The size of an option before expand.
21 | let sizeBeforeOpen: CGFloat
22 |
23 | /// The minimum size when an option is being selected.
24 | let minSize: CGFloat
25 |
26 | /// The maximum size when the option is beign selected.
27 | let maxSize: CGFloat
28 |
29 | var heightForSize: CGFloat {
30 | size + 2 * spacing
31 | }
32 |
33 | /// Creates an instance of `JOReactionableConfig`
34 | ///
35 | /// - Parameters:
36 | /// - spacing: The space between options.
37 | /// - size: The default size for an option.
38 | /// - minSize: The minimum size when an option is being selected.
39 | /// - maxSize: The maximum size when the option is beign selected.
40 | /// - spaceBetweenComponents: The space between the `SelectorView` and the `InformationView`.
41 | public init(spacing: CGFloat, size: CGFloat, minSize: CGFloat, maxSize: CGFloat) {
42 | self.spacing = spacing
43 | self.size = size
44 | self.minSize = minSize
45 | self.maxSize = maxSize
46 | self.sizeBeforeOpen = 10
47 | }
48 |
49 | /// A `default` definition of `ReactionButton.Config`.
50 | public static let `default` = Config(spacing: 6,
51 | size: 40,
52 | minSize: 34,
53 | maxSize: 80)
54 | }
55 |
56 | }
57 |
--------------------------------------------------------------------------------
/Example/ReactionButton/SampleTableViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SampleTableViewController.swift
3 | // ReactionButton_Example
4 | //
5 | // Created by Jorge Ovalle on 31/10/20.
6 | // Copyright © 2020 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import ReactionButton
11 |
12 | final class SampleTableViewController: UITableViewController {
13 |
14 | override func numberOfSections(in tableView: UITableView) -> Int {
15 | return 1
16 | }
17 |
18 | override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
19 | return 10
20 | }
21 |
22 |
23 | override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
24 | return tableView.dequeueReusableCell(withIdentifier: "SampleCell", for: indexPath)
25 | }
26 |
27 | }
28 |
29 | final class CustomSelectorView: ReactionButton, ReactionButtonDataSource {
30 |
31 | let optionsDataset = [
32 | (imageName: "img_1", title: "Like"),
33 | (imageName: "img_2", title: "Smile"),
34 | (imageName: "img_3", title: "Heart"),
35 | (imageName: "img_4", title: "Idea"),
36 | (imageName: "img_5", title: "Slow"),
37 | (imageName: "img_6", title: "Fast")
38 | ]
39 |
40 | override init(frame: CGRect) {
41 | super.init(frame: frame)
42 | self.dataSource = self
43 | }
44 |
45 | required init?(coder aDecoder: NSCoder) {
46 | super.init(coder: aDecoder)
47 | self.dataSource = self
48 | }
49 |
50 | func numberOfOptions(in selector: ReactionButton) -> Int {
51 | optionsDataset.count
52 | }
53 |
54 | func ReactionSelector(_ selector: ReactionButton, viewForIndex index: Int) -> UIView {
55 | let option = optionsDataset[index].imageName
56 | guard let image = UIImage(named: option) else {
57 | return UIView()
58 | }
59 | return UIImageView(image: image)
60 | }
61 |
62 | func ReactionSelector(_ selector: ReactionButton, nameForIndex index: Int) -> String {
63 | optionsDataset[index].title
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/Example/ReactionButton/SampleViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SampleViewController.swift
3 | // ReactionButton
4 | //
5 | // Created by Jorge R Ovalle Z on 2/28/16.
6 | //
7 |
8 | import UIKit
9 | import ReactionButton
10 |
11 | final class SampleViewController: UIViewController {
12 |
13 | @IBOutlet weak var selectorView: ReactionButton!
14 | @IBOutlet weak var informationLabel: UILabel!
15 |
16 | let optionsDataset = [
17 | (imageName: "img_1", title: "Like"),
18 | (imageName: "img_2", title: "Smile"),
19 | (imageName: "img_3", title: "Heart"),
20 | (imageName: "img_4", title: "Idea"),
21 | (imageName: "img_5", title: "Slow"),
22 | (imageName: "img_6", title: "Fast")
23 | ]
24 |
25 | override func viewDidLoad() {
26 | super.viewDidLoad()
27 | selectorView.delegate = self
28 | selectorView.dataSource = self
29 | }
30 |
31 | }
32 |
33 | // MARK: ReactionButtonDelegate
34 | extension SampleViewController: ReactionButtonDelegate {
35 |
36 | func ReactionSelector(_ sender: ReactionButton, didSelectedIndex index: Int) {
37 | informationLabel.text = "Option \(index) selected"
38 | }
39 |
40 | func ReactionSelector(_ sender: ReactionButton, didChangeFocusTo index: Int?) {
41 | guard let index = index else {
42 | informationLabel.text = "Lost Focus"
43 | return
44 | }
45 |
46 | informationLabel.text = "Focused on \(index) option"
47 | }
48 |
49 | func ReactionSelectorDidCancelledAction(_ sender: ReactionButton) {
50 | informationLabel.text = "User cancelled selection"
51 | }
52 |
53 | }
54 |
55 | // MARK: ReactionButtonDataSource
56 | extension SampleViewController: ReactionButtonDataSource {
57 |
58 | func numberOfOptions(in selector: ReactionButton) -> Int {
59 | optionsDataset.count
60 | }
61 |
62 | func ReactionSelector(_ selector: ReactionButton, viewForIndex index: Int) -> UIView {
63 | let option = optionsDataset[index].imageName
64 | guard let image = UIImage(named: option) else {
65 | return UIView()
66 | }
67 | return UIImageView(image: image)
68 | }
69 |
70 | func ReactionSelector(_ selector: ReactionButton, nameForIndex index: Int) -> String {
71 | optionsDataset[index].title
72 | }
73 |
74 | }
75 |
--------------------------------------------------------------------------------
/Sources/ReactionButton/ReactionButton+protocols.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ReactionButton+protocols.swift
3 | // ReactionButton
4 | //
5 | // Created by Jorge R Ovalle Z on 4/11/18.
6 | //
7 |
8 | import UIKit
9 |
10 | /// Describes a type that is informed of events occurring within a `ReactionButton`.
11 | public protocol ReactionButtonDelegate: class {
12 |
13 | /// The user selected an option from the sender.
14 | ///
15 | /// - Parameters:
16 | /// - sender: The `ReactionButton` which is sending the action.
17 | /// - index: Index of the selected option.
18 | func ReactionSelector(_ sender: ReactionButton, didSelectedIndex index: Int)
19 |
20 | /// The user is moving through the options.
21 | /// - Parameters:
22 | /// - sender: The `ReactionButton` which is sending the action.
23 | /// - index: Index of the selected option.
24 | func ReactionSelector(_ sender: ReactionButton, didChangeFocusTo index: Int?)
25 |
26 | /// The user cancelled the option selection.
27 | ///
28 | /// - Parameter sender: The `ReactionButton` which is sending the action.
29 | func ReactionSelectorDidCancelledAction(_ sender: ReactionButton)
30 |
31 | }
32 |
33 | public protocol ReactionButtonDelegateLayout: ReactionButtonDelegate {
34 | func ReactionSelectorConfiguration(_ selector: ReactionButton) -> ReactionButton.Config
35 | }
36 |
37 | public extension ReactionButtonDelegateLayout {
38 | func ReactionSelectorConfiguration(_ selector: ReactionButton) -> ReactionButton.Config {
39 | .default
40 | }
41 | }
42 |
43 | /// Default implementation for delegate
44 | public extension ReactionButtonDelegate {
45 | func ReactionSelector(_ sender: ReactionButton, didSelectedIndex index: Int) {}
46 | func ReactionSelector(_ sender: ReactionButton, didChangeFocusTo index: Int?) {}
47 | func ReactionSelectorDidCancelledAction(_ sender: ReactionButton) {}
48 | }
49 |
50 | public protocol ReactionButtonDataSource: class {
51 |
52 | /// Asks the data source to return the number of items in the ReactionButton.
53 | func numberOfOptions(in selector: ReactionButton) -> Int
54 |
55 | /// Asks the data source for the view of the specific item.
56 | func ReactionSelector(_ selector: ReactionButton, viewForIndex index: Int) -> UIView
57 |
58 | /// Asks the data source for the name of the specific item.
59 | func ReactionSelector(_ selector: ReactionButton, nameForIndex index: Int) -> String
60 | }
61 |
--------------------------------------------------------------------------------
/Example/ReactionButton/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "filename" : "icon-29@2x.png",
15 | "idiom" : "iphone",
16 | "scale" : "2x",
17 | "size" : "29x29"
18 | },
19 | {
20 | "filename" : "icon-29@3x.png",
21 | "idiom" : "iphone",
22 | "scale" : "3x",
23 | "size" : "29x29"
24 | },
25 | {
26 | "filename" : "icon-40@2x.png",
27 | "idiom" : "iphone",
28 | "scale" : "2x",
29 | "size" : "40x40"
30 | },
31 | {
32 | "filename" : "icon-40@3x.png",
33 | "idiom" : "iphone",
34 | "scale" : "3x",
35 | "size" : "40x40"
36 | },
37 | {
38 | "filename" : "icon-60@2x.png",
39 | "idiom" : "iphone",
40 | "scale" : "2x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "filename" : "icon-60@3x.png",
45 | "idiom" : "iphone",
46 | "scale" : "3x",
47 | "size" : "60x60"
48 | },
49 | {
50 | "idiom" : "ipad",
51 | "scale" : "1x",
52 | "size" : "20x20"
53 | },
54 | {
55 | "idiom" : "ipad",
56 | "scale" : "2x",
57 | "size" : "20x20"
58 | },
59 | {
60 | "filename" : "icon-29.png",
61 | "idiom" : "ipad",
62 | "scale" : "1x",
63 | "size" : "29x29"
64 | },
65 | {
66 | "filename" : "icon-29@2x.png",
67 | "idiom" : "ipad",
68 | "scale" : "2x",
69 | "size" : "29x29"
70 | },
71 | {
72 | "filename" : "icon-40.png",
73 | "idiom" : "ipad",
74 | "scale" : "1x",
75 | "size" : "40x40"
76 | },
77 | {
78 | "filename" : "icon-40@2x.png",
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "40x40"
82 | },
83 | {
84 | "filename" : "icon-76.png",
85 | "idiom" : "ipad",
86 | "scale" : "1x",
87 | "size" : "76x76"
88 | },
89 | {
90 | "filename" : "icon-76@2x.png",
91 | "idiom" : "ipad",
92 | "scale" : "2x",
93 | "size" : "76x76"
94 | },
95 | {
96 | "idiom" : "ipad",
97 | "scale" : "2x",
98 | "size" : "83.5x83.5"
99 | },
100 | {
101 | "filename" : "icon-1025.png",
102 | "idiom" : "ios-marketing",
103 | "scale" : "1x",
104 | "size" : "1024x1024"
105 | }
106 | ],
107 | "info" : {
108 | "author" : "xcode",
109 | "version" : 1
110 | }
111 | }
112 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | Since Facebook introduced reactions in 2016, it became a standard in several applications as a way for users to interact with content. ReactionButton is a control that allows developers to add this functionality to their apps in an easy way.
14 |
15 | ## Features
16 | - [x] Support of Dark Mode
17 | - [x] Customizable layout using `ReactionButtonDelegateLayout`
18 | - [x] Extensible DataSource for the control
19 | - [x] Layout support for scrolling interfaces (UICollectionView/UITableView)
20 | - [x] Codable initializer for usage on storyboards
21 | - [x] Events
22 |
23 | ## Requirements
24 | * iOS 13.0+
25 | * Swift 5.0+
26 |
27 | ## Installation
28 |
29 | * [Installation guide](https://github.com/lojals/ReactionButton/wiki/Installation-guide)
30 |
31 | ## Usage
32 |
33 | ### 1. Basic Instance
34 | There are multiple ways to instantiate a `ReactionButton`, using a frame, storyboards, or an empty convenience initializer.
35 |
36 | #### Example Code
37 |
38 | ```swift
39 | let buttonSample = ReactionButton(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
40 | buttonSample.dataSource = self
41 | view.addSubview(buttonSample)
42 | ```
43 |
44 | 
45 | > Images from [Trump reactionpacks style](http://www.reactionpacks.com/packs/2c1a1e41-e9e9-407a-a532-3bfdfef6b3e6).
46 |
47 | ### 2. Delegate
48 | The `ReactionButton` has a delegate to communicate events of option selection, option focus, and cancel of actions. To use it, set the `ReactionButtonDelegate` conform as a delegate.
49 |
50 | ```swift
51 | let buttonSample = ReactionButton(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
52 | buttonSample.delegate = self
53 | view.addSubview(buttonSample)
54 | ```
55 | 
56 | > Images from [Trump reactionpacks style](http://www.reactionpacks.com/packs/2c1a1e41-e9e9-407a-a532-3bfdfef6b3e6).
57 |
58 | ### 3. Custom layout instance
59 | `ReactionButton` allows customization of the layout with the help of `ReactionButtonDelegateLayout`. To use it, please conform to that protocol and set it as delegate (Same pattern as UICollectionView).
60 |
61 | ```swift
62 | func ReactionSelectorConfiguration(_ selector: ReactionButton) -> ReactionButton.Config {
63 | ReactionButton.Config(spacing: 2,
64 | size: 30,
65 | minSize: 34,
66 | maxSize: 45,
67 | spaceBetweenComponents: 30)
68 | }
69 | ```
70 | You can custom your selector with the following variables, used in the
71 |
72 | 
73 |
74 | 
75 |
76 | ## Author
77 | Jorge Ovalle, jroz9105@gmail.com
78 |
--------------------------------------------------------------------------------
/Example/ReactionButton/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
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 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/Example/ReactionButton.xcodeproj/xcshareddata/xcschemes/EmojiSelectorView-Example.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
38 |
39 |
44 |
45 |
51 |
52 |
53 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
76 |
78 |
84 |
85 |
86 |
87 |
93 |
95 |
101 |
102 |
103 |
104 |
106 |
107 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/Sources/ReactionButton/ReactionButton.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ReactionButton.swift
3 | // ReactionButton
4 | //
5 | // Created by Jorge R Ovalle Z on 2/28/16.
6 | //
7 |
8 | import UIKit
9 |
10 | /// A type that represents the selector with options froma items.
11 | open class ReactionButton: UIButton {
12 |
13 | public weak var delegate: ReactionButtonDelegate?
14 | public weak var dataSource: ReactionButtonDataSource?
15 |
16 | private var _dataSource: ReactionButtonDataSource {
17 | guard let dataSource = dataSource else {
18 | fatalError("❌ Please set up a datasource for the ReactionButton")
19 | }
20 | return dataSource
21 | }
22 |
23 | private var selectedItem: Int? {
24 | didSet {
25 | if oldValue != selectedItem {
26 | delegate?.ReactionSelector(self, didChangeFocusTo: selectedItem)
27 | }
28 | }
29 | }
30 |
31 | private lazy var optionsBarView: UIView = {
32 | let optionsBarView = UIView(frame: .zero)
33 | optionsBarView.layer.cornerRadius = config.heightForSize/2
34 | optionsBarView.alpha = 0.3
35 | return optionsBarView
36 | }()
37 |
38 | private var config: ReactionButton.Config {
39 | guard let delegate = delegate as? ReactionButtonDelegateLayout else {
40 | return .default
41 | }
42 | return delegate.ReactionSelectorConfiguration(self)
43 | }
44 |
45 | private var rootView: UIView? {
46 | UIApplication.shared.windows.filter {$0.isKeyWindow}.first?.rootViewController?.view
47 | }
48 |
49 | // MARK: - View lifecycle
50 |
51 | /// Creates a new instance of `ReactionButton`.
52 | public convenience init() {
53 | self.init(frame: .zero)
54 | }
55 |
56 | /// Creates a new instace of `ReactionButton`.
57 | ///
58 | /// - Parameters:
59 | /// - frame: Frame of the button will open the selector
60 | /// - config: The custom configuration for the UI components.
61 | public override init(frame: CGRect) {
62 | super.init(frame: frame)
63 | setup()
64 | }
65 |
66 | required public init?(coder aDecoder: NSCoder) {
67 | super.init(coder: aDecoder)
68 | setup()
69 | }
70 |
71 | private func setup() {
72 | addGestureRecognizer(UILongPressGestureRecognizer(target: self,
73 | action: #selector(ReactionButton.handlePress(sender:))))
74 | }
75 |
76 | // MARK: - Visual component interaction / animation
77 |
78 | /// Function that open and expand the Options Selector.
79 | @objc private func handlePress(sender: UILongPressGestureRecognizer) {
80 | switch sender.state {
81 | case .began:
82 | expand()
83 | case .changed:
84 | let point = sender.location(in: rootView)
85 | move(point)
86 | case .ended:
87 | collapse()
88 | default: break
89 | }
90 | }
91 |
92 | private func expand() {
93 | selectedItem = nil
94 | updateOptionsView(with: UIScreen.main.traitCollection)
95 |
96 | let config = self.config
97 | rootView?.addSubview(optionsBarView)
98 |
99 | UIView.animate(withDuration: 0.2) {
100 | self.optionsBarView.alpha = 1
101 | }
102 |
103 | for i in 0..<_dataSource.numberOfOptions(in: self) {
104 | let optionFrame = CGRect(x: xPosition(for: i), y: config.heightForSize * 1.2,
105 | sideSize: config.sizeBeforeOpen)
106 | let option = _dataSource.ReactionSelector(self, viewForIndex: i)
107 | option.frame = optionFrame
108 | option.alpha = 0.6
109 | optionsBarView.addSubview(option)
110 |
111 | UIView.animate(index: i) {
112 | option.frame.origin.y = config.spacing
113 | option.alpha = 1
114 | option.frame.size = CGSize(sideSize: config.size)
115 | let sizeCenter = config.size/2
116 | option.center = CGPoint(x: optionFrame.origin.x + sizeCenter,
117 | y: config.spacing + sizeCenter)
118 | }
119 | }
120 | }
121 |
122 | private func move(_ point: CGPoint) {
123 | // Check if the point's position is inside the defined area.
124 | if optionsBarView.contains(point) {
125 | let relativeSizePerOption = optionsBarView.frame.width / CGFloat(_dataSource.numberOfOptions(in: self))
126 | focusOption(withIndex: Int(round((point.x - optionsBarView.frame.minX) / relativeSizePerOption)))
127 | } else {
128 | selectedItem = nil
129 | UIView.animate(withDuration: 0.2) {
130 | for (idx, view) in self.optionsBarView.subviews.enumerated() {
131 | view.frame = CGRect(x: self.xPosition(for: idx), y: self.config.spacing, sideSize: self.config.size)
132 | }
133 | }
134 | }
135 | }
136 |
137 | /// Function that collapse and close the Options Selector.
138 | private func collapse() {
139 | for (index, option) in optionsBarView.subviews.enumerated() {
140 | UIView.animate(index: index) {
141 | option.alpha = 0
142 | option.frame.size = CGSize(sideSize: self.config.sizeBeforeOpen)
143 | } completion: { finished in
144 | guard finished, index == self._dataSource.numberOfOptions(in: self)/2 else {
145 | return
146 | }
147 | self.optionsBarView.removeFromSuperview()
148 | self.optionsBarView.subviews.forEach { $0.removeFromSuperview() }
149 | if let selectedItem = self.selectedItem {
150 | self.delegate?.ReactionSelector(self, didSelectedIndex: selectedItem)
151 | } else {
152 | self.delegate?.ReactionSelectorDidCancelledAction(self)
153 | }
154 | }
155 | }
156 | }
157 |
158 | /// When a user in focusing an option, that option should magnify.
159 | ///
160 | /// - Parameter index: The index of the option in the items.
161 | private func focusOption(withIndex index: Int) {
162 | guard (0..<_dataSource.numberOfOptions(in: self)).contains(index) else { return }
163 | selectedItem = index
164 | let config = self.config
165 | var xCarry: CGFloat = index != 0 ? config.spacing : 0
166 |
167 | UIView.animate(withDuration: 0.2) {
168 | for (i, optionView) in self.optionsBarView.subviews.enumerated() {
169 | optionView.frame = CGRect(x: xCarry, y: config.spacing, sideSize: config.minSize)
170 | optionView.center.y = config.heightForSize/2
171 | switch i {
172 | case (index-1):
173 | xCarry += config.minSize
174 | case index:
175 | optionView.frame = CGRect(x: xCarry, y: -config.maxSize/2, sideSize: config.maxSize)
176 | xCarry += config.maxSize
177 | default:
178 | xCarry += config.minSize + config.spacing
179 | }
180 | }
181 | }
182 | }
183 |
184 | /// Calculate the `x` position for a given items option.
185 | ///
186 | /// - Parameter option: the position of the option in the items. <0... items.count>.
187 | /// - Returns: The x position for a given option.
188 | private func xPosition(for option: Int) -> CGFloat {
189 | let option = CGFloat(option)
190 | return (option + 1) * config.spacing + config.size * option
191 | }
192 |
193 | private func updateOptionsView(with trait: UITraitCollection) {
194 | let originPoint = superview?.convert(frame.origin, to: rootView) ?? .zero
195 |
196 | optionsBarView.backgroundColor = UIColor.background
197 | optionsBarView.layer.shadowColor = UIColor.shadow.cgColor
198 | optionsBarView.layer.shadowOpacity = 0.5
199 | optionsBarView.layer.shadowOffset = .zero
200 |
201 | optionsBarView.frame = config.rect(items: _dataSource.numberOfOptions(in: self),
202 | originalPos: originPoint,
203 | trait: trait)
204 | }
205 | }
206 |
--------------------------------------------------------------------------------
/Example/ReactionButton/Base.lproj/Main.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 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
--------------------------------------------------------------------------------
/Example/ReactionButton.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; };
11 | 607FACD81AFB9204008FA782 /* SampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* SampleViewController.swift */; };
12 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; };
13 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; };
14 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; };
15 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; };
16 | 6CDA14413D15FF293F32AE0A /* Pods_ReactionButton_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 351E55CD4A2FDEA989D65319 /* Pods_ReactionButton_Tests.framework */; };
17 | 7ACF52B0254D31A900B00C8D /* img_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF529E254D31A900B00C8D /* img_1.png */; };
18 | 7ACF52B1254D31A900B00C8D /* img_1@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF529F254D31A900B00C8D /* img_1@3x.png */; };
19 | 7ACF52B2254D31A900B00C8D /* img_3@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52A0254D31A900B00C8D /* img_3@2x.png */; };
20 | 7ACF52B3254D31A900B00C8D /* img_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52A1254D31A900B00C8D /* img_2.png */; };
21 | 7ACF52B4254D31A900B00C8D /* img_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52A2254D31A900B00C8D /* img_3.png */; };
22 | 7ACF52B5254D31A900B00C8D /* img_6.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52A3254D31A900B00C8D /* img_6.png */; };
23 | 7ACF52B6254D31A900B00C8D /* img_3@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52A4254D31A900B00C8D /* img_3@3x.png */; };
24 | 7ACF52B7254D31A900B00C8D /* img_4.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52A5254D31A900B00C8D /* img_4.png */; };
25 | 7ACF52B8254D31A900B00C8D /* img_1@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52A6254D31A900B00C8D /* img_1@2x.png */; };
26 | 7ACF52B9254D31A900B00C8D /* img_5.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52A7254D31A900B00C8D /* img_5.png */; };
27 | 7ACF52BA254D31A900B00C8D /* img_5@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52A8254D31A900B00C8D /* img_5@2x.png */; };
28 | 7ACF52BB254D31A900B00C8D /* img_5@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52A9254D31A900B00C8D /* img_5@3x.png */; };
29 | 7ACF52BC254D31A900B00C8D /* img_2@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52AA254D31A900B00C8D /* img_2@2x.png */; };
30 | 7ACF52BD254D31A900B00C8D /* img_2@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52AB254D31A900B00C8D /* img_2@3x.png */; };
31 | 7ACF52BE254D31A900B00C8D /* img_6@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52AC254D31A900B00C8D /* img_6@3x.png */; };
32 | 7ACF52BF254D31A900B00C8D /* img_4@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52AD254D31A900B00C8D /* img_4@2x.png */; };
33 | 7ACF52C0254D31A900B00C8D /* img_4@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52AE254D31A900B00C8D /* img_4@3x.png */; };
34 | 7ACF52C1254D31A900B00C8D /* img_6@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7ACF52AF254D31A900B00C8D /* img_6@2x.png */; };
35 | 7ADD2264254E0E030009B82F /* SampleTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ADD2263254E0E030009B82F /* SampleTableViewController.swift */; };
36 | A8F4813110821649BBB25B0D /* Pods_ReactionButton_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95EEA5B4A599E390747AC670 /* Pods_ReactionButton_Example.framework */; };
37 | /* End PBXBuildFile section */
38 |
39 | /* Begin PBXContainerItemProxy section */
40 | 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = {
41 | isa = PBXContainerItemProxy;
42 | containerPortal = 607FACC81AFB9204008FA782 /* Project object */;
43 | proxyType = 1;
44 | remoteGlobalIDString = 607FACCF1AFB9204008FA782;
45 | remoteInfo = ReactionButton;
46 | };
47 | /* End PBXContainerItemProxy section */
48 |
49 | /* Begin PBXFileReference section */
50 | 101AE47BC6731DC179008361 /* Pods-ReactionButton_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactionButton_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-ReactionButton_Tests/Pods-ReactionButton_Tests.release.xcconfig"; sourceTree = ""; };
51 | 31AF104F61726A4824CD7D70 /* Pods-ReactionButton_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactionButton_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-ReactionButton_Example/Pods-ReactionButton_Example.debug.xcconfig"; sourceTree = ""; };
52 | 351E55CD4A2FDEA989D65319 /* Pods_ReactionButton_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ReactionButton_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
53 | 41BF3925EBD79D4DA4D6746E /* ReactionButton.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = ReactionButton.podspec; path = ../ReactionButton.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
54 | 607FACD01AFB9204008FA782 /* ReactionButton_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReactionButton_Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
55 | 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
56 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
57 | 607FACD71AFB9204008FA782 /* SampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleViewController.swift; sourceTree = ""; };
58 | 607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
59 | 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
60 | 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; };
61 | 607FACE51AFB9204008FA782 /* ReactionButton_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ReactionButton_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
62 | 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
63 | 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; };
64 | 61D2E54C81E5775A6A4D887E /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; };
65 | 7ACF529E254D31A900B00C8D /* img_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_1.png; sourceTree = ""; };
66 | 7ACF529F254D31A900B00C8D /* img_1@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "img_1@3x.png"; sourceTree = ""; };
67 | 7ACF52A0254D31A900B00C8D /* img_3@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "img_3@2x.png"; sourceTree = ""; };
68 | 7ACF52A1254D31A900B00C8D /* img_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_2.png; sourceTree = ""; };
69 | 7ACF52A2254D31A900B00C8D /* img_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_3.png; sourceTree = ""; };
70 | 7ACF52A3254D31A900B00C8D /* img_6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_6.png; sourceTree = ""; };
71 | 7ACF52A4254D31A900B00C8D /* img_3@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "img_3@3x.png"; sourceTree = ""; };
72 | 7ACF52A5254D31A900B00C8D /* img_4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_4.png; sourceTree = ""; };
73 | 7ACF52A6254D31A900B00C8D /* img_1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "img_1@2x.png"; sourceTree = ""; };
74 | 7ACF52A7254D31A900B00C8D /* img_5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_5.png; sourceTree = ""; };
75 | 7ACF52A8254D31A900B00C8D /* img_5@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "img_5@2x.png"; sourceTree = ""; };
76 | 7ACF52A9254D31A900B00C8D /* img_5@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "img_5@3x.png"; sourceTree = ""; };
77 | 7ACF52AA254D31A900B00C8D /* img_2@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "img_2@2x.png"; sourceTree = ""; };
78 | 7ACF52AB254D31A900B00C8D /* img_2@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "img_2@3x.png"; sourceTree = ""; };
79 | 7ACF52AC254D31A900B00C8D /* img_6@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "img_6@3x.png"; sourceTree = ""; };
80 | 7ACF52AD254D31A900B00C8D /* img_4@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "img_4@2x.png"; sourceTree = ""; };
81 | 7ACF52AE254D31A900B00C8D /* img_4@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "img_4@3x.png"; sourceTree = ""; };
82 | 7ACF52AF254D31A900B00C8D /* img_6@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "img_6@2x.png"; sourceTree = ""; };
83 | 7ADD2263254E0E030009B82F /* SampleTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleTableViewController.swift; sourceTree = ""; };
84 | 896201CC5F9E13F3BEEB67AA /* Pods-ReactionButton_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactionButton_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-ReactionButton_Example/Pods-ReactionButton_Example.release.xcconfig"; sourceTree = ""; };
85 | 95EEA5B4A599E390747AC670 /* Pods_ReactionButton_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ReactionButton_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
86 | C270B48A211A0387A65C0BFD /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; };
87 | DE3D7ABAD19542C0E0B84F33 /* Pods-ReactionButton_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactionButton_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-ReactionButton_Tests/Pods-ReactionButton_Tests.debug.xcconfig"; sourceTree = ""; };
88 | /* End PBXFileReference section */
89 |
90 | /* Begin PBXFrameworksBuildPhase section */
91 | 607FACCD1AFB9204008FA782 /* Frameworks */ = {
92 | isa = PBXFrameworksBuildPhase;
93 | buildActionMask = 2147483647;
94 | files = (
95 | A8F4813110821649BBB25B0D /* Pods_ReactionButton_Example.framework in Frameworks */,
96 | );
97 | runOnlyForDeploymentPostprocessing = 0;
98 | };
99 | 607FACE21AFB9204008FA782 /* Frameworks */ = {
100 | isa = PBXFrameworksBuildPhase;
101 | buildActionMask = 2147483647;
102 | files = (
103 | 6CDA14413D15FF293F32AE0A /* Pods_ReactionButton_Tests.framework in Frameworks */,
104 | );
105 | runOnlyForDeploymentPostprocessing = 0;
106 | };
107 | /* End PBXFrameworksBuildPhase section */
108 |
109 | /* Begin PBXGroup section */
110 | 607FACC71AFB9204008FA782 = {
111 | isa = PBXGroup;
112 | children = (
113 | 607FACF51AFB993E008FA782 /* Podspec Metadata */,
114 | 607FACD21AFB9204008FA782 /* Example for ReactionButton */,
115 | 607FACE81AFB9204008FA782 /* Tests */,
116 | 607FACD11AFB9204008FA782 /* Products */,
117 | 9918619326BD5D888853877F /* Pods */,
118 | 8271F654EE4033C22823CD90 /* Frameworks */,
119 | );
120 | sourceTree = "";
121 | };
122 | 607FACD11AFB9204008FA782 /* Products */ = {
123 | isa = PBXGroup;
124 | children = (
125 | 607FACD01AFB9204008FA782 /* ReactionButton_Example.app */,
126 | 607FACE51AFB9204008FA782 /* ReactionButton_Tests.xctest */,
127 | );
128 | name = Products;
129 | sourceTree = "";
130 | };
131 | 607FACD21AFB9204008FA782 /* Example for ReactionButton */ = {
132 | isa = PBXGroup;
133 | children = (
134 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */,
135 | 7ACF529D254D31A900B00C8D /* Assets */,
136 | 607FACDC1AFB9204008FA782 /* Images.xcassets */,
137 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */,
138 | 607FACD91AFB9204008FA782 /* Main.storyboard */,
139 | 7ADD2263254E0E030009B82F /* SampleTableViewController.swift */,
140 | 607FACD71AFB9204008FA782 /* SampleViewController.swift */,
141 | 607FACD31AFB9204008FA782 /* Supporting Files */,
142 | );
143 | name = "Example for ReactionButton";
144 | path = ReactionButton;
145 | sourceTree = "";
146 | };
147 | 607FACD31AFB9204008FA782 /* Supporting Files */ = {
148 | isa = PBXGroup;
149 | children = (
150 | 607FACD41AFB9204008FA782 /* Info.plist */,
151 | );
152 | name = "Supporting Files";
153 | sourceTree = "";
154 | };
155 | 607FACE81AFB9204008FA782 /* Tests */ = {
156 | isa = PBXGroup;
157 | children = (
158 | 607FACEB1AFB9204008FA782 /* Tests.swift */,
159 | 607FACE91AFB9204008FA782 /* Supporting Files */,
160 | );
161 | path = Tests;
162 | sourceTree = "";
163 | };
164 | 607FACE91AFB9204008FA782 /* Supporting Files */ = {
165 | isa = PBXGroup;
166 | children = (
167 | 607FACEA1AFB9204008FA782 /* Info.plist */,
168 | );
169 | name = "Supporting Files";
170 | sourceTree = "";
171 | };
172 | 607FACF51AFB993E008FA782 /* Podspec Metadata */ = {
173 | isa = PBXGroup;
174 | children = (
175 | 41BF3925EBD79D4DA4D6746E /* ReactionButton.podspec */,
176 | C270B48A211A0387A65C0BFD /* README.md */,
177 | 61D2E54C81E5775A6A4D887E /* LICENSE */,
178 | );
179 | name = "Podspec Metadata";
180 | sourceTree = "";
181 | };
182 | 7ACF529D254D31A900B00C8D /* Assets */ = {
183 | isa = PBXGroup;
184 | children = (
185 | 7ACF529E254D31A900B00C8D /* img_1.png */,
186 | 7ACF529F254D31A900B00C8D /* img_1@3x.png */,
187 | 7ACF52A0254D31A900B00C8D /* img_3@2x.png */,
188 | 7ACF52A1254D31A900B00C8D /* img_2.png */,
189 | 7ACF52A2254D31A900B00C8D /* img_3.png */,
190 | 7ACF52A3254D31A900B00C8D /* img_6.png */,
191 | 7ACF52A4254D31A900B00C8D /* img_3@3x.png */,
192 | 7ACF52A5254D31A900B00C8D /* img_4.png */,
193 | 7ACF52A6254D31A900B00C8D /* img_1@2x.png */,
194 | 7ACF52A7254D31A900B00C8D /* img_5.png */,
195 | 7ACF52A8254D31A900B00C8D /* img_5@2x.png */,
196 | 7ACF52A9254D31A900B00C8D /* img_5@3x.png */,
197 | 7ACF52AA254D31A900B00C8D /* img_2@2x.png */,
198 | 7ACF52AB254D31A900B00C8D /* img_2@3x.png */,
199 | 7ACF52AC254D31A900B00C8D /* img_6@3x.png */,
200 | 7ACF52AD254D31A900B00C8D /* img_4@2x.png */,
201 | 7ACF52AE254D31A900B00C8D /* img_4@3x.png */,
202 | 7ACF52AF254D31A900B00C8D /* img_6@2x.png */,
203 | );
204 | path = Assets;
205 | sourceTree = "";
206 | };
207 | 8271F654EE4033C22823CD90 /* Frameworks */ = {
208 | isa = PBXGroup;
209 | children = (
210 | 95EEA5B4A599E390747AC670 /* Pods_ReactionButton_Example.framework */,
211 | 351E55CD4A2FDEA989D65319 /* Pods_ReactionButton_Tests.framework */,
212 | );
213 | name = Frameworks;
214 | sourceTree = "";
215 | };
216 | 9918619326BD5D888853877F /* Pods */ = {
217 | isa = PBXGroup;
218 | children = (
219 | 31AF104F61726A4824CD7D70 /* Pods-ReactionButton_Example.debug.xcconfig */,
220 | 896201CC5F9E13F3BEEB67AA /* Pods-ReactionButton_Example.release.xcconfig */,
221 | DE3D7ABAD19542C0E0B84F33 /* Pods-ReactionButton_Tests.debug.xcconfig */,
222 | 101AE47BC6731DC179008361 /* Pods-ReactionButton_Tests.release.xcconfig */,
223 | );
224 | name = Pods;
225 | sourceTree = "";
226 | };
227 | /* End PBXGroup section */
228 |
229 | /* Begin PBXNativeTarget section */
230 | 607FACCF1AFB9204008FA782 /* ReactionButton_Example */ = {
231 | isa = PBXNativeTarget;
232 | buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "ReactionButton_Example" */;
233 | buildPhases = (
234 | D1AF8CF0DB203D8228D376D3 /* [CP] Check Pods Manifest.lock */,
235 | 607FACCC1AFB9204008FA782 /* Sources */,
236 | 607FACCD1AFB9204008FA782 /* Frameworks */,
237 | 607FACCE1AFB9204008FA782 /* Resources */,
238 | 4568B51128740B1D8BF20E24 /* [CP] Embed Pods Frameworks */,
239 | );
240 | buildRules = (
241 | );
242 | dependencies = (
243 | );
244 | name = ReactionButton_Example;
245 | productName = ReactionButton;
246 | productReference = 607FACD01AFB9204008FA782 /* ReactionButton_Example.app */;
247 | productType = "com.apple.product-type.application";
248 | };
249 | 607FACE41AFB9204008FA782 /* ReactionButton_Tests */ = {
250 | isa = PBXNativeTarget;
251 | buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "ReactionButton_Tests" */;
252 | buildPhases = (
253 | 724B5750F860396815138A6E /* [CP] Check Pods Manifest.lock */,
254 | 607FACE11AFB9204008FA782 /* Sources */,
255 | 607FACE21AFB9204008FA782 /* Frameworks */,
256 | 607FACE31AFB9204008FA782 /* Resources */,
257 | 9816FBD79E67711BE6C728D9 /* [CP] Embed Pods Frameworks */,
258 | );
259 | buildRules = (
260 | );
261 | dependencies = (
262 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */,
263 | );
264 | name = ReactionButton_Tests;
265 | productName = Tests;
266 | productReference = 607FACE51AFB9204008FA782 /* ReactionButton_Tests.xctest */;
267 | productType = "com.apple.product-type.bundle.unit-test";
268 | };
269 | /* End PBXNativeTarget section */
270 |
271 | /* Begin PBXProject section */
272 | 607FACC81AFB9204008FA782 /* Project object */ = {
273 | isa = PBXProject;
274 | attributes = {
275 | LastSwiftUpdateCheck = 0720;
276 | LastUpgradeCheck = 1210;
277 | ORGANIZATIONNAME = CocoaPods;
278 | TargetAttributes = {
279 | 607FACCF1AFB9204008FA782 = {
280 | CreatedOnToolsVersion = 6.3.1;
281 | LastSwiftMigration = 1210;
282 | };
283 | 607FACE41AFB9204008FA782 = {
284 | CreatedOnToolsVersion = 6.3.1;
285 | LastSwiftMigration = 1210;
286 | TestTargetID = 607FACCF1AFB9204008FA782;
287 | };
288 | };
289 | };
290 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "ReactionButton" */;
291 | compatibilityVersion = "Xcode 3.2";
292 | developmentRegion = English;
293 | hasScannedForEncodings = 0;
294 | knownRegions = (
295 | English,
296 | en,
297 | Base,
298 | );
299 | mainGroup = 607FACC71AFB9204008FA782;
300 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */;
301 | projectDirPath = "";
302 | projectRoot = "";
303 | targets = (
304 | 607FACCF1AFB9204008FA782 /* ReactionButton_Example */,
305 | 607FACE41AFB9204008FA782 /* ReactionButton_Tests */,
306 | );
307 | };
308 | /* End PBXProject section */
309 |
310 | /* Begin PBXResourcesBuildPhase section */
311 | 607FACCE1AFB9204008FA782 /* Resources */ = {
312 | isa = PBXResourcesBuildPhase;
313 | buildActionMask = 2147483647;
314 | files = (
315 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */,
316 | 7ACF52B0254D31A900B00C8D /* img_1.png in Resources */,
317 | 7ACF52C0254D31A900B00C8D /* img_4@3x.png in Resources */,
318 | 7ACF52BB254D31A900B00C8D /* img_5@3x.png in Resources */,
319 | 7ACF52B2254D31A900B00C8D /* img_3@2x.png in Resources */,
320 | 7ACF52BE254D31A900B00C8D /* img_6@3x.png in Resources */,
321 | 7ACF52B4254D31A900B00C8D /* img_3.png in Resources */,
322 | 7ACF52C1254D31A900B00C8D /* img_6@2x.png in Resources */,
323 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */,
324 | 7ACF52B3254D31A900B00C8D /* img_2.png in Resources */,
325 | 7ACF52BC254D31A900B00C8D /* img_2@2x.png in Resources */,
326 | 7ACF52BD254D31A900B00C8D /* img_2@3x.png in Resources */,
327 | 7ACF52B8254D31A900B00C8D /* img_1@2x.png in Resources */,
328 | 7ACF52B1254D31A900B00C8D /* img_1@3x.png in Resources */,
329 | 7ACF52B6254D31A900B00C8D /* img_3@3x.png in Resources */,
330 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */,
331 | 7ACF52BF254D31A900B00C8D /* img_4@2x.png in Resources */,
332 | 7ACF52B7254D31A900B00C8D /* img_4.png in Resources */,
333 | 7ACF52B5254D31A900B00C8D /* img_6.png in Resources */,
334 | 7ACF52BA254D31A900B00C8D /* img_5@2x.png in Resources */,
335 | 7ACF52B9254D31A900B00C8D /* img_5.png in Resources */,
336 | );
337 | runOnlyForDeploymentPostprocessing = 0;
338 | };
339 | 607FACE31AFB9204008FA782 /* Resources */ = {
340 | isa = PBXResourcesBuildPhase;
341 | buildActionMask = 2147483647;
342 | files = (
343 | );
344 | runOnlyForDeploymentPostprocessing = 0;
345 | };
346 | /* End PBXResourcesBuildPhase section */
347 |
348 | /* Begin PBXShellScriptBuildPhase section */
349 | 4568B51128740B1D8BF20E24 /* [CP] Embed Pods Frameworks */ = {
350 | isa = PBXShellScriptBuildPhase;
351 | buildActionMask = 2147483647;
352 | files = (
353 | );
354 | inputPaths = (
355 | "${PODS_ROOT}/Target Support Files/Pods-ReactionButton_Example/Pods-ReactionButton_Example-frameworks.sh",
356 | "${BUILT_PRODUCTS_DIR}/ReactionButton/ReactionButton.framework",
357 | );
358 | name = "[CP] Embed Pods Frameworks";
359 | outputPaths = (
360 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactionButton.framework",
361 | );
362 | runOnlyForDeploymentPostprocessing = 0;
363 | shellPath = /bin/sh;
364 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactionButton_Example/Pods-ReactionButton_Example-frameworks.sh\"\n";
365 | showEnvVarsInLog = 0;
366 | };
367 | 724B5750F860396815138A6E /* [CP] Check Pods Manifest.lock */ = {
368 | isa = PBXShellScriptBuildPhase;
369 | buildActionMask = 2147483647;
370 | files = (
371 | );
372 | inputPaths = (
373 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
374 | "${PODS_ROOT}/Manifest.lock",
375 | );
376 | name = "[CP] Check Pods Manifest.lock";
377 | outputPaths = (
378 | "$(DERIVED_FILE_DIR)/Pods-ReactionButton_Tests-checkManifestLockResult.txt",
379 | );
380 | runOnlyForDeploymentPostprocessing = 0;
381 | shellPath = /bin/sh;
382 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
383 | showEnvVarsInLog = 0;
384 | };
385 | 9816FBD79E67711BE6C728D9 /* [CP] Embed Pods Frameworks */ = {
386 | isa = PBXShellScriptBuildPhase;
387 | buildActionMask = 2147483647;
388 | files = (
389 | );
390 | inputPaths = (
391 | "${PODS_ROOT}/Target Support Files/Pods-ReactionButton_Tests/Pods-ReactionButton_Tests-frameworks.sh",
392 | "${BUILT_PRODUCTS_DIR}/ReactionButton/ReactionButton.framework",
393 | );
394 | name = "[CP] Embed Pods Frameworks";
395 | outputPaths = (
396 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactionButton.framework",
397 | );
398 | runOnlyForDeploymentPostprocessing = 0;
399 | shellPath = /bin/sh;
400 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactionButton_Tests/Pods-ReactionButton_Tests-frameworks.sh\"\n";
401 | showEnvVarsInLog = 0;
402 | };
403 | D1AF8CF0DB203D8228D376D3 /* [CP] Check Pods Manifest.lock */ = {
404 | isa = PBXShellScriptBuildPhase;
405 | buildActionMask = 2147483647;
406 | files = (
407 | );
408 | inputPaths = (
409 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
410 | "${PODS_ROOT}/Manifest.lock",
411 | );
412 | name = "[CP] Check Pods Manifest.lock";
413 | outputPaths = (
414 | "$(DERIVED_FILE_DIR)/Pods-ReactionButton_Example-checkManifestLockResult.txt",
415 | );
416 | runOnlyForDeploymentPostprocessing = 0;
417 | shellPath = /bin/sh;
418 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
419 | showEnvVarsInLog = 0;
420 | };
421 | /* End PBXShellScriptBuildPhase section */
422 |
423 | /* Begin PBXSourcesBuildPhase section */
424 | 607FACCC1AFB9204008FA782 /* Sources */ = {
425 | isa = PBXSourcesBuildPhase;
426 | buildActionMask = 2147483647;
427 | files = (
428 | 607FACD81AFB9204008FA782 /* SampleViewController.swift in Sources */,
429 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */,
430 | 7ADD2264254E0E030009B82F /* SampleTableViewController.swift in Sources */,
431 | );
432 | runOnlyForDeploymentPostprocessing = 0;
433 | };
434 | 607FACE11AFB9204008FA782 /* Sources */ = {
435 | isa = PBXSourcesBuildPhase;
436 | buildActionMask = 2147483647;
437 | files = (
438 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */,
439 | );
440 | runOnlyForDeploymentPostprocessing = 0;
441 | };
442 | /* End PBXSourcesBuildPhase section */
443 |
444 | /* Begin PBXTargetDependency section */
445 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = {
446 | isa = PBXTargetDependency;
447 | target = 607FACCF1AFB9204008FA782 /* ReactionButton_Example */;
448 | targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */;
449 | };
450 | /* End PBXTargetDependency section */
451 |
452 | /* Begin PBXVariantGroup section */
453 | 607FACD91AFB9204008FA782 /* Main.storyboard */ = {
454 | isa = PBXVariantGroup;
455 | children = (
456 | 607FACDA1AFB9204008FA782 /* Base */,
457 | );
458 | name = Main.storyboard;
459 | sourceTree = "";
460 | };
461 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = {
462 | isa = PBXVariantGroup;
463 | children = (
464 | 607FACDF1AFB9204008FA782 /* Base */,
465 | );
466 | name = LaunchScreen.xib;
467 | sourceTree = "";
468 | };
469 | /* End PBXVariantGroup section */
470 |
471 | /* Begin XCBuildConfiguration section */
472 | 607FACED1AFB9204008FA782 /* Debug */ = {
473 | isa = XCBuildConfiguration;
474 | buildSettings = {
475 | ALWAYS_SEARCH_USER_PATHS = NO;
476 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
477 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
478 | CLANG_CXX_LIBRARY = "libc++";
479 | CLANG_ENABLE_MODULES = YES;
480 | CLANG_ENABLE_OBJC_ARC = YES;
481 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
482 | CLANG_WARN_BOOL_CONVERSION = YES;
483 | CLANG_WARN_COMMA = YES;
484 | CLANG_WARN_CONSTANT_CONVERSION = YES;
485 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
486 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
487 | CLANG_WARN_EMPTY_BODY = YES;
488 | CLANG_WARN_ENUM_CONVERSION = YES;
489 | CLANG_WARN_INFINITE_RECURSION = YES;
490 | CLANG_WARN_INT_CONVERSION = YES;
491 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
492 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
493 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
494 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
495 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
496 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
497 | CLANG_WARN_STRICT_PROTOTYPES = YES;
498 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
499 | CLANG_WARN_UNREACHABLE_CODE = YES;
500 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
501 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
502 | COPY_PHASE_STRIP = NO;
503 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
504 | ENABLE_STRICT_OBJC_MSGSEND = YES;
505 | ENABLE_TESTABILITY = YES;
506 | GCC_C_LANGUAGE_STANDARD = gnu99;
507 | GCC_DYNAMIC_NO_PIC = NO;
508 | GCC_NO_COMMON_BLOCKS = YES;
509 | GCC_OPTIMIZATION_LEVEL = 0;
510 | GCC_PREPROCESSOR_DEFINITIONS = (
511 | "DEBUG=1",
512 | "$(inherited)",
513 | );
514 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
515 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
516 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
517 | GCC_WARN_UNDECLARED_SELECTOR = YES;
518 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
519 | GCC_WARN_UNUSED_FUNCTION = YES;
520 | GCC_WARN_UNUSED_VARIABLE = YES;
521 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
522 | MTL_ENABLE_DEBUG_INFO = YES;
523 | ONLY_ACTIVE_ARCH = YES;
524 | SDKROOT = iphoneos;
525 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
526 | };
527 | name = Debug;
528 | };
529 | 607FACEE1AFB9204008FA782 /* Release */ = {
530 | isa = XCBuildConfiguration;
531 | buildSettings = {
532 | ALWAYS_SEARCH_USER_PATHS = NO;
533 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
534 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
535 | CLANG_CXX_LIBRARY = "libc++";
536 | CLANG_ENABLE_MODULES = YES;
537 | CLANG_ENABLE_OBJC_ARC = YES;
538 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
539 | CLANG_WARN_BOOL_CONVERSION = YES;
540 | CLANG_WARN_COMMA = YES;
541 | CLANG_WARN_CONSTANT_CONVERSION = YES;
542 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
543 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
544 | CLANG_WARN_EMPTY_BODY = YES;
545 | CLANG_WARN_ENUM_CONVERSION = YES;
546 | CLANG_WARN_INFINITE_RECURSION = YES;
547 | CLANG_WARN_INT_CONVERSION = YES;
548 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
549 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
550 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
551 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
552 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
553 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
554 | CLANG_WARN_STRICT_PROTOTYPES = YES;
555 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
556 | CLANG_WARN_UNREACHABLE_CODE = YES;
557 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
558 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
559 | COPY_PHASE_STRIP = NO;
560 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
561 | ENABLE_NS_ASSERTIONS = NO;
562 | ENABLE_STRICT_OBJC_MSGSEND = YES;
563 | GCC_C_LANGUAGE_STANDARD = gnu99;
564 | GCC_NO_COMMON_BLOCKS = YES;
565 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
566 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
567 | GCC_WARN_UNDECLARED_SELECTOR = YES;
568 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
569 | GCC_WARN_UNUSED_FUNCTION = YES;
570 | GCC_WARN_UNUSED_VARIABLE = YES;
571 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
572 | MTL_ENABLE_DEBUG_INFO = NO;
573 | SDKROOT = iphoneos;
574 | SWIFT_COMPILATION_MODE = wholemodule;
575 | VALIDATE_PRODUCT = YES;
576 | };
577 | name = Release;
578 | };
579 | 607FACF01AFB9204008FA782 /* Debug */ = {
580 | isa = XCBuildConfiguration;
581 | baseConfigurationReference = 31AF104F61726A4824CD7D70 /* Pods-ReactionButton_Example.debug.xcconfig */;
582 | buildSettings = {
583 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
584 | INFOPLIST_FILE = ReactionButton/Info.plist;
585 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
586 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
587 | MODULE_NAME = ExampleApp;
588 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
589 | PRODUCT_NAME = "$(TARGET_NAME)";
590 | SWIFT_SWIFT3_OBJC_INFERENCE = Default;
591 | SWIFT_VERSION = 5.0;
592 | };
593 | name = Debug;
594 | };
595 | 607FACF11AFB9204008FA782 /* Release */ = {
596 | isa = XCBuildConfiguration;
597 | baseConfigurationReference = 896201CC5F9E13F3BEEB67AA /* Pods-ReactionButton_Example.release.xcconfig */;
598 | buildSettings = {
599 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
600 | INFOPLIST_FILE = ReactionButton/Info.plist;
601 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
602 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
603 | MODULE_NAME = ExampleApp;
604 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
605 | PRODUCT_NAME = "$(TARGET_NAME)";
606 | SWIFT_SWIFT3_OBJC_INFERENCE = Default;
607 | SWIFT_VERSION = 5.0;
608 | };
609 | name = Release;
610 | };
611 | 607FACF31AFB9204008FA782 /* Debug */ = {
612 | isa = XCBuildConfiguration;
613 | baseConfigurationReference = DE3D7ABAD19542C0E0B84F33 /* Pods-ReactionButton_Tests.debug.xcconfig */;
614 | buildSettings = {
615 | BUNDLE_LOADER = "$(TEST_HOST)";
616 | DEVELOPMENT_TEAM = "";
617 | FRAMEWORK_SEARCH_PATHS = (
618 | "$(SDKROOT)/Developer/Library/Frameworks",
619 | "$(inherited)",
620 | );
621 | GCC_PREPROCESSOR_DEFINITIONS = (
622 | "DEBUG=1",
623 | "$(inherited)",
624 | );
625 | INFOPLIST_FILE = Tests/Info.plist;
626 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
627 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
628 | PRODUCT_NAME = "$(TARGET_NAME)";
629 | SWIFT_SWIFT3_OBJC_INFERENCE = Default;
630 | SWIFT_VERSION = 5.0;
631 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ReactionButton_Example.app/ReactionButton_Example";
632 | };
633 | name = Debug;
634 | };
635 | 607FACF41AFB9204008FA782 /* Release */ = {
636 | isa = XCBuildConfiguration;
637 | baseConfigurationReference = 101AE47BC6731DC179008361 /* Pods-ReactionButton_Tests.release.xcconfig */;
638 | buildSettings = {
639 | BUNDLE_LOADER = "$(TEST_HOST)";
640 | DEVELOPMENT_TEAM = "";
641 | FRAMEWORK_SEARCH_PATHS = (
642 | "$(SDKROOT)/Developer/Library/Frameworks",
643 | "$(inherited)",
644 | );
645 | INFOPLIST_FILE = Tests/Info.plist;
646 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
647 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
648 | PRODUCT_NAME = "$(TARGET_NAME)";
649 | SWIFT_SWIFT3_OBJC_INFERENCE = Default;
650 | SWIFT_VERSION = 5.0;
651 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ReactionButton_Example.app/ReactionButton_Example";
652 | };
653 | name = Release;
654 | };
655 | /* End XCBuildConfiguration section */
656 |
657 | /* Begin XCConfigurationList section */
658 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "ReactionButton" */ = {
659 | isa = XCConfigurationList;
660 | buildConfigurations = (
661 | 607FACED1AFB9204008FA782 /* Debug */,
662 | 607FACEE1AFB9204008FA782 /* Release */,
663 | );
664 | defaultConfigurationIsVisible = 0;
665 | defaultConfigurationName = Release;
666 | };
667 | 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "ReactionButton_Example" */ = {
668 | isa = XCConfigurationList;
669 | buildConfigurations = (
670 | 607FACF01AFB9204008FA782 /* Debug */,
671 | 607FACF11AFB9204008FA782 /* Release */,
672 | );
673 | defaultConfigurationIsVisible = 0;
674 | defaultConfigurationName = Release;
675 | };
676 | 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "ReactionButton_Tests" */ = {
677 | isa = XCConfigurationList;
678 | buildConfigurations = (
679 | 607FACF31AFB9204008FA782 /* Debug */,
680 | 607FACF41AFB9204008FA782 /* Release */,
681 | );
682 | defaultConfigurationIsVisible = 0;
683 | defaultConfigurationName = Release;
684 | };
685 | /* End XCConfigurationList section */
686 | };
687 | rootObject = 607FACC81AFB9204008FA782 /* Project object */;
688 | }
689 |
--------------------------------------------------------------------------------
/Example/Pods/Pods.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 0167EC59425DCB1241A6A32E610AC3AA /* ReactionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 081132FF23AC14B72D80EC06FA0040DE /* ReactionButton.swift */; };
11 | 082B08E103A26399977E4FEEE4D02A43 /* EmojiSelectorView.Config+rect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A186FD5F7A49693BFDD63D62623BE9B /* EmojiSelectorView.Config+rect.swift */; };
12 | 157ED89F863C3436B6287D6AE97CBC5C /* UIView+animation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2113D9F113220A95301999A4CF19EC5E /* UIView+animation.swift */; };
13 | 170F6CA354E56309407BA844717E0B5A /* Pods-ReactionButton_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E8F17DAB918EEB9C05615F951A7939A8 /* Pods-ReactionButton_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
14 | 1830969FC5B96C68D5040B17FC810C93 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
15 | 1F421860EA1A479BAE2035BCEC1CC5ED /* ReactionButton-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E4B61CDF9032C235FC37180845A68333 /* ReactionButton-dummy.m */; };
16 | 2B342ABCA13861F220FCF6BA37CC76FB /* UIColor+Selector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40B8CBE2D4256025613996BB89C6E365 /* UIColor+Selector.swift */; };
17 | 497A4105A7E79EE4175B6549A7FBF55C /* Pods-ReactionButton_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DFC70B9345F00F95206131A0C436F87 /* Pods-ReactionButton_Tests-dummy.m */; };
18 | 4D030FA677AFEE2D2F18CF57C93EAF98 /* ReactionButton-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E768FF67DD737AD53C01159C6658849 /* ReactionButton-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
19 | 5AFD1C12956D52764C5A0A85AB99592D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
20 | 6C7AD3F1372328965A3C3F2A7603FA14 /* UIView+contains.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82435B1C058F55240E7C92FE5DDD2EA /* UIView+contains.swift */; };
21 | 751C47A864246551E7A5D9688B891EE4 /* CGSize+init.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBF99FE7DAA5937109C9B2BD589178DB /* CGSize+init.swift */; };
22 | 7C8432391B83AB3104BCE6C8912A4E14 /* ReactionButton+protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E8C91FBECFD466E2487D30135A1977E /* ReactionButton+protocols.swift */; };
23 | 7CFAC2EC8265E7B12943AC5FCDDAAADA /* CGRect+init.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F4EF1DEC66E720A83356272E3A88AF4 /* CGRect+init.swift */; };
24 | 9B94EE2E346C365A29BD93F95F2B5AB6 /* Pods-ReactionButton_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FCB0FFF5A310D2C9C1AA25D2BB3D2C42 /* Pods-ReactionButton_Example-dummy.m */; };
25 | B3A881704A623E4BAF3D7D616DEDC1B3 /* Pods-ReactionButton_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 912C974DCE3329FC3CF832D442E39EBC /* Pods-ReactionButton_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
26 | B42822CB3ED0E784119B70C44A6C1074 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
27 | D515620C6EA8CF7ECB80D1C186EC9BB4 /* ReactionButtonConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64E6B4CADB733A766553A36E9D1E4972 /* ReactionButtonConfig.swift */; };
28 | /* End PBXBuildFile section */
29 |
30 | /* Begin PBXContainerItemProxy section */
31 | 1752E607176C0AC28D875764F4072D92 /* PBXContainerItemProxy */ = {
32 | isa = PBXContainerItemProxy;
33 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
34 | proxyType = 1;
35 | remoteGlobalIDString = 12541455ED6C44722C8E828D91681462;
36 | remoteInfo = ReactionButton;
37 | };
38 | CF2A0F9AF88C3D30B42167A3C03F5EC5 /* PBXContainerItemProxy */ = {
39 | isa = PBXContainerItemProxy;
40 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
41 | proxyType = 1;
42 | remoteGlobalIDString = 12541455ED6C44722C8E828D91681462;
43 | remoteInfo = ReactionButton;
44 | };
45 | /* End PBXContainerItemProxy section */
46 |
47 | /* Begin PBXFileReference section */
48 | 081132FF23AC14B72D80EC06FA0040DE /* ReactionButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ReactionButton.swift; path = Sources/ReactionButton/ReactionButton.swift; sourceTree = ""; };
49 | 0A186FD5F7A49693BFDD63D62623BE9B /* EmojiSelectorView.Config+rect.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "EmojiSelectorView.Config+rect.swift"; sourceTree = ""; };
50 | 0DFC70B9345F00F95206131A0C436F87 /* Pods-ReactionButton_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReactionButton_Tests-dummy.m"; sourceTree = ""; };
51 | 1EC547090269357B7E36A4B1F2B78C2B /* Pods-ReactionButton_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReactionButton_Tests-acknowledgements.plist"; sourceTree = ""; };
52 | 2113D9F113220A95301999A4CF19EC5E /* UIView+animation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIView+animation.swift"; sourceTree = ""; };
53 | 23F11AEB8DDECBFDED097EFBF6000571 /* Pods-ReactionButton_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactionButton_Example.release.xcconfig"; sourceTree = ""; };
54 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
55 | 3283995A80FCDC53AA21EA7B57C06EBF /* Pods-ReactionButton_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReactionButton_Example-Info.plist"; sourceTree = ""; };
56 | 347AA17A84FE471B591F69B3A097F11D /* Pods-ReactionButton_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactionButton_Tests.release.xcconfig"; sourceTree = ""; };
57 | 397A92D4BFD73E3ED786F5137A184D91 /* Pods-ReactionButton_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactionButton_Example.debug.xcconfig"; sourceTree = ""; };
58 | 40B8CBE2D4256025613996BB89C6E365 /* UIColor+Selector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+Selector.swift"; sourceTree = ""; };
59 | 4F59E629289283B603368F07FB6545CB /* ReactionButton.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = ReactionButton.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
60 | 550E6616961A8B94990F7221D0D5F973 /* ReactionButton-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ReactionButton-Info.plist"; sourceTree = ""; };
61 | 5F4EF1DEC66E720A83356272E3A88AF4 /* CGRect+init.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CGRect+init.swift"; sourceTree = ""; };
62 | 64E6B4CADB733A766553A36E9D1E4972 /* ReactionButtonConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ReactionButtonConfig.swift; path = Sources/ReactionButton/ReactionButtonConfig.swift; sourceTree = ""; };
63 | 66519E80B48EA0A8B21331486D2970A2 /* Pods_ReactionButton_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ReactionButton_Tests.framework; path = "Pods-ReactionButton_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
64 | 6DD500BD48C3A95EBEB73F3B0AC8B19A /* ReactionButton.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ReactionButton.framework; path = ReactionButton.framework; sourceTree = BUILT_PRODUCTS_DIR; };
65 | 6E768FF67DD737AD53C01159C6658849 /* ReactionButton-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ReactionButton-umbrella.h"; sourceTree = ""; };
66 | 87590F7772DA23CC2148BBDA0FA46196 /* ReactionButton-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ReactionButton-prefix.pch"; sourceTree = ""; };
67 | 8D1ACAD95B13DFE6B645C23F70611EF0 /* Pods_ReactionButton_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ReactionButton_Example.framework; path = "Pods-ReactionButton_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
68 | 8E8C91FBECFD466E2487D30135A1977E /* ReactionButton+protocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ReactionButton+protocols.swift"; path = "Sources/ReactionButton/ReactionButton+protocols.swift"; sourceTree = ""; };
69 | 8F0D9657FA2D47E9A181A87F8D394AEA /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; };
70 | 912C974DCE3329FC3CF832D442E39EBC /* Pods-ReactionButton_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReactionButton_Tests-umbrella.h"; sourceTree = ""; };
71 | 9A90DADD4D20F75F230A9D2BDD72CA53 /* Pods-ReactionButton_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ReactionButton_Example.modulemap"; sourceTree = ""; };
72 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
73 | 9E50AB4F3071F27A8C24F59CBDD05124 /* Pods-ReactionButton_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReactionButton_Tests-frameworks.sh"; sourceTree = ""; };
74 | A5E6EEC3E04F0B8B3A5AAC60F7DAB28B /* Pods-ReactionButton_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReactionButton_Tests.debug.xcconfig"; sourceTree = ""; };
75 | BFA3C4A4A9A0114CA9274E95266FB0D6 /* Pods-ReactionButton_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReactionButton_Example-acknowledgements.markdown"; sourceTree = ""; };
76 | C0790C2C73215E3C9AE8F49040B61224 /* ReactionButton.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ReactionButton.modulemap; sourceTree = ""; };
77 | C6A91FEC93556E03CDE296B8C81B829F /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; };
78 | C7FFA0FABFB808501451F2C026B641CF /* Pods-ReactionButton_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReactionButton_Example-acknowledgements.plist"; sourceTree = ""; };
79 | C82435B1C058F55240E7C92FE5DDD2EA /* UIView+contains.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIView+contains.swift"; sourceTree = ""; };
80 | CB694CEC5496BC66EB177F7CBDFCA304 /* Pods-ReactionButton_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReactionButton_Example-frameworks.sh"; sourceTree = ""; };
81 | D6FADF543D1FDB26E76F90254E59F682 /* Pods-ReactionButton_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ReactionButton_Tests.modulemap"; sourceTree = ""; };
82 | E4B61CDF9032C235FC37180845A68333 /* ReactionButton-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ReactionButton-dummy.m"; sourceTree = ""; };
83 | E8F17DAB918EEB9C05615F951A7939A8 /* Pods-ReactionButton_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReactionButton_Example-umbrella.h"; sourceTree = ""; };
84 | F466A30AB3AA956307FF7838D45C5EC6 /* ReactionButton.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ReactionButton.xcconfig; sourceTree = ""; };
85 | F996EEB09C7FC61779E492A35DED0C11 /* Pods-ReactionButton_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReactionButton_Tests-Info.plist"; sourceTree = ""; };
86 | FBF99FE7DAA5937109C9B2BD589178DB /* CGSize+init.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CGSize+init.swift"; sourceTree = ""; };
87 | FCB0FFF5A310D2C9C1AA25D2BB3D2C42 /* Pods-ReactionButton_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReactionButton_Example-dummy.m"; sourceTree = ""; };
88 | FD0A6CA1A83FD07B71C66B8819452E4C /* Pods-ReactionButton_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReactionButton_Tests-acknowledgements.markdown"; sourceTree = ""; };
89 | /* End PBXFileReference section */
90 |
91 | /* Begin PBXFrameworksBuildPhase section */
92 | 1579099C2B3EAD3EB107DF4C04113F65 /* Frameworks */ = {
93 | isa = PBXFrameworksBuildPhase;
94 | buildActionMask = 2147483647;
95 | files = (
96 | B42822CB3ED0E784119B70C44A6C1074 /* Foundation.framework in Frameworks */,
97 | );
98 | runOnlyForDeploymentPostprocessing = 0;
99 | };
100 | 270A910882AC3586755C073481078882 /* Frameworks */ = {
101 | isa = PBXFrameworksBuildPhase;
102 | buildActionMask = 2147483647;
103 | files = (
104 | 1830969FC5B96C68D5040B17FC810C93 /* Foundation.framework in Frameworks */,
105 | );
106 | runOnlyForDeploymentPostprocessing = 0;
107 | };
108 | 9A616DAD916F42586FF836D894BBAD99 /* Frameworks */ = {
109 | isa = PBXFrameworksBuildPhase;
110 | buildActionMask = 2147483647;
111 | files = (
112 | 5AFD1C12956D52764C5A0A85AB99592D /* Foundation.framework in Frameworks */,
113 | );
114 | runOnlyForDeploymentPostprocessing = 0;
115 | };
116 | /* End PBXFrameworksBuildPhase section */
117 |
118 | /* Begin PBXGroup section */
119 | 169DA295921075ED10D6D0B470F7A715 /* Pods-ReactionButton_Tests */ = {
120 | isa = PBXGroup;
121 | children = (
122 | D6FADF543D1FDB26E76F90254E59F682 /* Pods-ReactionButton_Tests.modulemap */,
123 | FD0A6CA1A83FD07B71C66B8819452E4C /* Pods-ReactionButton_Tests-acknowledgements.markdown */,
124 | 1EC547090269357B7E36A4B1F2B78C2B /* Pods-ReactionButton_Tests-acknowledgements.plist */,
125 | 0DFC70B9345F00F95206131A0C436F87 /* Pods-ReactionButton_Tests-dummy.m */,
126 | 9E50AB4F3071F27A8C24F59CBDD05124 /* Pods-ReactionButton_Tests-frameworks.sh */,
127 | F996EEB09C7FC61779E492A35DED0C11 /* Pods-ReactionButton_Tests-Info.plist */,
128 | 912C974DCE3329FC3CF832D442E39EBC /* Pods-ReactionButton_Tests-umbrella.h */,
129 | A5E6EEC3E04F0B8B3A5AAC60F7DAB28B /* Pods-ReactionButton_Tests.debug.xcconfig */,
130 | 347AA17A84FE471B591F69B3A097F11D /* Pods-ReactionButton_Tests.release.xcconfig */,
131 | );
132 | name = "Pods-ReactionButton_Tests";
133 | path = "Target Support Files/Pods-ReactionButton_Tests";
134 | sourceTree = "";
135 | };
136 | 5E4CF1FB0B7D86A3FE25D08363340F9A /* Extensions */ = {
137 | isa = PBXGroup;
138 | children = (
139 | 5F4EF1DEC66E720A83356272E3A88AF4 /* CGRect+init.swift */,
140 | FBF99FE7DAA5937109C9B2BD589178DB /* CGSize+init.swift */,
141 | 0A186FD5F7A49693BFDD63D62623BE9B /* EmojiSelectorView.Config+rect.swift */,
142 | 40B8CBE2D4256025613996BB89C6E365 /* UIColor+Selector.swift */,
143 | 2113D9F113220A95301999A4CF19EC5E /* UIView+animation.swift */,
144 | C82435B1C058F55240E7C92FE5DDD2EA /* UIView+contains.swift */,
145 | );
146 | name = Extensions;
147 | path = Sources/ReactionButton/Extensions;
148 | sourceTree = "";
149 | };
150 | 6E40287BA5B27362BB888DF273FECE83 /* Development Pods */ = {
151 | isa = PBXGroup;
152 | children = (
153 | DC6BE866CE0395D58803308FE927E3E7 /* ReactionButton */,
154 | );
155 | name = "Development Pods";
156 | sourceTree = "";
157 | };
158 | 901852B1E8772AE959CEC0A0CD05B90B /* Pods-ReactionButton_Example */ = {
159 | isa = PBXGroup;
160 | children = (
161 | 9A90DADD4D20F75F230A9D2BDD72CA53 /* Pods-ReactionButton_Example.modulemap */,
162 | BFA3C4A4A9A0114CA9274E95266FB0D6 /* Pods-ReactionButton_Example-acknowledgements.markdown */,
163 | C7FFA0FABFB808501451F2C026B641CF /* Pods-ReactionButton_Example-acknowledgements.plist */,
164 | FCB0FFF5A310D2C9C1AA25D2BB3D2C42 /* Pods-ReactionButton_Example-dummy.m */,
165 | CB694CEC5496BC66EB177F7CBDFCA304 /* Pods-ReactionButton_Example-frameworks.sh */,
166 | 3283995A80FCDC53AA21EA7B57C06EBF /* Pods-ReactionButton_Example-Info.plist */,
167 | E8F17DAB918EEB9C05615F951A7939A8 /* Pods-ReactionButton_Example-umbrella.h */,
168 | 397A92D4BFD73E3ED786F5137A184D91 /* Pods-ReactionButton_Example.debug.xcconfig */,
169 | 23F11AEB8DDECBFDED097EFBF6000571 /* Pods-ReactionButton_Example.release.xcconfig */,
170 | );
171 | name = "Pods-ReactionButton_Example";
172 | path = "Target Support Files/Pods-ReactionButton_Example";
173 | sourceTree = "";
174 | };
175 | C0834CEBB1379A84116EF29F93051C60 /* iOS */ = {
176 | isa = PBXGroup;
177 | children = (
178 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */,
179 | );
180 | name = iOS;
181 | sourceTree = "";
182 | };
183 | C36203257002AC8B6821CE1A92CBE0FE /* Pod */ = {
184 | isa = PBXGroup;
185 | children = (
186 | 8F0D9657FA2D47E9A181A87F8D394AEA /* LICENSE */,
187 | 4F59E629289283B603368F07FB6545CB /* ReactionButton.podspec */,
188 | C6A91FEC93556E03CDE296B8C81B829F /* README.md */,
189 | );
190 | name = Pod;
191 | sourceTree = "";
192 | };
193 | CF1408CF629C7361332E53B88F7BD30C = {
194 | isa = PBXGroup;
195 | children = (
196 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
197 | 6E40287BA5B27362BB888DF273FECE83 /* Development Pods */,
198 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */,
199 | E2A8201FAC72E1BF7856990FB3E32A58 /* Products */,
200 | CFA8F1D012EFE01DCA33EEBEE55C59ED /* Targets Support Files */,
201 | );
202 | sourceTree = "";
203 | };
204 | CFA8F1D012EFE01DCA33EEBEE55C59ED /* Targets Support Files */ = {
205 | isa = PBXGroup;
206 | children = (
207 | 901852B1E8772AE959CEC0A0CD05B90B /* Pods-ReactionButton_Example */,
208 | 169DA295921075ED10D6D0B470F7A715 /* Pods-ReactionButton_Tests */,
209 | );
210 | name = "Targets Support Files";
211 | sourceTree = "";
212 | };
213 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = {
214 | isa = PBXGroup;
215 | children = (
216 | C0834CEBB1379A84116EF29F93051C60 /* iOS */,
217 | );
218 | name = Frameworks;
219 | sourceTree = "";
220 | };
221 | DC6BE866CE0395D58803308FE927E3E7 /* ReactionButton */ = {
222 | isa = PBXGroup;
223 | children = (
224 | 081132FF23AC14B72D80EC06FA0040DE /* ReactionButton.swift */,
225 | 8E8C91FBECFD466E2487D30135A1977E /* ReactionButton+protocols.swift */,
226 | 64E6B4CADB733A766553A36E9D1E4972 /* ReactionButtonConfig.swift */,
227 | 5E4CF1FB0B7D86A3FE25D08363340F9A /* Extensions */,
228 | C36203257002AC8B6821CE1A92CBE0FE /* Pod */,
229 | F1DE4631E2107D048AAC2C3E2719A683 /* Support Files */,
230 | );
231 | name = ReactionButton;
232 | path = ../..;
233 | sourceTree = "";
234 | };
235 | E2A8201FAC72E1BF7856990FB3E32A58 /* Products */ = {
236 | isa = PBXGroup;
237 | children = (
238 | 8D1ACAD95B13DFE6B645C23F70611EF0 /* Pods_ReactionButton_Example.framework */,
239 | 66519E80B48EA0A8B21331486D2970A2 /* Pods_ReactionButton_Tests.framework */,
240 | 6DD500BD48C3A95EBEB73F3B0AC8B19A /* ReactionButton.framework */,
241 | );
242 | name = Products;
243 | sourceTree = "";
244 | };
245 | F1DE4631E2107D048AAC2C3E2719A683 /* Support Files */ = {
246 | isa = PBXGroup;
247 | children = (
248 | C0790C2C73215E3C9AE8F49040B61224 /* ReactionButton.modulemap */,
249 | F466A30AB3AA956307FF7838D45C5EC6 /* ReactionButton.xcconfig */,
250 | E4B61CDF9032C235FC37180845A68333 /* ReactionButton-dummy.m */,
251 | 550E6616961A8B94990F7221D0D5F973 /* ReactionButton-Info.plist */,
252 | 87590F7772DA23CC2148BBDA0FA46196 /* ReactionButton-prefix.pch */,
253 | 6E768FF67DD737AD53C01159C6658849 /* ReactionButton-umbrella.h */,
254 | );
255 | name = "Support Files";
256 | path = "Example/Pods/Target Support Files/ReactionButton";
257 | sourceTree = "";
258 | };
259 | /* End PBXGroup section */
260 |
261 | /* Begin PBXHeadersBuildPhase section */
262 | 42ED1C69631C0E93CFAE41F248C6A3F3 /* Headers */ = {
263 | isa = PBXHeadersBuildPhase;
264 | buildActionMask = 2147483647;
265 | files = (
266 | 170F6CA354E56309407BA844717E0B5A /* Pods-ReactionButton_Example-umbrella.h in Headers */,
267 | );
268 | runOnlyForDeploymentPostprocessing = 0;
269 | };
270 | C4EACE777BCCBEB6CC4A88455F237F89 /* Headers */ = {
271 | isa = PBXHeadersBuildPhase;
272 | buildActionMask = 2147483647;
273 | files = (
274 | 4D030FA677AFEE2D2F18CF57C93EAF98 /* ReactionButton-umbrella.h in Headers */,
275 | );
276 | runOnlyForDeploymentPostprocessing = 0;
277 | };
278 | F175F2F087F375B5E994C6C2736C856D /* Headers */ = {
279 | isa = PBXHeadersBuildPhase;
280 | buildActionMask = 2147483647;
281 | files = (
282 | B3A881704A623E4BAF3D7D616DEDC1B3 /* Pods-ReactionButton_Tests-umbrella.h in Headers */,
283 | );
284 | runOnlyForDeploymentPostprocessing = 0;
285 | };
286 | /* End PBXHeadersBuildPhase section */
287 |
288 | /* Begin PBXNativeTarget section */
289 | 12541455ED6C44722C8E828D91681462 /* ReactionButton */ = {
290 | isa = PBXNativeTarget;
291 | buildConfigurationList = 3E6D3C0863798C9B87DBF43919B03B36 /* Build configuration list for PBXNativeTarget "ReactionButton" */;
292 | buildPhases = (
293 | C4EACE777BCCBEB6CC4A88455F237F89 /* Headers */,
294 | 2C53C46A5775D2052238DA28E31C696C /* Sources */,
295 | 9A616DAD916F42586FF836D894BBAD99 /* Frameworks */,
296 | D0DD37D58FE93550346411AE3B5EAE2F /* Resources */,
297 | );
298 | buildRules = (
299 | );
300 | dependencies = (
301 | );
302 | name = ReactionButton;
303 | productName = ReactionButton;
304 | productReference = 6DD500BD48C3A95EBEB73F3B0AC8B19A /* ReactionButton.framework */;
305 | productType = "com.apple.product-type.framework";
306 | };
307 | 568C0B9A9698DAA944ED801676AF201D /* Pods-ReactionButton_Tests */ = {
308 | isa = PBXNativeTarget;
309 | buildConfigurationList = 781EDC52F2536B1B3A5867B3336821FD /* Build configuration list for PBXNativeTarget "Pods-ReactionButton_Tests" */;
310 | buildPhases = (
311 | F175F2F087F375B5E994C6C2736C856D /* Headers */,
312 | A309A4545A4F539BE0F575AF11DC6E4B /* Sources */,
313 | 1579099C2B3EAD3EB107DF4C04113F65 /* Frameworks */,
314 | 89D97059765404987BFF0C8D47E9EA3B /* Resources */,
315 | );
316 | buildRules = (
317 | );
318 | dependencies = (
319 | 5DEB674558CCB04F44C557E37A76EA5E /* PBXTargetDependency */,
320 | );
321 | name = "Pods-ReactionButton_Tests";
322 | productName = "Pods-ReactionButton_Tests";
323 | productReference = 66519E80B48EA0A8B21331486D2970A2 /* Pods_ReactionButton_Tests.framework */;
324 | productType = "com.apple.product-type.framework";
325 | };
326 | C634F85740AAB9094C5EAD7E3D3F729D /* Pods-ReactionButton_Example */ = {
327 | isa = PBXNativeTarget;
328 | buildConfigurationList = 7ABD8B1DC0B7D14FDB168B2DC83D2D29 /* Build configuration list for PBXNativeTarget "Pods-ReactionButton_Example" */;
329 | buildPhases = (
330 | 42ED1C69631C0E93CFAE41F248C6A3F3 /* Headers */,
331 | 373B8778C2A9567A04115AA5857382A9 /* Sources */,
332 | 270A910882AC3586755C073481078882 /* Frameworks */,
333 | BA4005AE9207C6AEAC97AA5CA9AF15E5 /* Resources */,
334 | );
335 | buildRules = (
336 | );
337 | dependencies = (
338 | 463ABDAF9687BFF2622A85914BEA0F96 /* PBXTargetDependency */,
339 | );
340 | name = "Pods-ReactionButton_Example";
341 | productName = "Pods-ReactionButton_Example";
342 | productReference = 8D1ACAD95B13DFE6B645C23F70611EF0 /* Pods_ReactionButton_Example.framework */;
343 | productType = "com.apple.product-type.framework";
344 | };
345 | /* End PBXNativeTarget section */
346 |
347 | /* Begin PBXProject section */
348 | BFDFE7DC352907FC980B868725387E98 /* Project object */ = {
349 | isa = PBXProject;
350 | attributes = {
351 | LastSwiftUpdateCheck = 1100;
352 | LastUpgradeCheck = 1100;
353 | };
354 | buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */;
355 | compatibilityVersion = "Xcode 3.2";
356 | developmentRegion = en;
357 | hasScannedForEncodings = 0;
358 | knownRegions = (
359 | en,
360 | Base,
361 | );
362 | mainGroup = CF1408CF629C7361332E53B88F7BD30C;
363 | productRefGroup = E2A8201FAC72E1BF7856990FB3E32A58 /* Products */;
364 | projectDirPath = "";
365 | projectRoot = "";
366 | targets = (
367 | C634F85740AAB9094C5EAD7E3D3F729D /* Pods-ReactionButton_Example */,
368 | 568C0B9A9698DAA944ED801676AF201D /* Pods-ReactionButton_Tests */,
369 | 12541455ED6C44722C8E828D91681462 /* ReactionButton */,
370 | );
371 | };
372 | /* End PBXProject section */
373 |
374 | /* Begin PBXResourcesBuildPhase section */
375 | 89D97059765404987BFF0C8D47E9EA3B /* Resources */ = {
376 | isa = PBXResourcesBuildPhase;
377 | buildActionMask = 2147483647;
378 | files = (
379 | );
380 | runOnlyForDeploymentPostprocessing = 0;
381 | };
382 | BA4005AE9207C6AEAC97AA5CA9AF15E5 /* Resources */ = {
383 | isa = PBXResourcesBuildPhase;
384 | buildActionMask = 2147483647;
385 | files = (
386 | );
387 | runOnlyForDeploymentPostprocessing = 0;
388 | };
389 | D0DD37D58FE93550346411AE3B5EAE2F /* Resources */ = {
390 | isa = PBXResourcesBuildPhase;
391 | buildActionMask = 2147483647;
392 | files = (
393 | );
394 | runOnlyForDeploymentPostprocessing = 0;
395 | };
396 | /* End PBXResourcesBuildPhase section */
397 |
398 | /* Begin PBXSourcesBuildPhase section */
399 | 2C53C46A5775D2052238DA28E31C696C /* Sources */ = {
400 | isa = PBXSourcesBuildPhase;
401 | buildActionMask = 2147483647;
402 | files = (
403 | 7CFAC2EC8265E7B12943AC5FCDDAAADA /* CGRect+init.swift in Sources */,
404 | 751C47A864246551E7A5D9688B891EE4 /* CGSize+init.swift in Sources */,
405 | 082B08E103A26399977E4FEEE4D02A43 /* EmojiSelectorView.Config+rect.swift in Sources */,
406 | 7C8432391B83AB3104BCE6C8912A4E14 /* ReactionButton+protocols.swift in Sources */,
407 | 1F421860EA1A479BAE2035BCEC1CC5ED /* ReactionButton-dummy.m in Sources */,
408 | 0167EC59425DCB1241A6A32E610AC3AA /* ReactionButton.swift in Sources */,
409 | D515620C6EA8CF7ECB80D1C186EC9BB4 /* ReactionButtonConfig.swift in Sources */,
410 | 2B342ABCA13861F220FCF6BA37CC76FB /* UIColor+Selector.swift in Sources */,
411 | 157ED89F863C3436B6287D6AE97CBC5C /* UIView+animation.swift in Sources */,
412 | 6C7AD3F1372328965A3C3F2A7603FA14 /* UIView+contains.swift in Sources */,
413 | );
414 | runOnlyForDeploymentPostprocessing = 0;
415 | };
416 | 373B8778C2A9567A04115AA5857382A9 /* Sources */ = {
417 | isa = PBXSourcesBuildPhase;
418 | buildActionMask = 2147483647;
419 | files = (
420 | 9B94EE2E346C365A29BD93F95F2B5AB6 /* Pods-ReactionButton_Example-dummy.m in Sources */,
421 | );
422 | runOnlyForDeploymentPostprocessing = 0;
423 | };
424 | A309A4545A4F539BE0F575AF11DC6E4B /* Sources */ = {
425 | isa = PBXSourcesBuildPhase;
426 | buildActionMask = 2147483647;
427 | files = (
428 | 497A4105A7E79EE4175B6549A7FBF55C /* Pods-ReactionButton_Tests-dummy.m in Sources */,
429 | );
430 | runOnlyForDeploymentPostprocessing = 0;
431 | };
432 | /* End PBXSourcesBuildPhase section */
433 |
434 | /* Begin PBXTargetDependency section */
435 | 463ABDAF9687BFF2622A85914BEA0F96 /* PBXTargetDependency */ = {
436 | isa = PBXTargetDependency;
437 | name = ReactionButton;
438 | target = 12541455ED6C44722C8E828D91681462 /* ReactionButton */;
439 | targetProxy = CF2A0F9AF88C3D30B42167A3C03F5EC5 /* PBXContainerItemProxy */;
440 | };
441 | 5DEB674558CCB04F44C557E37A76EA5E /* PBXTargetDependency */ = {
442 | isa = PBXTargetDependency;
443 | name = ReactionButton;
444 | target = 12541455ED6C44722C8E828D91681462 /* ReactionButton */;
445 | targetProxy = 1752E607176C0AC28D875764F4072D92 /* PBXContainerItemProxy */;
446 | };
447 | /* End PBXTargetDependency section */
448 |
449 | /* Begin XCBuildConfiguration section */
450 | 1422B121EAEAEA11307496903FA623C6 /* Release */ = {
451 | isa = XCBuildConfiguration;
452 | buildSettings = {
453 | ALWAYS_SEARCH_USER_PATHS = NO;
454 | CLANG_ANALYZER_NONNULL = YES;
455 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
456 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
457 | CLANG_CXX_LIBRARY = "libc++";
458 | CLANG_ENABLE_MODULES = YES;
459 | CLANG_ENABLE_OBJC_ARC = YES;
460 | CLANG_ENABLE_OBJC_WEAK = YES;
461 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
462 | CLANG_WARN_BOOL_CONVERSION = YES;
463 | CLANG_WARN_COMMA = YES;
464 | CLANG_WARN_CONSTANT_CONVERSION = YES;
465 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
466 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
467 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
468 | CLANG_WARN_EMPTY_BODY = YES;
469 | CLANG_WARN_ENUM_CONVERSION = YES;
470 | CLANG_WARN_INFINITE_RECURSION = YES;
471 | CLANG_WARN_INT_CONVERSION = YES;
472 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
473 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
474 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
475 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
476 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
477 | CLANG_WARN_STRICT_PROTOTYPES = YES;
478 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
479 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
480 | CLANG_WARN_UNREACHABLE_CODE = YES;
481 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
482 | COPY_PHASE_STRIP = NO;
483 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
484 | ENABLE_NS_ASSERTIONS = NO;
485 | ENABLE_STRICT_OBJC_MSGSEND = YES;
486 | GCC_C_LANGUAGE_STANDARD = gnu11;
487 | GCC_NO_COMMON_BLOCKS = YES;
488 | GCC_PREPROCESSOR_DEFINITIONS = (
489 | "POD_CONFIGURATION_RELEASE=1",
490 | "$(inherited)",
491 | );
492 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
493 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
494 | GCC_WARN_UNDECLARED_SELECTOR = YES;
495 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
496 | GCC_WARN_UNUSED_FUNCTION = YES;
497 | GCC_WARN_UNUSED_VARIABLE = YES;
498 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
499 | MTL_ENABLE_DEBUG_INFO = NO;
500 | MTL_FAST_MATH = YES;
501 | PRODUCT_NAME = "$(TARGET_NAME)";
502 | STRIP_INSTALLED_PRODUCT = NO;
503 | SWIFT_COMPILATION_MODE = wholemodule;
504 | SWIFT_OPTIMIZATION_LEVEL = "-O";
505 | SWIFT_VERSION = 5.0;
506 | SYMROOT = "${SRCROOT}/../build";
507 | };
508 | name = Release;
509 | };
510 | 289710AA008F9CFE2A92C95E58F9733B /* Release */ = {
511 | isa = XCBuildConfiguration;
512 | baseConfigurationReference = F466A30AB3AA956307FF7838D45C5EC6 /* ReactionButton.xcconfig */;
513 | buildSettings = {
514 | ARCHS = "$(ARCHS_STANDARD_64_BIT)";
515 | CLANG_ENABLE_OBJC_WEAK = NO;
516 | CODE_SIGN_IDENTITY = "";
517 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
518 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
519 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
520 | CURRENT_PROJECT_VERSION = 1;
521 | DEFINES_MODULE = YES;
522 | DYLIB_COMPATIBILITY_VERSION = 1;
523 | DYLIB_CURRENT_VERSION = 1;
524 | DYLIB_INSTALL_NAME_BASE = "@rpath";
525 | GCC_PREFIX_HEADER = "Target Support Files/ReactionButton/ReactionButton-prefix.pch";
526 | INFOPLIST_FILE = "Target Support Files/ReactionButton/ReactionButton-Info.plist";
527 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
528 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
529 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
530 | MODULEMAP_FILE = "Target Support Files/ReactionButton/ReactionButton.modulemap";
531 | PRODUCT_MODULE_NAME = ReactionButton;
532 | PRODUCT_NAME = ReactionButton;
533 | SDKROOT = iphoneos;
534 | SKIP_INSTALL = YES;
535 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
536 | TARGETED_DEVICE_FAMILY = "1,2";
537 | VALIDATE_PRODUCT = YES;
538 | VERSIONING_SYSTEM = "apple-generic";
539 | VERSION_INFO_PREFIX = "";
540 | };
541 | name = Release;
542 | };
543 | 3C9C3F7EC698A07862AE34496864C78D /* Debug */ = {
544 | isa = XCBuildConfiguration;
545 | baseConfigurationReference = F466A30AB3AA956307FF7838D45C5EC6 /* ReactionButton.xcconfig */;
546 | buildSettings = {
547 | ARCHS = "$(ARCHS_STANDARD_64_BIT)";
548 | CLANG_ENABLE_OBJC_WEAK = NO;
549 | CODE_SIGN_IDENTITY = "";
550 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
551 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
552 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
553 | CURRENT_PROJECT_VERSION = 1;
554 | DEFINES_MODULE = YES;
555 | DYLIB_COMPATIBILITY_VERSION = 1;
556 | DYLIB_CURRENT_VERSION = 1;
557 | DYLIB_INSTALL_NAME_BASE = "@rpath";
558 | GCC_PREFIX_HEADER = "Target Support Files/ReactionButton/ReactionButton-prefix.pch";
559 | INFOPLIST_FILE = "Target Support Files/ReactionButton/ReactionButton-Info.plist";
560 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
561 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
562 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
563 | MODULEMAP_FILE = "Target Support Files/ReactionButton/ReactionButton.modulemap";
564 | PRODUCT_MODULE_NAME = ReactionButton;
565 | PRODUCT_NAME = ReactionButton;
566 | SDKROOT = iphoneos;
567 | SKIP_INSTALL = YES;
568 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
569 | TARGETED_DEVICE_FAMILY = "1,2";
570 | VERSIONING_SYSTEM = "apple-generic";
571 | VERSION_INFO_PREFIX = "";
572 | };
573 | name = Debug;
574 | };
575 | 725790F14ABC8CF3AEC73BC34003DAAB /* Release */ = {
576 | isa = XCBuildConfiguration;
577 | baseConfigurationReference = 23F11AEB8DDECBFDED097EFBF6000571 /* Pods-ReactionButton_Example.release.xcconfig */;
578 | buildSettings = {
579 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
580 | ARCHS = "$(ARCHS_STANDARD_64_BIT)";
581 | CLANG_ENABLE_OBJC_WEAK = NO;
582 | CODE_SIGN_IDENTITY = "";
583 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
584 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
585 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
586 | CURRENT_PROJECT_VERSION = 1;
587 | DEFINES_MODULE = YES;
588 | DYLIB_COMPATIBILITY_VERSION = 1;
589 | DYLIB_CURRENT_VERSION = 1;
590 | DYLIB_INSTALL_NAME_BASE = "@rpath";
591 | INFOPLIST_FILE = "Target Support Files/Pods-ReactionButton_Example/Pods-ReactionButton_Example-Info.plist";
592 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
593 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
594 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
595 | MACH_O_TYPE = staticlib;
596 | MODULEMAP_FILE = "Target Support Files/Pods-ReactionButton_Example/Pods-ReactionButton_Example.modulemap";
597 | OTHER_LDFLAGS = "";
598 | OTHER_LIBTOOLFLAGS = "";
599 | PODS_ROOT = "$(SRCROOT)";
600 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
601 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
602 | SDKROOT = iphoneos;
603 | SKIP_INSTALL = YES;
604 | TARGETED_DEVICE_FAMILY = "1,2";
605 | VALIDATE_PRODUCT = YES;
606 | VERSIONING_SYSTEM = "apple-generic";
607 | VERSION_INFO_PREFIX = "";
608 | };
609 | name = Release;
610 | };
611 | 7DC0DC8342F203113C013564F795BE55 /* Debug */ = {
612 | isa = XCBuildConfiguration;
613 | baseConfigurationReference = A5E6EEC3E04F0B8B3A5AAC60F7DAB28B /* Pods-ReactionButton_Tests.debug.xcconfig */;
614 | buildSettings = {
615 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
616 | ARCHS = "$(ARCHS_STANDARD_64_BIT)";
617 | CLANG_ENABLE_OBJC_WEAK = NO;
618 | CODE_SIGN_IDENTITY = "";
619 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
620 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
621 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
622 | CURRENT_PROJECT_VERSION = 1;
623 | DEFINES_MODULE = YES;
624 | DYLIB_COMPATIBILITY_VERSION = 1;
625 | DYLIB_CURRENT_VERSION = 1;
626 | DYLIB_INSTALL_NAME_BASE = "@rpath";
627 | INFOPLIST_FILE = "Target Support Files/Pods-ReactionButton_Tests/Pods-ReactionButton_Tests-Info.plist";
628 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
629 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
630 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
631 | MACH_O_TYPE = staticlib;
632 | MODULEMAP_FILE = "Target Support Files/Pods-ReactionButton_Tests/Pods-ReactionButton_Tests.modulemap";
633 | OTHER_LDFLAGS = "";
634 | OTHER_LIBTOOLFLAGS = "";
635 | PODS_ROOT = "$(SRCROOT)";
636 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
637 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
638 | SDKROOT = iphoneos;
639 | SKIP_INSTALL = YES;
640 | TARGETED_DEVICE_FAMILY = "1,2";
641 | VERSIONING_SYSTEM = "apple-generic";
642 | VERSION_INFO_PREFIX = "";
643 | };
644 | name = Debug;
645 | };
646 | BFC56ACDC7044690941DAF31027BE3C6 /* Debug */ = {
647 | isa = XCBuildConfiguration;
648 | baseConfigurationReference = 397A92D4BFD73E3ED786F5137A184D91 /* Pods-ReactionButton_Example.debug.xcconfig */;
649 | buildSettings = {
650 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
651 | ARCHS = "$(ARCHS_STANDARD_64_BIT)";
652 | CLANG_ENABLE_OBJC_WEAK = NO;
653 | CODE_SIGN_IDENTITY = "";
654 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
655 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
656 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
657 | CURRENT_PROJECT_VERSION = 1;
658 | DEFINES_MODULE = YES;
659 | DYLIB_COMPATIBILITY_VERSION = 1;
660 | DYLIB_CURRENT_VERSION = 1;
661 | DYLIB_INSTALL_NAME_BASE = "@rpath";
662 | INFOPLIST_FILE = "Target Support Files/Pods-ReactionButton_Example/Pods-ReactionButton_Example-Info.plist";
663 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
664 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
665 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
666 | MACH_O_TYPE = staticlib;
667 | MODULEMAP_FILE = "Target Support Files/Pods-ReactionButton_Example/Pods-ReactionButton_Example.modulemap";
668 | OTHER_LDFLAGS = "";
669 | OTHER_LIBTOOLFLAGS = "";
670 | PODS_ROOT = "$(SRCROOT)";
671 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
672 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
673 | SDKROOT = iphoneos;
674 | SKIP_INSTALL = YES;
675 | TARGETED_DEVICE_FAMILY = "1,2";
676 | VERSIONING_SYSTEM = "apple-generic";
677 | VERSION_INFO_PREFIX = "";
678 | };
679 | name = Debug;
680 | };
681 | E7905B0AF2F9EB643BBA39597BF780B9 /* Release */ = {
682 | isa = XCBuildConfiguration;
683 | baseConfigurationReference = 347AA17A84FE471B591F69B3A097F11D /* Pods-ReactionButton_Tests.release.xcconfig */;
684 | buildSettings = {
685 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
686 | ARCHS = "$(ARCHS_STANDARD_64_BIT)";
687 | CLANG_ENABLE_OBJC_WEAK = NO;
688 | CODE_SIGN_IDENTITY = "";
689 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
690 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
691 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
692 | CURRENT_PROJECT_VERSION = 1;
693 | DEFINES_MODULE = YES;
694 | DYLIB_COMPATIBILITY_VERSION = 1;
695 | DYLIB_CURRENT_VERSION = 1;
696 | DYLIB_INSTALL_NAME_BASE = "@rpath";
697 | INFOPLIST_FILE = "Target Support Files/Pods-ReactionButton_Tests/Pods-ReactionButton_Tests-Info.plist";
698 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
699 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
700 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
701 | MACH_O_TYPE = staticlib;
702 | MODULEMAP_FILE = "Target Support Files/Pods-ReactionButton_Tests/Pods-ReactionButton_Tests.modulemap";
703 | OTHER_LDFLAGS = "";
704 | OTHER_LIBTOOLFLAGS = "";
705 | PODS_ROOT = "$(SRCROOT)";
706 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
707 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
708 | SDKROOT = iphoneos;
709 | SKIP_INSTALL = YES;
710 | TARGETED_DEVICE_FAMILY = "1,2";
711 | VALIDATE_PRODUCT = YES;
712 | VERSIONING_SYSTEM = "apple-generic";
713 | VERSION_INFO_PREFIX = "";
714 | };
715 | name = Release;
716 | };
717 | ED7888FA6713EABBF66D26A8003AD1CA /* Debug */ = {
718 | isa = XCBuildConfiguration;
719 | buildSettings = {
720 | ALWAYS_SEARCH_USER_PATHS = NO;
721 | CLANG_ANALYZER_NONNULL = YES;
722 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
723 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
724 | CLANG_CXX_LIBRARY = "libc++";
725 | CLANG_ENABLE_MODULES = YES;
726 | CLANG_ENABLE_OBJC_ARC = YES;
727 | CLANG_ENABLE_OBJC_WEAK = YES;
728 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
729 | CLANG_WARN_BOOL_CONVERSION = YES;
730 | CLANG_WARN_COMMA = YES;
731 | CLANG_WARN_CONSTANT_CONVERSION = YES;
732 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
733 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
734 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
735 | CLANG_WARN_EMPTY_BODY = YES;
736 | CLANG_WARN_ENUM_CONVERSION = YES;
737 | CLANG_WARN_INFINITE_RECURSION = YES;
738 | CLANG_WARN_INT_CONVERSION = YES;
739 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
740 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
741 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
742 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
743 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
744 | CLANG_WARN_STRICT_PROTOTYPES = YES;
745 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
746 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
747 | CLANG_WARN_UNREACHABLE_CODE = YES;
748 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
749 | COPY_PHASE_STRIP = NO;
750 | DEBUG_INFORMATION_FORMAT = dwarf;
751 | ENABLE_STRICT_OBJC_MSGSEND = YES;
752 | ENABLE_TESTABILITY = YES;
753 | GCC_C_LANGUAGE_STANDARD = gnu11;
754 | GCC_DYNAMIC_NO_PIC = NO;
755 | GCC_NO_COMMON_BLOCKS = YES;
756 | GCC_OPTIMIZATION_LEVEL = 0;
757 | GCC_PREPROCESSOR_DEFINITIONS = (
758 | "POD_CONFIGURATION_DEBUG=1",
759 | "DEBUG=1",
760 | "$(inherited)",
761 | );
762 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
763 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
764 | GCC_WARN_UNDECLARED_SELECTOR = YES;
765 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
766 | GCC_WARN_UNUSED_FUNCTION = YES;
767 | GCC_WARN_UNUSED_VARIABLE = YES;
768 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
769 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
770 | MTL_FAST_MATH = YES;
771 | ONLY_ACTIVE_ARCH = YES;
772 | PRODUCT_NAME = "$(TARGET_NAME)";
773 | STRIP_INSTALLED_PRODUCT = NO;
774 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
775 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
776 | SWIFT_VERSION = 5.0;
777 | SYMROOT = "${SRCROOT}/../build";
778 | };
779 | name = Debug;
780 | };
781 | /* End XCBuildConfiguration section */
782 |
783 | /* Begin XCConfigurationList section */
784 | 3E6D3C0863798C9B87DBF43919B03B36 /* Build configuration list for PBXNativeTarget "ReactionButton" */ = {
785 | isa = XCConfigurationList;
786 | buildConfigurations = (
787 | 3C9C3F7EC698A07862AE34496864C78D /* Debug */,
788 | 289710AA008F9CFE2A92C95E58F9733B /* Release */,
789 | );
790 | defaultConfigurationIsVisible = 0;
791 | defaultConfigurationName = Release;
792 | };
793 | 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = {
794 | isa = XCConfigurationList;
795 | buildConfigurations = (
796 | ED7888FA6713EABBF66D26A8003AD1CA /* Debug */,
797 | 1422B121EAEAEA11307496903FA623C6 /* Release */,
798 | );
799 | defaultConfigurationIsVisible = 0;
800 | defaultConfigurationName = Release;
801 | };
802 | 781EDC52F2536B1B3A5867B3336821FD /* Build configuration list for PBXNativeTarget "Pods-ReactionButton_Tests" */ = {
803 | isa = XCConfigurationList;
804 | buildConfigurations = (
805 | 7DC0DC8342F203113C013564F795BE55 /* Debug */,
806 | E7905B0AF2F9EB643BBA39597BF780B9 /* Release */,
807 | );
808 | defaultConfigurationIsVisible = 0;
809 | defaultConfigurationName = Release;
810 | };
811 | 7ABD8B1DC0B7D14FDB168B2DC83D2D29 /* Build configuration list for PBXNativeTarget "Pods-ReactionButton_Example" */ = {
812 | isa = XCConfigurationList;
813 | buildConfigurations = (
814 | BFC56ACDC7044690941DAF31027BE3C6 /* Debug */,
815 | 725790F14ABC8CF3AEC73BC34003DAAB /* Release */,
816 | );
817 | defaultConfigurationIsVisible = 0;
818 | defaultConfigurationName = Release;
819 | };
820 | /* End XCConfigurationList section */
821 | };
822 | rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */;
823 | }
824 |
--------------------------------------------------------------------------------