Skip to content

Commit b69d71a

Browse files
author
Shahen Hovhannisyan
authored
feat(Trimmer): Added ability to change thumbs width
Update to allow thumbWidth prop
2 parents 84471c6 + b911ceb commit b69d71a

3 files changed

Lines changed: 41 additions & 21 deletions

File tree

ios/RNVideoProcessing/RNTrimmerView/RNTrimmerView.swift

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import AVKit
88

99
@objc(RNTrimmerView)
1010
class RNTrimmerView: RCTView, ICGVideoTrimmerDelegate {
11-
11+
1212
var trimmerView: ICGVideoTrimmerView?
1313
var asset: AVAsset!
1414
var rect: CGRect = CGRect.zero
@@ -18,18 +18,19 @@ class RNTrimmerView: RCTView, ICGVideoTrimmerDelegate {
1818
var onTrackerMove: RCTBubblingEventBlock?
1919
var _minLength: CGFloat? = nil
2020
var _maxLength: CGFloat? = nil
21+
var _thumbWidth: CGFloat? = nil
2122
var _trackerColor: UIColor = UIColor.clear
22-
23+
2324
var source: NSString? {
2425
set {
2526
setSource(source: newValue)
2627
}
2728
get {
28-
29+
2930
return nil
3031
}
3132
}
32-
33+
3334
var height: NSNumber? {
3435
set {
3536
self.rect.size.height = RCTConvert.cgFloat(newValue)
@@ -39,7 +40,7 @@ class RNTrimmerView: RCTView, ICGVideoTrimmerDelegate {
3940
return nil
4041
}
4142
}
42-
43+
4344
var width: NSNumber? {
4445
set {
4546
self.rect.size.width = RCTConvert.cgFloat(newValue)
@@ -49,7 +50,7 @@ class RNTrimmerView: RCTView, ICGVideoTrimmerDelegate {
4950
return nil
5051
}
5152
}
52-
53+
5354
var themeColor: NSString? {
5455
set {
5556
if newValue != nil {
@@ -62,7 +63,7 @@ class RNTrimmerView: RCTView, ICGVideoTrimmerDelegate {
6263
return nil
6364
}
6465
}
65-
66+
6667
var maxLength: NSNumber? {
6768
set {
6869
if newValue != nil {
@@ -74,7 +75,7 @@ class RNTrimmerView: RCTView, ICGVideoTrimmerDelegate {
7475
return nil
7576
}
7677
}
77-
78+
7879
var minLength: NSNumber? {
7980
set {
8081
if newValue != nil {
@@ -86,7 +87,19 @@ class RNTrimmerView: RCTView, ICGVideoTrimmerDelegate {
8687
return nil
8788
}
8889
}
89-
90+
91+
var thumbWidth: NSNumber? {
92+
set {
93+
if newValue != nil {
94+
self._thumbWidth = RCTConvert.cgFloat(newValue!)
95+
self.updateView()
96+
}
97+
}
98+
get {
99+
return nil
100+
}
101+
}
102+
90103
var currentTime: NSNumber? {
91104
set {
92105
print("CHANGED: [TrimmerView]: currentTime: \(newValue)")
@@ -100,7 +113,7 @@ class RNTrimmerView: RCTView, ICGVideoTrimmerDelegate {
100113
return nil
101114
}
102115
}
103-
116+
104117
var trackerColor: NSString? {
105118
set {
106119
if newValue == nil {
@@ -120,7 +133,7 @@ class RNTrimmerView: RCTView, ICGVideoTrimmerDelegate {
120133
return nil
121134
}
122135
}
123-
136+
124137
func updateView() {
125138
self.frame = rect
126139
if trimmerView != nil {
@@ -131,20 +144,23 @@ class RNTrimmerView: RCTView, ICGVideoTrimmerDelegate {
131144
if _minLength != nil {
132145
trimmerView!.minLength = _minLength!
133146
}
147+
if _thumbWidth != nil {
148+
trimmerView!.thumbWidth = _thumbWidth!
149+
}
134150
self.trimmerView!.resetSubviews()
135151
// Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(self.updateTrimmer), userInfo: nil, repeats: false)
136152
}
137153
}
138-
154+
139155
func updateTrimmer() {
140156
self.trimmerView!.resetSubviews()
141157
}
142-
158+
143159
func setSource(source: NSString?) {
144160
if source != nil {
145161
let pathToSource = NSURL(string: source! as String)
146162
self.asset = AVURLAsset(url: pathToSource as! URL, options: nil)
147-
163+
148164
trimmerView = ICGVideoTrimmerView(frame: rect, asset: self.asset)
149165
trimmerView!.showsRulerView = false
150166
trimmerView!.hideTracker(false)
@@ -154,27 +170,27 @@ class RNTrimmerView: RCTView, ICGVideoTrimmerDelegate {
154170
self.updateView()
155171
}
156172
}
157-
173+
158174
init(frame: CGRect, bridge: RCTBridge) {
159175
super.init(frame: frame)
160176
self.bridge = bridge
161177
}
162-
178+
163179
required init?(coder aDecoder: NSCoder) {
164180
fatalError("init(coder:) has not been implemented")
165181
}
166-
182+
167183
func onTrimmerPositionChange(startTime: CGFloat, endTime: CGFloat) {
168184
if self.onChange != nil {
169185
let event = ["startTime": startTime, "endTime": endTime]
170186
self.onChange!(event)
171187
}
172188
}
173-
189+
174190
func trimmerView(_ trimmerView: ICGVideoTrimmerView, didChangeLeftPosition startTime: CGFloat, rightPosition endTime: CGFloat) {
175191
onTrimmerPositionChange(startTime: startTime, endTime: endTime)
176192
}
177-
193+
178194
public func trimmerView(_ trimmerView: ICGVideoTrimmerView, currentPosition currentTime: CGFloat) {
179195
print("current", currentTime)
180196
if onTrackerMove == nil {

ios/RNVideoProcessing/RNTrimmerView/RNTrimmerViewBridge.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@ @interface RCT_EXTERN_MODULE(RNTrimmerViewManager, RCTViewManager)
2020
RCT_EXPORT_VIEW_PROPERTY(maxLength, NSNumber)
2121
RCT_EXPORT_VIEW_PROPERTY(currentTime, NSNumber)
2222
RCT_EXPORT_VIEW_PROPERTY(trackerColor, NSString)
23+
RCT_EXPORT_VIEW_PROPERTY(thumbWidth, NSNumber)
2324

2425
@end

lib/Trimmer/Trimmer.ios.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ export class Trimmer extends Component {
1414
minLength: PropTypes.number,
1515
maxLength: PropTypes.number,
1616
currentTime: PropTypes.number,
17-
trackerColor: PropTypes.string
17+
trackerColor: PropTypes.string,
18+
thumbWidth: PropTypes.number
1819
};
1920

2021
static defaultProps = {
@@ -53,7 +54,8 @@ export class Trimmer extends Component {
5354
minLength,
5455
maxLength,
5556
currentTime,
56-
trackerColor
57+
trackerColor,
58+
thumbWidth,
5759
} = this.props;
5860
const actualSource = getActualSource(source);
5961
return (
@@ -69,6 +71,7 @@ export class Trimmer extends Component {
6971
onChange={this._onChange}
7072
minLength={minLength}
7173
maxLength={maxLength}
74+
thumbWidth={thumbWidth}
7275
/>
7376
);
7477
}

0 commit comments

Comments
 (0)