+27
-8
modules/expo-receive-android-intents/android/src/main/java/xyz/blueskyweb/app/exporeceiveandroidintents/ExpoReceiveAndroidIntentsModule.kt
+27
-8
modules/expo-receive-android-intents/android/src/main/java/xyz/blueskyweb/app/exporeceiveandroidintents/ExpoReceiveAndroidIntentsModule.kt
···
78
78
intent.getParcelableExtra(Intent.EXTRA_STREAM)
79
79
}
80
80
81
+
val text = intent.getStringExtra(Intent.EXTRA_TEXT)
82
+
81
83
uri?.let {
82
84
when (type) {
83
-
AttachmentType.IMAGE -> handleImageIntents(listOf(it))
84
-
AttachmentType.VIDEO -> handleVideoIntents(listOf(it))
85
+
AttachmentType.IMAGE -> handleImageIntents(listOf(it), text)
86
+
AttachmentType.VIDEO -> handleVideoIntents(listOf(it), text)
85
87
}
86
88
}
87
89
}
···
103
105
?.take(4)
104
106
}
105
107
108
+
val text = intent.getStringExtra(Intent.EXTRA_TEXT)
109
+
106
110
uris?.let {
107
111
when (type) {
108
-
AttachmentType.IMAGE -> handleImageIntents(it)
112
+
AttachmentType.IMAGE -> handleImageIntents(it, text)
109
113
else -> return
110
114
}
111
115
}
112
116
}
113
117
114
-
private fun handleImageIntents(uris: List<Uri>) {
118
+
private fun handleImageIntents(
119
+
uris: List<Uri>,
120
+
text: String?
121
+
) {
115
122
var allParams = ""
116
123
117
124
uris.forEachIndexed { index, uri ->
···
124
131
}
125
132
}
126
133
127
-
val encoded = URLEncoder.encode(allParams, "UTF-8")
134
+
val encodedUris = URLEncoder.encode(allParams, "UTF-8")
135
+
val encodedText = text?.let { URLEncoder.encode(it, "UTF-8") }
136
+
137
+
var composeIntent = "bluesky://intent/compose?imageUris=$encodedUris"
138
+
encodedText?.let { composeIntent += "&text=$it" }
128
139
129
-
"bluesky://intent/compose?imageUris=$encoded".toUri().let {
140
+
composeIntent.toUri().let {
130
141
val newIntent = Intent(Intent.ACTION_VIEW, it)
131
142
appContext.currentActivity?.startActivity(newIntent)
132
143
}
133
144
}
134
145
135
-
private fun handleVideoIntents(uris: List<Uri>) {
146
+
private fun handleVideoIntents(
147
+
uris: List<Uri>,
148
+
text: String?
149
+
) {
136
150
val uri = uris[0]
137
151
// If there is no extension for the file, substringAfterLast returns the original string - not
138
152
// null, so we check for that below
···
151
165
152
166
val info = getVideoInfo(uri) ?: return
153
167
154
-
"bluesky://intent/compose?videoUri=${URLEncoder.encode(file.path, "UTF-8")}|${info["width"]}|${info["height"]}".toUri().let {
168
+
val encodedText = text?.let { URLEncoder.encode(it, "UTF-8") }
169
+
170
+
var composeIntent = "bluesky://intent/compose?videoUri=${URLEncoder.encode(file.path, "UTF-8")}|${info["width"]}|${info["height"]}"
171
+
encodedText?.let { composeIntent += "&text=$it" }
172
+
173
+
composeIntent.toUri().let {
155
174
val newIntent = Intent(Intent.ACTION_VIEW, it)
156
175
appContext.currentActivity?.startActivity(newIntent)
157
176
}
+2
-2
package.json
+2
-2
package.json
···
1
1
{
2
2
"name": "social.daniela.lol",
3
-
"version": "1.110.1",
3
+
"version": "1.111.0",
4
4
"private": true,
5
5
"engines": {
6
6
"node": ">=18"
···
176
176
"multiformats": "9.9.0",
177
177
"nanoid": "^5.0.5",
178
178
"normalize-url": "^8.0.0",
179
-
"patch-package": "^6.5.1",
179
+
"patch-package": "^8.0.1",
180
180
"postinstall-postinstall": "^2.1.0",
181
181
"psl": "^1.9.0",
182
182
"radix-ui": "^1.4.3",
+71
patches/react-native+0.81.5+001+initial.patch
+71
patches/react-native+0.81.5+001+initial.patch
···
1
+
diff --git a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
2
+
index e9b330f..5fbb2e0 100644
3
+
--- a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
4
+
+++ b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
5
+
@@ -15,5 +15,6 @@
6
+
@property (nonatomic, copy) NSString *title;
7
+
@property (nonatomic, copy) RCTDirectEventBlock onRefresh;
8
+
@property (nonatomic, weak) UIScrollView *scrollView;
9
+
+@property (nonatomic, copy) UIColor *customTintColor;
10
+
11
+
@end
12
+
diff --git a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m
13
+
index 53bfd04..e2e0c9f 100644
14
+
--- a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m
15
+
+++ b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m
16
+
@@ -23,6 +23,7 @@ @implementation RCTRefreshControl {
17
+
UIColor *_titleColor;
18
+
CGFloat _progressViewOffset;
19
+
BOOL _hasMovedToWindow;
20
+
+ UIColor *_customTintColor;
21
+
}
22
+
23
+
- (instancetype)init
24
+
@@ -58,6 +59,12 @@ - (void)layoutSubviews
25
+
_isInitialRender = false;
26
+
}
27
+
28
+
+- (void)didMoveToSuperview
29
+
+{
30
+
+ [super didMoveToSuperview];
31
+
+ [self setTintColor:_customTintColor];
32
+
+}
33
+
+
34
+
- (void)didMoveToWindow
35
+
{
36
+
[super didMoveToWindow];
37
+
@@ -221,4 +228,16 @@ - (void)refreshControlValueChanged
38
+
}
39
+
}
40
+
41
+
+// Fix for https://github.com/facebook/react-native/issues/43388
42
+
+// A bug in iOS 17.4 causes the haptic to not play when refreshing if the tintColor
43
+
+// is set before the refresh control gets added to the scrollview. We'll call this
44
+
+// function whenever the superview changes. We'll also call it if the value of customTintColor
45
+
+// changes.
46
+
+- (void)setTintColor:(UIColor *)tintColor
47
+
+{
48
+
+ if ([self.superview isKindOfClass:[UIScrollView class]] && self.tintColor != tintColor) {
49
+
+ [super setTintColor:tintColor];
50
+
+ }
51
+
+}
52
+
+
53
+
@end
54
+
diff --git a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControlManager.m b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControlManager.m
55
+
index 40aaf9c..1c60164 100644
56
+
--- a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControlManager.m
57
+
+++ b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControlManager.m
58
+
@@ -22,11 +22,12 @@ - (UIView *)view
59
+
60
+
RCT_EXPORT_VIEW_PROPERTY(onRefresh, RCTDirectEventBlock)
61
+
RCT_EXPORT_VIEW_PROPERTY(refreshing, BOOL)
62
+
-RCT_EXPORT_VIEW_PROPERTY(tintColor, UIColor)
63
+
RCT_EXPORT_VIEW_PROPERTY(title, NSString)
64
+
RCT_EXPORT_VIEW_PROPERTY(titleColor, UIColor)
65
+
RCT_EXPORT_VIEW_PROPERTY(progressViewOffset, CGFloat)
66
+
67
+
+RCT_REMAP_VIEW_PROPERTY(tintColor, customTintColor, UIColor)
68
+
+
69
+
RCT_EXPORT_METHOD(setNativeRefreshing : (nonnull NSNumber *)viewTag toRefreshing : (BOOL)refreshing)
70
+
{
71
+
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
+67
patches/react-native+0.81.5+002+ScrollForwarder.patch
+67
patches/react-native+0.81.5+002+ScrollForwarder.patch
···
1
+
diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.h b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.h
2
+
index 914a249..0deac55 100644
3
+
--- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.h
4
+
+++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.h
5
+
@@ -19,6 +19,8 @@ NS_ASSUME_NONNULL_BEGIN
6
+
*/
7
+
@interface RCTPullToRefreshViewComponentView : RCTViewComponentView <RCTCustomPullToRefreshViewProtocol>
8
+
9
+
+- (void)beginRefreshingProgrammatically;
10
+
+
11
+
@end
12
+
13
+
NS_ASSUME_NONNULL_END
14
+
diff --git a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
15
+
index 5fbb2e0..ec5f58c 100644
16
+
--- a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
17
+
+++ b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
18
+
@@ -17,4 +17,6 @@
19
+
@property (nonatomic, weak) UIScrollView *scrollView;
20
+
@property (nonatomic, copy) UIColor *customTintColor;
21
+
22
+
+- (void)forwarderBeginRefreshing;
23
+
+
24
+
@end
25
+
diff --git a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m
26
+
index e2e0c9f..ff1b1ed 100644
27
+
--- a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m
28
+
+++ b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m
29
+
@@ -240,4 +240,38 @@ - (void)setTintColor:(UIColor *)tintColor
30
+
}
31
+
}
32
+
33
+
+// This method is used by Bluesky's ExpoScrollForwarder. This allows other React Native
34
+
+// libraries to perform a refresh of a scrollview and access the refresh control's onRefresh
35
+
+// function.
36
+
+- (void)forwarderBeginRefreshing
37
+
+{
38
+
+ _refreshingProgrammatically = NO;
39
+
+
40
+
+ [self sizeToFit];
41
+
+
42
+
+ if (!self.scrollView) {
43
+
+ return;
44
+
+ }
45
+
+
46
+
+ UIScrollView *scrollView = (UIScrollView *)self.scrollView;
47
+
+
48
+
+ [UIView animateWithDuration:0.3
49
+
+ delay:0
50
+
+ options:UIViewAnimationOptionBeginFromCurrentState
51
+
+ animations:^(void) {
52
+
+ // Whenever we call this method, the scrollview will always be at a position of
53
+
+ // -130 or less. Scrolling back to -65 simulates the default behavior of RCTRefreshControl
54
+
+ [scrollView setContentOffset:CGPointMake(0, -65)];
55
+
+ }
56
+
+ completion:^(__unused BOOL finished) {
57
+
+ [super beginRefreshing];
58
+
+ [self setCurrentRefreshingState:super.refreshing];
59
+
+
60
+
+ if (self->_onRefresh) {
61
+
+ self->_onRefresh(nil);
62
+
+ }
63
+
+ }
64
+
+ ];
65
+
+}
66
+
+
67
+
@end
+16
patches/react-native+0.81.5+003+ScrollView-disable-recycling.patch
+16
patches/react-native+0.81.5+003+ScrollView-disable-recycling.patch
···
1
+
diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm
2
+
index d029337..0f63ea3 100644
3
+
--- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm
4
+
+++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm
5
+
@@ -1038,6 +1038,11 @@ - (void)_adjustForMaintainVisibleContentPosition
6
+
}
7
+
}
8
+
9
+
++ (BOOL)shouldBeRecycled
10
+
+{
11
+
+ return NO;
12
+
+}
13
+
+
14
+
@end
15
+
16
+
Class<RCTComponentViewProtocol> RCTScrollViewCls(void)
-136
patches/react-native+0.81.5.patch
-136
patches/react-native+0.81.5.patch
···
1
-
diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.h b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.h
2
-
index 914a249..0deac55 100644
3
-
--- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.h
4
-
+++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTPullToRefreshViewComponentView.h
5
-
@@ -19,6 +19,8 @@ NS_ASSUME_NONNULL_BEGIN
6
-
*/
7
-
@interface RCTPullToRefreshViewComponentView : RCTViewComponentView <RCTCustomPullToRefreshViewProtocol>
8
-
9
-
+- (void)beginRefreshingProgrammatically;
10
-
+
11
-
@end
12
-
13
-
NS_ASSUME_NONNULL_END
14
-
diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm
15
-
index d029337..0f63ea3 100644
16
-
--- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm
17
-
+++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm
18
-
@@ -1038,6 +1038,11 @@ - (void)_adjustForMaintainVisibleContentPosition
19
-
}
20
-
}
21
-
22
-
++ (BOOL)shouldBeRecycled
23
-
+{
24
-
+ return NO;
25
-
+}
26
-
+
27
-
@end
28
-
29
-
Class<RCTComponentViewProtocol> RCTScrollViewCls(void)
30
-
diff --git a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
31
-
index e9b330f..ec5f58c 100644
32
-
--- a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
33
-
+++ b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
34
-
@@ -15,5 +15,8 @@
35
-
@property (nonatomic, copy) NSString *title;
36
-
@property (nonatomic, copy) RCTDirectEventBlock onRefresh;
37
-
@property (nonatomic, weak) UIScrollView *scrollView;
38
-
+@property (nonatomic, copy) UIColor *customTintColor;
39
-
+
40
-
+- (void)forwarderBeginRefreshing;
41
-
42
-
@end
43
-
diff --git a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m
44
-
index 53bfd04..ff1b1ed 100644
45
-
--- a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m
46
-
+++ b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.m
47
-
@@ -23,6 +23,7 @@ @implementation RCTRefreshControl {
48
-
UIColor *_titleColor;
49
-
CGFloat _progressViewOffset;
50
-
BOOL _hasMovedToWindow;
51
-
+ UIColor *_customTintColor;
52
-
}
53
-
54
-
- (instancetype)init
55
-
@@ -58,6 +59,12 @@ - (void)layoutSubviews
56
-
_isInitialRender = false;
57
-
}
58
-
59
-
+- (void)didMoveToSuperview
60
-
+{
61
-
+ [super didMoveToSuperview];
62
-
+ [self setTintColor:_customTintColor];
63
-
+}
64
-
+
65
-
- (void)didMoveToWindow
66
-
{
67
-
[super didMoveToWindow];
68
-
@@ -221,4 +228,50 @@ - (void)refreshControlValueChanged
69
-
}
70
-
}
71
-
72
-
+// Fix for https://github.com/facebook/react-native/issues/43388
73
-
+// A bug in iOS 17.4 causes the haptic to not play when refreshing if the tintColor
74
-
+// is set before the refresh control gets added to the scrollview. We'll call this
75
-
+// function whenever the superview changes. We'll also call it if the value of customTintColor
76
-
+// changes.
77
-
+- (void)setTintColor:(UIColor *)tintColor
78
-
+{
79
-
+ if ([self.superview isKindOfClass:[UIScrollView class]] && self.tintColor != tintColor) {
80
-
+ [super setTintColor:tintColor];
81
-
+ }
82
-
+}
83
-
+
84
-
+// This method is used by Bluesky's ExpoScrollForwarder. This allows other React Native
85
-
+// libraries to perform a refresh of a scrollview and access the refresh control's onRefresh
86
-
+// function.
87
-
+- (void)forwarderBeginRefreshing
88
-
+{
89
-
+ _refreshingProgrammatically = NO;
90
-
+
91
-
+ [self sizeToFit];
92
-
+
93
-
+ if (!self.scrollView) {
94
-
+ return;
95
-
+ }
96
-
+
97
-
+ UIScrollView *scrollView = (UIScrollView *)self.scrollView;
98
-
+
99
-
+ [UIView animateWithDuration:0.3
100
-
+ delay:0
101
-
+ options:UIViewAnimationOptionBeginFromCurrentState
102
-
+ animations:^(void) {
103
-
+ // Whenever we call this method, the scrollview will always be at a position of
104
-
+ // -130 or less. Scrolling back to -65 simulates the default behavior of RCTRefreshControl
105
-
+ [scrollView setContentOffset:CGPointMake(0, -65)];
106
-
+ }
107
-
+ completion:^(__unused BOOL finished) {
108
-
+ [super beginRefreshing];
109
-
+ [self setCurrentRefreshingState:super.refreshing];
110
-
+
111
-
+ if (self->_onRefresh) {
112
-
+ self->_onRefresh(nil);
113
-
+ }
114
-
+ }
115
-
+ ];
116
-
+}
117
-
+
118
-
@end
119
-
diff --git a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControlManager.m b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControlManager.m
120
-
index 40aaf9c..1c60164 100644
121
-
--- a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControlManager.m
122
-
+++ b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControlManager.m
123
-
@@ -22,11 +22,12 @@ - (UIView *)view
124
-
125
-
RCT_EXPORT_VIEW_PROPERTY(onRefresh, RCTDirectEventBlock)
126
-
RCT_EXPORT_VIEW_PROPERTY(refreshing, BOOL)
127
-
-RCT_EXPORT_VIEW_PROPERTY(tintColor, UIColor)
128
-
RCT_EXPORT_VIEW_PROPERTY(title, NSString)
129
-
RCT_EXPORT_VIEW_PROPERTY(titleColor, UIColor)
130
-
RCT_EXPORT_VIEW_PROPERTY(progressViewOffset, CGFloat)
131
-
132
-
+RCT_REMAP_VIEW_PROPERTY(tintColor, customTintColor, UIColor)
133
-
+
134
-
RCT_EXPORT_METHOD(setNativeRefreshing : (nonnull NSNumber *)viewTag toRefreshing : (BOOL)refreshing)
135
-
{
136
-
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
+18
-22
src/view/com/util/fab/FABInner.tsx
+18
-22
src/view/com/util/fab/FABInner.tsx
···
7
7
} from 'react-native'
8
8
import Animated from 'react-native-reanimated'
9
9
import {useSafeAreaInsets} from 'react-native-safe-area-context'
10
-
import {LinearGradient} from 'expo-linear-gradient'
11
10
12
11
import {PressableScale} from '#/lib/custom-animations/PressableScale'
13
12
import {useHaptics} from '#/lib/haptics'
14
13
import {useMinimalShellFabTransform} from '#/lib/hooks/useMinimalShellTransform'
15
-
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
16
14
import {clamp} from '#/lib/numbers'
17
-
import {gradients} from '#/lib/styles'
18
15
import {isWeb} from '#/platform/detection'
19
16
import {useEnableSquareButtons} from '#/state/preferences/enable-square-buttons'
20
-
import {ios} from '#/alf'
17
+
import {ios, useBreakpoints, useTheme} from '#/alf'
21
18
import {atoms as a} from '#/alf'
22
19
23
20
export interface FABProps extends ComponentProps<typeof Pressable> {
···
28
25
29
26
export function FABInner({testID, icon, onPress, style, ...props}: FABProps) {
30
27
const insets = useSafeAreaInsets()
31
-
const {isMobile, isTablet} = useWebMediaQueries()
28
+
const {gtMobile} = useBreakpoints()
29
+
const t = useTheme()
32
30
const playHaptic = useHaptics()
33
31
const fabMinimalShellTransform = useMinimalShellFabTransform()
34
32
35
33
const enableSquareButtons = useEnableSquareButtons()
36
34
37
-
const size = isTablet ? styles.sizeLarge : styles.sizeRegular
35
+
const size = gtMobile ? styles.sizeLarge : styles.sizeRegular
38
36
39
-
const tabletSpacing = isTablet
37
+
const tabletSpacing = gtMobile
40
38
? {right: 50, bottom: 50}
41
39
: {right: 24, bottom: clamp(insets.bottom, 15, 60) + 15}
42
40
···
46
44
styles.outer,
47
45
size,
48
46
tabletSpacing,
49
-
isMobile && fabMinimalShellTransform,
47
+
!gtMobile && fabMinimalShellTransform,
50
48
]}>
51
49
<PressableScale
52
50
testID={testID}
···
60
58
playHaptic('Heavy')
61
59
})}
62
60
targetScale={0.9}
63
-
style={[enableSquareButtons ? a.rounded_sm : a.rounded_full, style]}
61
+
style={[
62
+
enableSquareButtons ? a.rounded_sm : a.rounded_full,
63
+
size,
64
+
{backgroundColor: t.palette.primary_500},
65
+
a.align_center,
66
+
a.justify_center,
67
+
a.shadow_sm,
68
+
style,
69
+
]}
64
70
{...props}>
65
-
<LinearGradient
66
-
colors={[gradients.blueLight.start, gradients.blueLight.end]}
67
-
start={{x: 0, y: 0}}
68
-
end={{x: 1, y: 1}}
69
-
style={[styles.inner, size]}>
70
-
{icon}
71
-
</LinearGradient>
71
+
{icon}
72
72
</PressableScale>
73
73
</Animated.View>
74
74
)
···
76
76
77
77
const styles = StyleSheet.create({
78
78
sizeRegular: {
79
-
width: 60,
80
-
height: 60,
79
+
width: 56,
80
+
height: 56,
81
81
borderRadius: 30,
82
82
},
83
83
sizeLarge: {
···
90
90
position: isWeb ? 'fixed' : 'absolute',
91
91
zIndex: 1,
92
92
cursor: 'pointer',
93
-
},
94
-
inner: {
95
-
justifyContent: 'center',
96
-
alignItems: 'center',
97
93
},
98
94
})
+6
-4
src/view/icons/Logo.tsx
+6
-4
src/view/icons/Logo.tsx
···
9
9
type SvgProps,
10
10
} from 'react-native-svg'
11
11
12
-
import {colors} from '#/lib/styles'
13
12
//import {useKawaiiMode} from '#/state/preferences/kawaii'
14
-
import {flatten} from '#/alf'
13
+
import {flatten, useTheme} from '#/alf'
15
14
16
15
const ratio = 512 / 512
17
16
···
21
20
} & Omit<SvgProps, 'style'>
22
21
23
22
export const Logo = React.forwardRef(function LogoImpl(props: Props, ref) {
23
+
const t = useTheme()
24
24
const {fill, ...rest} = props
25
25
const gradient = fill === 'sky'
26
26
const styles = flatten(props.style)
27
-
const _fill = gradient ? 'url(#sky)' : fill || styles?.color || colors.blue3
27
+
const _fill = gradient
28
+
? 'url(#sky)'
29
+
: fill || styles?.color || t.palette.primary_500
28
30
// @ts-ignore it's fiiiiine
29
-
const size = parseInt(rest.width || 32)
31
+
const size = parseInt(rest.width || 32, 10)
30
32
31
33
// const isKawaii = useKawaiiMode()
32
34
+6
-3
src/view/shell/bottom-bar/BottomBar.tsx
+6
-3
src/view/shell/bottom-bar/BottomBar.tsx
···
29
29
import {useLoggedOutViewControls} from '#/state/shell/logged-out'
30
30
import {useShellLayout} from '#/state/shell/shell-layout'
31
31
import {useCloseAllActiveElements} from '#/state/util'
32
-
import {Text} from '#/view/com/util/text/Text'
33
32
import {UserAvatar} from '#/view/com/util/UserAvatar'
34
33
import {Logo} from '#/view/icons/Logo'
35
34
import {Logotype} from '#/view/icons/Logotype'
36
-
import {atoms as a} from '#/alf'
35
+
import {atoms as a, useTheme} from '#/alf'
37
36
import {Button, ButtonText} from '#/components/Button'
38
37
import {useDialogControl} from '#/components/Dialog'
39
38
import {SwitchAccountDialog} from '#/components/dialogs/SwitchAccount'
···
51
50
Message_Stroke2_Corner0_Rounded as Message,
52
51
Message_Stroke2_Corner0_Rounded_Filled as MessageFilled,
53
52
} from '#/components/icons/Message'
53
+
import {Text} from '#/components/Typography'
54
54
import {useDemoMode} from '#/storage/hooks/demo-mode'
55
55
import {styles} from './BottomBarStyles'
56
56
···
398
398
accessibilityLabel,
399
399
}: BtnProps) {
400
400
const enableSquareButtons = useEnableSquareButtons()
401
+
const t = useTheme()
402
+
401
403
return (
402
404
<PressableScale
403
405
testID={testID}
···
416
418
style={[
417
419
styles.notificationCount,
418
420
enableSquareButtons ? a.rounded_sm : a.rounded_full,
421
+
{backgroundColor: t.palette.primary_500},
419
422
]}>
420
-
<Text style={styles.notificationCountLabel}>{notificationCount}</Text>
423
+
<Text style={styles.notificationCountLabel}>1</Text>
421
424
</View>
422
425
) : hasNew ? (
423
426
<View
-7
src/view/shell/bottom-bar/BottomBarStyles.tsx
-7
src/view/shell/bottom-bar/BottomBarStyles.tsx
···
24
24
position: 'absolute',
25
25
left: '52%',
26
26
top: 8,
27
-
backgroundColor: colors.blue3,
28
27
paddingHorizontal: 4,
29
28
paddingBottom: 1,
30
29
borderRadius: 6,
···
34
33
paddingTop: 3,
35
34
paddingBottom: 3,
36
35
borderRadius: 12,
37
-
},
38
-
notificationCountLight: {
39
-
borderColor: colors.white,
40
-
},
41
-
notificationCountDark: {
42
-
borderColor: colors.gray8,
43
36
},
44
37
notificationCountLabel: {
45
38
fontSize: 12,
+6
-1
src/view/shell/bottom-bar/BottomBarWeb.tsx
+6
-1
src/view/shell/bottom-bar/BottomBarWeb.tsx
···
236
236
hasNew?: boolean
237
237
notificationCount?: string
238
238
}> = ({children, href, routeName, hasNew, notificationCount}) => {
239
+
const t = useTheme()
239
240
const {_} = useLingui()
240
241
const {currentAccount} = useSession()
241
242
const currentRoute = useNavigationState(state => {
···
272
273
{children({isActive})}
273
274
{notificationCount ? (
274
275
<View
275
-
style={[styles.notificationCount, styles.notificationCountWeb]}
276
+
style={[
277
+
styles.notificationCount,
278
+
styles.notificationCountWeb,
279
+
{backgroundColor: t.palette.primary_500},
280
+
]}
276
281
aria-label={_(
277
282
msg`${plural(notificationCount, {
278
283
one: '# unread item',
+46
-78
yarn.lock
+46
-78
yarn.lock
···
8579
8579
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
8580
8580
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
8581
8581
8582
-
at-least-node@^1.0.0:
8583
-
version "1.0.0"
8584
-
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
8585
-
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
8586
-
8587
8582
atomic-sleep@^1.0.0:
8588
8583
version "1.0.0"
8589
8584
resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b"
···
9368
9363
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91"
9369
9364
integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==
9370
9365
9366
+
ci-info@^3.7.0:
9367
+
version "3.9.0"
9368
+
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
9369
+
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
9370
+
9371
9371
cjs-module-lexer@^1.0.0:
9372
9372
version "1.2.3"
9373
9373
resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107"
···
9769
9769
integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==
9770
9770
dependencies:
9771
9771
node-fetch "^2.6.12"
9772
-
9773
-
cross-spawn@^6.0.5:
9774
-
version "6.0.5"
9775
-
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
9776
-
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
9777
-
dependencies:
9778
-
nice-try "^1.0.4"
9779
-
path-key "^2.0.1"
9780
-
semver "^5.5.0"
9781
-
shebang-command "^1.2.0"
9782
-
which "^1.2.9"
9783
9772
9784
9773
cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
9785
9774
version "7.0.3"
···
11974
11963
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
11975
11964
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
11976
11965
11977
-
fs-extra@^11.2.0:
11978
-
version "11.3.0"
11979
-
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d"
11980
-
integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==
11966
+
fs-extra@^10.0.0:
11967
+
version "10.1.0"
11968
+
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
11969
+
integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
11981
11970
dependencies:
11982
11971
graceful-fs "^4.2.0"
11983
11972
jsonfile "^6.0.1"
11984
11973
universalify "^2.0.0"
11985
11974
11986
-
fs-extra@^9.0.0:
11987
-
version "9.1.0"
11988
-
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
11989
-
integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
11975
+
fs-extra@^11.2.0:
11976
+
version "11.3.0"
11977
+
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d"
11978
+
integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==
11990
11979
dependencies:
11991
-
at-least-node "^1.0.0"
11992
11980
graceful-fs "^4.2.0"
11993
11981
jsonfile "^6.0.1"
11994
11982
universalify "^2.0.0"
···
12961
12949
version "1.2.7"
12962
12950
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
12963
12951
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
12964
-
12965
-
is-ci@^2.0.0:
12966
-
version "2.0.0"
12967
-
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
12968
-
integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
12969
-
dependencies:
12970
-
ci-info "^2.0.0"
12971
12952
12972
12953
is-ci@^3.0.1:
12973
12954
version "3.0.1"
···
14077
14058
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
14078
14059
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
14079
14060
14061
+
json-stable-stringify@^1.0.2:
14062
+
version "1.3.0"
14063
+
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz#8903cfac42ea1a0f97f35d63a4ce0518f0cc6a70"
14064
+
integrity sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==
14065
+
dependencies:
14066
+
call-bind "^1.0.8"
14067
+
call-bound "^1.0.4"
14068
+
isarray "^2.0.5"
14069
+
jsonify "^0.0.1"
14070
+
object-keys "^1.1.1"
14071
+
14080
14072
json5@^1.0.2:
14081
14073
version "1.0.2"
14082
14074
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
···
14097
14089
universalify "^2.0.0"
14098
14090
optionalDependencies:
14099
14091
graceful-fs "^4.1.6"
14092
+
14093
+
jsonify@^0.0.1:
14094
+
version "0.0.1"
14095
+
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978"
14096
+
integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==
14100
14097
14101
14098
"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1:
14102
14099
version "3.3.5"
···
15117
15114
resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz#d2cc9fc5235ddb371fc44d506234339c8e4b0a4b"
15118
15115
integrity sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==
15119
15116
15120
-
nice-try@^1.0.4:
15121
-
version "1.0.5"
15122
-
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
15123
-
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
15124
-
15125
15117
no-case@^3.0.4:
15126
15118
version "3.0.4"
15127
15119
resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
···
15680
15672
ansi-escapes "^4.3.2"
15681
15673
cross-spawn "^7.0.3"
15682
15674
15683
-
patch-package@^6.5.1:
15684
-
version "6.5.1"
15685
-
resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.5.1.tgz#3e5d00c16997e6160291fee06a521c42ac99b621"
15686
-
integrity sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==
15675
+
patch-package@^8.0.1:
15676
+
version "8.0.1"
15677
+
resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.1.tgz#79d02f953f711e06d1f8949c8a13e5d3d7ba1a60"
15678
+
integrity sha512-VsKRIA8f5uqHQ7NGhwIna6Bx6D9s/1iXlA1hthBVBEbkq+t4kXD0HHt+rJhf/Z+Ci0F/HCB2hvn0qLdLG+Qxlw==
15687
15679
dependencies:
15688
15680
"@yarnpkg/lockfile" "^1.1.0"
15689
15681
chalk "^4.1.2"
15690
-
cross-spawn "^6.0.5"
15682
+
ci-info "^3.7.0"
15683
+
cross-spawn "^7.0.3"
15691
15684
find-yarn-workspace-root "^2.0.0"
15692
-
fs-extra "^9.0.0"
15693
-
is-ci "^2.0.0"
15685
+
fs-extra "^10.0.0"
15686
+
json-stable-stringify "^1.0.2"
15694
15687
klaw-sync "^6.0.0"
15695
15688
minimist "^1.2.6"
15696
15689
open "^7.4.2"
15697
-
rimraf "^2.6.3"
15698
-
semver "^5.6.0"
15690
+
semver "^7.5.3"
15699
15691
slash "^2.0.0"
15700
-
tmp "^0.0.33"
15701
-
yaml "^1.10.2"
15692
+
tmp "^0.2.4"
15693
+
yaml "^2.2.2"
15702
15694
15703
15695
path-exists@^3.0.0:
15704
15696
version "3.0.0"
···
15719
15711
version "1.0.2"
15720
15712
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
15721
15713
integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==
15722
-
15723
-
path-key@^2.0.1:
15724
-
version "2.0.1"
15725
-
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
15726
-
integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
15727
15714
15728
15715
path-key@^3.0.0, path-key@^3.1.0:
15729
15716
version "3.1.1"
···
17785
17772
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
17786
17773
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
17787
17774
17788
-
semver@^5.5.0, semver@^5.6.0:
17789
-
version "5.7.2"
17790
-
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
17791
-
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
17792
-
17793
17775
semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
17794
17776
version "6.3.1"
17795
17777
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
···
18008
17990
"@img/sharp-win32-ia32" "0.33.5"
18009
17991
"@img/sharp-win32-x64" "0.33.5"
18010
17992
18011
-
shebang-command@^1.2.0:
18012
-
version "1.2.0"
18013
-
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
18014
-
integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
18015
-
dependencies:
18016
-
shebang-regex "^1.0.0"
18017
-
18018
17993
shebang-command@^2.0.0:
18019
17994
version "2.0.0"
18020
17995
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
···
18022
17997
dependencies:
18023
17998
shebang-regex "^3.0.0"
18024
17999
18025
-
shebang-regex@^1.0.0:
18026
-
version "1.0.0"
18027
-
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
18028
-
integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
18029
-
18030
18000
shebang-regex@^3.0.0:
18031
18001
version "3.0.0"
18032
18002
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
···
18952
18922
integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
18953
18923
dependencies:
18954
18924
os-tmpdir "~1.0.2"
18925
+
18926
+
tmp@^0.2.4:
18927
+
version "0.2.5"
18928
+
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.5.tgz#b06bcd23f0f3c8357b426891726d16015abfd8f8"
18929
+
integrity sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==
18955
18930
18956
18931
tmpl@1.0.5:
18957
18932
version "1.0.5"
···
19947
19922
has-tostringtag "^1.0.0"
19948
19923
is-typed-array "^1.1.10"
19949
19924
19950
-
which@^1.2.9:
19951
-
version "1.3.1"
19952
-
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
19953
-
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
19954
-
dependencies:
19955
-
isexe "^2.0.0"
19956
-
19957
19925
which@^2.0.1, which@^2.0.2:
19958
19926
version "2.0.2"
19959
19927
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
···
20142
20110
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
20143
20111
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
20144
20112
20145
-
yaml@^2.6.1:
20113
+
yaml@^2.2.2, yaml@^2.6.1:
20146
20114
version "2.8.1"
20147
20115
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.1.tgz#1870aa02b631f7e8328b93f8bc574fac5d6c4d79"
20148
20116
integrity sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==