+4
-4
bskyweb/templates/post.html
+4
-4
bskyweb/templates/post.html
···
108
108
{% else %}
109
109
<meta property="og:title" content="@{{ profileHandle }}">
110
110
{% endif -%}
111
-
<meta name="description" content="This post requires authentication to view.">
112
-
<meta property="og:description" content="This post requires authentication to view.">
113
-
<meta property="twitter:description" content="This post requires authentication to view.">
111
+
<meta name="description" content="This author has chosen to make their posts visible only to people who are signed in.">
112
+
<meta property="og:description" content="This author has chosen to make their posts visible only to people who are signed in.">
113
+
<meta property="twitter:description" content="This author has chosen to make their posts visible only to people who are signed in.">
114
114
<meta name="twitter:card" content="summary">
115
115
{% endif -%}
116
116
{%- endblock %}
···
129
129
<div id="bsky_post_summary">
130
130
<h3>Post</h3>
131
131
<p id="bsky_handle">{{ profileHandle }}</p>
132
-
<p id="bsky_post_text">This post requires authentication to view.</p>
132
+
<p id="bsky_post_text">This author has chosen to make their posts visible only to people who are signed in.</p>
133
133
</div>
134
134
{% endif -%}
135
135
{%- endblock %}
+10
-10
package.json
+10
-10
package.json
···
62
62
"intl:compile-if-needed": "is-ci || [ -f src/locale/locales/en/messages.js ] || yarn intl:compile",
63
63
"intl:pull": "crowdin download translations --verbose -b main",
64
64
"intl:push": "crowdin push translations --verbose -b main",
65
+
"intl:push-sources": "crowdin push sources --verbose -b main",
65
66
"nuke": "rm -rf ./node_modules && rm -rf ./ios && rm -rf ./android",
66
67
"update-extensions": "bash scripts/updateExtensions.sh",
67
68
"export": "npx expo export --dump-sourcemap && yarn upload-native-sourcemaps",
···
98
99
"@miblanchard/react-native-slider": "^2.6.0",
99
100
"@mozzius/expo-dynamic-app-icon": "^1.8.0",
100
101
"@react-native-async-storage/async-storage": "2.2.0",
101
-
"@react-navigation/bottom-tabs": "^7.3.13",
102
-
"@react-navigation/drawer": "^7.3.12",
103
-
"@react-navigation/native": "^7.1.9",
104
-
"@react-navigation/native-stack": "^7.3.13",
102
+
"@react-navigation/bottom-tabs": "^7.9.0",
103
+
"@react-navigation/native": "^7.1.26",
104
+
"@react-navigation/native-stack": "^7.9.0",
105
105
"@sentry/react-native": "~6.20.0",
106
106
"@tanstack/query-async-storage-persister": "^5.25.0",
107
107
"@tanstack/react-query": "5.25.0",
···
175
175
"libphonenumber-js": "^1.12.31",
176
176
"lodash.chunk": "^4.2.0",
177
177
"lodash.debounce": "^4.0.8",
178
-
"lodash.isequal": "^4.5.0",
178
+
"fast-deep-equal": "^3.1.3",
179
179
"lodash.shuffle": "^4.2.0",
180
180
"lodash.throttle": "^4.1.1",
181
181
"multiformats": "9.9.0",
···
195
195
"react-native-compressor": "^1.13.0",
196
196
"react-native-date-picker": "^5.0.13",
197
197
"react-native-device-attest": "^0.1.6",
198
-
"react-native-drawer-layout": "^4.1.8",
198
+
"react-native-drawer-layout": "^4.2.1",
199
199
"react-native-edge-to-edge": "^1.6.0",
200
200
"react-native-gesture-handler": "~2.28.0",
201
201
"react-native-get-random-values": "~1.11.0",
···
205
205
"react-native-qrcode-styled": "^0.3.3",
206
206
"react-native-reanimated": "^3.19.1",
207
207
"react-native-safe-area-context": "~5.6.0",
208
-
"react-native-screens": "~4.16.0",
208
+
"react-native-screens": "^4.19.0",
209
209
"react-native-svg": "15.12.1",
210
210
"react-native-uitextview": "^1.4.0",
211
211
"react-native-url-polyfill": "^1.3.0",
···
223
223
"tippy.js": "^6.3.7",
224
224
"tlds": "^1.234.0",
225
225
"tldts": "^6.1.46",
226
+
"unicode-segmenter": "^0.14.5",
226
227
"zod": "^3.20.2"
227
228
},
228
229
"devDependencies": {
···
245
246
"@types/jest": "29.5.14",
246
247
"@types/lodash.chunk": "^4.2.7",
247
248
"@types/lodash.debounce": "^4.0.7",
248
-
"@types/lodash.isequal": "^4.5.6",
249
249
"@types/lodash.shuffle": "^4.2.7",
250
250
"@types/psl": "^1.1.1",
251
251
"@types/react": "^19.1.12",
···
274
274
"jest-junit": "^16.0.0",
275
275
"lint-staged": "^13.2.3",
276
276
"lockfile-lint": "^4.14.0",
277
-
"metro-react-native-babel-preset": "^0.77.0",
278
277
"prettier": "^3.6.0",
279
278
"react-native-dotenv": "^3.4.11",
280
279
"react-refresh": "^0.14.0",
···
291
290
"**/expo-constants": "18.0.8",
292
291
"**/expo-device": "7.1.4",
293
292
"**/zod": "3.23.8",
294
-
"**/multiformats": "9.9.0"
293
+
"**/multiformats": "9.9.0",
294
+
"unicode-segmenter": "0.14.5"
295
295
},
296
296
"jest": {
297
297
"preset": "jest-expo/ios",
+2
-2
patches/react-native-drawer-layout+4.1.10.patch
patches/react-native-drawer-layout+4.2.1.patch
+2
-2
patches/react-native-drawer-layout+4.1.10.patch
patches/react-native-drawer-layout+4.2.1.patch
···
1
1
diff --git a/node_modules/react-native-drawer-layout/lib/module/views/Drawer.native.js b/node_modules/react-native-drawer-layout/lib/module/views/Drawer.native.js
2
-
index efa71f9..a23c624 100644
2
+
index 40fdcdb..770fd67 100644
3
3
--- a/node_modules/react-native-drawer-layout/lib/module/views/Drawer.native.js
4
4
+++ b/node_modules/react-native-drawer-layout/lib/module/views/Drawer.native.js
5
5
@@ -124,15 +124,21 @@ export function Drawer({
···
31
31
- }, finished => runOnJS(onAnimationEnd)(open, finished));
32
32
+ }, finished => {
33
33
+ animatingTo.value = null;
34
-
+ runOnJS(onAnimationEnd)(open, finished)
34
+
+ runOnJS(onAnimationEnd)(open, finished);
35
35
+ });
36
36
if (open) {
37
37
runOnJS(onOpen)();
-326
patches/react-native-screens+4.16.0.patch
-326
patches/react-native-screens+4.16.0.patch
···
1
-
diff --git a/node_modules/react-native-screens/ios/RNSScreen.mm b/node_modules/react-native-screens/ios/RNSScreen.mm
2
-
index b62a2e2..cb469db 100644
3
-
--- a/node_modules/react-native-screens/ios/RNSScreen.mm
4
-
+++ b/node_modules/react-native-screens/ios/RNSScreen.mm
5
-
@@ -729,9 +729,26 @@ - (void)notifyTransitionProgress:(double)progress closing:(BOOL)closing goingFor
6
-
#endif
7
-
}
8
-
9
-
-#if !RCT_NEW_ARCH_ENABLED
10
-
+- (void)willMoveToWindow:(UIWindow *)newWindow
11
-
+{
12
-
+ if (@available(iOS 26, *)) {
13
-
+ // In iOS 26, as soon as another screen appears in transition, it is interactable
14
-
+ // To avoid glitches resulting from clicking buttons mid transition, we temporarily disable all interactions
15
-
+ // Disabling interactions for parent navigation controller won't be enough in case of nested stack
16
-
+ // Furthermore, a stack put inside a modal will exist in an entirely different hierarchy
17
-
+ // To be sure, we block interactions on the whole window.
18
-
+ // Note that newWindows is nil when moving from instead of moving to, and Obj-C handles nil correctly
19
-
+ newWindow.userInteractionEnabled = false;
20
-
+ }
21
-
+}
22
-
+
23
-
- (void)presentationControllerWillDismiss:(UIPresentationController *)presentationController
24
-
{
25
-
+ if (@available(iOS 26, *)) {
26
-
+ // Disable interactions to disallow multiple modals dismissed at once; see willMoveToWindow
27
-
+ presentationController.containerView.window.userInteractionEnabled = false;
28
-
+ }
29
-
+#if !RCT_NEW_ARCH_ENABLED
30
-
// On Paper, we need to call both "cancel" and "reset" here because RN's gesture
31
-
// recognizer does not handle the scenario when it gets cancelled by other top
32
-
// level gesture recognizer. In this case by the modal dismiss gesture.
33
-
@@ -744,8 +761,8 @@ - (void)presentationControllerWillDismiss:(UIPresentationController *)presentati
34
-
// down.
35
-
[_touchHandler cancel];
36
-
[_touchHandler reset];
37
-
-}
38
-
#endif // !RCT_NEW_ARCH_ENABLED
39
-
+}
40
-
41
-
- (BOOL)presentationControllerShouldDismiss:(UIPresentationController *)presentationController
42
-
{
43
-
@@ -757,6 +774,10 @@ - (BOOL)presentationControllerShouldDismiss:(UIPresentationController *)presenta
44
-
45
-
- (void)presentationControllerDidAttemptToDismiss:(UIPresentationController *)presentationController
46
-
{
47
-
+ if (@available(iOS 26, *)) {
48
-
+ // Reenable interactions; see presentationControllerWillDismiss
49
-
+ presentationController.containerView.window.userInteractionEnabled = true;
50
-
+ }
51
-
// NOTE(kkafar): We should consider depracating the use of gesture cancel here & align
52
-
// with usePreventRemove API of react-navigation v7.
53
-
[self notifyGestureCancel];
54
-
@@ -767,6 +788,11 @@ - (void)presentationControllerDidAttemptToDismiss:(UIPresentationController *)pr
55
-
56
-
- (void)presentationControllerDidDismiss:(UIPresentationController *)presentationController
57
-
{
58
-
+ if (@available(iOS 26, *)) {
59
-
+ // Reenable interactions; see presentationControllerWillDismiss
60
-
+ // Dismissed screen doesn't hold a reference to window, but presentingViewController.view does
61
-
+ presentationController.presentingViewController.view.window.userInteractionEnabled = true;
62
-
+ }
63
-
if ([_reactSuperview respondsToSelector:@selector(presentationControllerDidDismiss:)]) {
64
-
[_reactSuperview performSelector:@selector(presentationControllerDidDismiss:) withObject:presentationController];
65
-
}
66
-
@@ -1518,6 +1544,10 @@ - (void)viewWillDisappear:(BOOL)animated
67
-
68
-
- (void)viewDidAppear:(BOOL)animated
69
-
{
70
-
+ if (@available(iOS 26, *)) {
71
-
+ // Reenable interactions, see willMoveToWindow
72
-
+ self.view.window.userInteractionEnabled = true;
73
-
+ }
74
-
[super viewDidAppear:animated];
75
-
if (!_isSwiping || _shouldNotify) {
76
-
// we are going forward or dismissing without swipe
77
-
diff --git a/node_modules/react-native-screens/ios/RNSScreenStack.mm b/node_modules/react-native-screens/ios/RNSScreenStack.mm
78
-
index 229dc58..10b365b 100644
79
-
--- a/node_modules/react-native-screens/ios/RNSScreenStack.mm
80
-
+++ b/node_modules/react-native-screens/ios/RNSScreenStack.mm
81
-
@@ -62,26 +62,6 @@ @interface RNSScreenStackView () <
82
-
83
-
@implementation RNSNavigationController
84
-
85
-
-#if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0)
86
-
-- (void)viewDidLoad
87
-
-{
88
-
- // iOS 26 introduces new gesture recognizer which replaces our RNSPanGestureRecognizer.
89
-
- // The problem is that we are not able to handle it here for various reasons:
90
-
- // - the new recognizer comes with its own delegate and our current approach is to wire
91
-
- // all recognizers to RNSScreenStackView; to be 100% sure we don't break the logic,
92
-
- // we would have to decorate its delegate and call it after our code, which would
93
-
- // break other recognizers that the stack view is the delegate for
94
-
- // - when RNSScreenStackView.setupGestureHandler method is called, the recognizer hasn't been
95
-
- // loaded yet and there is no other place to configure in a not "hacky" way
96
-
- // - the official docs warn us to not use it for anything other than "setting up failure requirements with it"
97
-
- // - we expose fullScreenGestureEnabled prop to enable/disable the feature,
98
-
- // so we need control over the delegate
99
-
- if (@available(iOS 26.0, *)) {
100
-
- self.interactiveContentPopGestureRecognizer.enabled = NO;
101
-
- }
102
-
-}
103
-
-#endif // iOS 26
104
-
-
105
-
#if !TARGET_OS_TV
106
-
- (UIViewController *)childViewControllerForStatusBarStyle
107
-
{
108
-
@@ -219,50 +199,6 @@ - (bool)onRepeatedTabSelectionOfTabScreenController:(RNSTabsScreenViewController
109
-
return false;
110
-
}
111
-
112
-
-#pragma mark - UINavigationBarDelegate
113
-
-
114
-
-#if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0)
115
-
-- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item
116
-
-{
117
-
- if (@available(iOS 26, *)) {
118
-
- // To prevent popping multiple screens when back button is pressed repeatedly,
119
-
- // We allow for pop operation to proceed only if no transition is in progress,
120
-
- // which we check indirectly by checking if transitionCoordinator is set.
121
-
- // If it's not, we are safe to proceed.
122
-
- if (self.transitionCoordinator == nil) {
123
-
- // We still need to disable interactions for back button so click effects are not applied,
124
-
- // and there is unfortunately no better place for it currently
125
-
- UIView *button = [navigationBar rnscreens_findBackButtonWrapperView];
126
-
- if (button != nil) {
127
-
- button.userInteractionEnabled = false;
128
-
- }
129
-
-
130
-
- return true;
131
-
- }
132
-
-
133
-
- return false;
134
-
- }
135
-
-
136
-
- return true;
137
-
-}
138
-
-
139
-
-- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item
140
-
-{
141
-
- if (@available(iOS 26, *)) {
142
-
- // Reset interactions on back button -> see navigationBar:shouldPopItem
143
-
- // IMPORTANT: This reset won't execute when preventNativeDismiss is on.
144
-
- // However, on iOS 26, unlike in previous versions, the back button instance changes
145
-
- // when handling preventNativeDismiss and userIteractionEnabled is reset.
146
-
- // The instance also changes when regular screen pop happens, but in that case
147
-
- // the value of userInteractionEnabled is carried on, and we reset it here.
148
-
- UIView *button = [navigationBar rnscreens_findBackButtonWrapperView];
149
-
- if (button != nil) {
150
-
- button.userInteractionEnabled = true;
151
-
- }
152
-
- }
153
-
-}
154
-
-#endif // Check for iOS >= 26
155
-
-
156
-
#pragma mark - RNSFrameCorrectionProvider
157
-
158
-
#ifdef RNS_GAMMA_ENABLED
159
-
@@ -327,7 +263,7 @@ @implementation RNSScreenStackView {
160
-
UINavigationController *_controller;
161
-
NSMutableArray<RNSScreenView *> *_reactSubviews;
162
-
BOOL _invalidated;
163
-
- BOOL _isFullWidthSwiping;
164
-
+ BOOL _isFullWidthSwipingWithPanGesture; // used only for content swipe with RNSPanGestureRecognizer
165
-
RNSPercentDrivenInteractiveTransition *_interactionController;
166
-
__weak RNSScreenStackManager *_manager;
167
-
BOOL _updateScheduled;
168
-
@@ -522,6 +458,11 @@ - (void)reactAddControllerToClosestParent:(UIViewController *)controller
169
-
[self addSubview:controller.view];
170
-
#if !TARGET_OS_TV
171
-
_controller.interactivePopGestureRecognizer.delegate = self;
172
-
+ #if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0)
173
-
+ if (@available(iOS 26, *)) {
174
-
+ _controller.interactiveContentPopGestureRecognizer.delegate = self;
175
-
+ }
176
-
+#endif // Check for iOS >= 26.0
177
-
#endif
178
-
[controller didMoveToParentViewController:parentView.reactViewController];
179
-
// On iOS pre 12 we observed that `willShowViewController` delegate method does not always
180
-
@@ -943,7 +884,7 @@ - (void)dismissOnReload
181
-
// when preventing the native dismiss with back button, we have to return the animator.
182
-
// Also, we need to return the animator when full width swiping even if the animation is not custom,
183
-
// otherwise the screen will be just popped immediately due to no animation
184
-
- ((operation == UINavigationControllerOperationPop && shouldCancelDismiss) || _isFullWidthSwiping ||
185
-
+ ((operation == UINavigationControllerOperationPop && shouldCancelDismiss) || _isFullWidthSwipingWithPanGesture ||
186
-
[RNSScreenStackAnimator isCustomAnimation:screen.stackAnimation] || _customAnimation)) {
187
-
return [[RNSScreenStackAnimator alloc] initWithOperation:operation];
188
-
}
189
-
@@ -967,23 +908,39 @@ - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
190
-
}
191
-
RNSScreenView *topScreen = _reactSubviews.lastObject;
192
-
193
-
+ BOOL customAnimationOnSwipePropSetAndSelectedAnimationIsCustom =
194
-
+ topScreen.customAnimationOnSwipe && [RNSScreenStackAnimator isCustomAnimation:topScreen.stackAnimation];
195
-
+
196
-
#if TARGET_OS_TV || TARGET_OS_VISION
197
-
[self cancelTouchesInParent];
198
-
return YES;
199
-
#else
200
-
- // RNSPanGestureRecognizer will receive events iff topScreen.fullScreenSwipeEnabled == YES;
201
-
- // Events are filtered in gestureRecognizer:shouldReceivePressOrTouchEvent: method
202
-
if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]]) {
203
-
- if ([self isInGestureResponseDistance:gestureRecognizer topScreen:topScreen]) {
204
-
- _isFullWidthSwiping = YES;
205
-
- [self cancelTouchesInParent];
206
-
- return YES;
207
-
+ // On iOS < 26, we have a custom full screen swipe recognizer that functions similarily
208
-
+ // to interactiveContentPopGestureRecognizer introduced in iOS 26.
209
-
+ // On iOS >= 26, we want to use the native one, but we are unable to handle custom animations
210
-
+ // with native interactiveContentPopGestureRecognizer, so we have to fallback to the old implementation.
211
-
+ // In this case, the old one should behave as close as the new native one, having only the difference
212
-
+ // in animation, and without any customization that is exclusive for it (e.g. gestureResponseDistance).
213
-
+ if (@available(iOS 26, *)) {
214
-
+ if (customAnimationOnSwipePropSetAndSelectedAnimationIsCustom) {
215
-
+ _isFullWidthSwipingWithPanGesture = YES;
216
-
+ [self cancelTouchesInParent];
217
-
+ return YES;
218
-
+ }
219
-
+ return NO;
220
-
+ } else {
221
-
+ if ([self isInGestureResponseDistance:gestureRecognizer topScreen:topScreen]) {
222
-
+ _isFullWidthSwipingWithPanGesture = YES;
223
-
+ [self cancelTouchesInParent];
224
-
+ return YES;
225
-
+ }
226
-
+ return NO;
227
-
}
228
-
- return NO;
229
-
}
230
-
231
-
// Now we're dealing with RNSScreenEdgeGestureRecognizer (or _UIParallaxTransitionPanGestureRecognizer)
232
-
- if (topScreen.customAnimationOnSwipe && [RNSScreenStackAnimator isCustomAnimation:topScreen.stackAnimation]) {
233
-
+ if (customAnimationOnSwipePropSetAndSelectedAnimationIsCustom) {
234
-
if ([gestureRecognizer isKindOfClass:[RNSScreenEdgeGestureRecognizer class]]) {
235
-
UIRectEdge edges = ((RNSScreenEdgeGestureRecognizer *)gestureRecognizer).edges;
236
-
BOOL isRTL = _controller.view.semanticContentAttribute == UISemanticContentAttributeForceRightToLeft;
237
-
@@ -1028,7 +985,9 @@ - (void)setupGestureHandlers
238
-
rightEdgeSwipeGestureRecognizer.delegate = self;
239
-
[self addGestureRecognizer:rightEdgeSwipeGestureRecognizer];
240
-
241
-
- // gesture recognizer for full width swipe gesture
242
-
+ // Starting from iOS 26, RNSPanGestureRecognizer has been mostly replaced by native
243
-
+ // interactiveContentPopGestureRecognizer. It still needs to handle custom dismiss animations,
244
-
+ // which we are not able to handle with the latter.
245
-
RNSPanGestureRecognizer *panRecognizer = [[RNSPanGestureRecognizer alloc] initWithTarget:self
246
-
action:@selector(handleSwipe:)];
247
-
panRecognizer.delegate = self;
248
-
@@ -1091,7 +1050,7 @@ - (void)handleSwipe:(UIPanGestureRecognizer *)gestureRecognizer
249
-
[_interactionController cancelInteractiveTransition];
250
-
}
251
-
_interactionController = nil;
252
-
- _isFullWidthSwiping = NO;
253
-
+ _isFullWidthSwipingWithPanGesture = NO;
254
-
}
255
-
default: {
256
-
break;
257
-
@@ -1225,14 +1184,6 @@ - (BOOL)isScrollViewPanGestureRecognizer:(UIGestureRecognizer *)gestureRecognize
258
-
// Be careful when adding another type of gesture recognizer.
259
-
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceivePressOrTouchEvent:(NSObject *)event
260
-
{
261
-
- if (@available(iOS 26, *)) {
262
-
- // in iOS 26, you can swipe to pop screen before the previous one finished transitioning;
263
-
- // this prevents from registering the second gesture
264
-
- if ([self isTransitionInProgress]) {
265
-
- return NO;
266
-
- }
267
-
- }
268
-
-
269
-
RNSScreenView *topScreen = _reactSubviews.lastObject;
270
-
271
-
for (RNSScreenView *s in _reactSubviews.reverseObjectEnumerator) {
272
-
@@ -1249,10 +1200,30 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceive
273
-
return NO;
274
-
}
275
-
276
-
+ BOOL customAnimationOnSwipePropSetAndSelectedAnimationIsCustom =
277
-
+ topScreen.customAnimationOnSwipe && [RNSScreenStackAnimator isCustomAnimation:topScreen.stackAnimation];
278
-
+#if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0)
279
-
+ if (@available(iOS 26, *)) {
280
-
+ // On iOS 26, fullScreenSwipeEnabled takes no effect, and depending on whether custom animations are on,
281
-
+ // we select either interactiveContentPopGestureRecognizer or RNSPanGestureRecognizer
282
-
+ if (([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]] &&
283
-
+ !customAnimationOnSwipePropSetAndSelectedAnimationIsCustom) ||
284
-
+ (gestureRecognizer == _controller.interactiveContentPopGestureRecognizer &&
285
-
+ customAnimationOnSwipePropSetAndSelectedAnimationIsCustom)) {
286
-
+ return NO;
287
-
+ }
288
-
+ } else {
289
-
+ // We want to pass events to RNSPanGestureRecognizer iff full screen swipe is enabled.
290
-
+ if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]]) {
291
-
+ return topScreen.fullScreenSwipeEnabled;
292
-
+ }
293
-
+ }
294
-
+#else // check for iOS >= 26
295
-
// We want to pass events to RNSPanGestureRecognizer iff full screen swipe is enabled.
296
-
if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]]) {
297
-
return topScreen.fullScreenSwipeEnabled;
298
-
}
299
-
+#endif // check for iOS >= 26
300
-
301
-
// RNSScreenEdgeGestureRecognizer || _UIParallaxTransitionPanGestureRecognizer
302
-
return YES;
303
-
@@ -1268,15 +1239,6 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceive
304
-
return [self gestureRecognizer:gestureRecognizer shouldReceivePressOrTouchEvent:touch];
305
-
}
306
-
307
-
-- (BOOL)isTransitionInProgress
308
-
-{
309
-
- if (_controller.transitionCoordinator != nil) {
310
-
- return YES;
311
-
- }
312
-
-
313
-
- return NO;
314
-
-}
315
-
-
316
-
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
317
-
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
318
-
{
319
-
@@ -1289,7 +1251,6 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
320
-
if (gestureRecognizer.state == UIGestureRecognizerStateBegan || isBackGesture) {
321
-
return NO;
322
-
}
323
-
-
324
-
return YES;
325
-
}
326
-
return NO;
-2
src/components/FeedInterstitials.tsx
-2
src/components/FeedInterstitials.tsx
···
776
776
}
777
777
778
778
function SeeMoreSuggestedProfilesCard({onPress}: {onPress: () => void}) {
779
-
const t = useTheme()
780
779
const {_} = useLingui()
781
780
782
781
return (
···
790
789
a.gap_sm,
791
790
a.p_md,
792
791
a.rounded_lg,
793
-
t.atoms.shadow_sm,
794
792
{width: FINAL_CARD_WIDTH},
795
793
]}>
796
794
<ButtonIcon icon={ArrowRight} size="lg" />
+12
-1
src/components/Post/Embed/ExternalEmbed/Gif.tsx
+12
-1
src/components/Post/Embed/ExternalEmbed/Gif.tsx
···
11
11
import {useLingui} from '@lingui/react'
12
12
13
13
import {HITSLOP_20} from '#/lib/constants'
14
+
import {clamp} from '#/lib/numbers'
14
15
import {type EmbedPlayerParams} from '#/lib/strings/embed-player'
15
16
import {isWeb} from '#/platform/detection'
16
17
import {useAutoplayDisabled} from '#/state/preferences'
···
111
112
playerRef.current?.toggleAsync()
112
113
}, [])
113
114
115
+
let aspectRatio = 1
116
+
if (params.dimensions) {
117
+
aspectRatio = clamp(
118
+
params.dimensions.width / params.dimensions.height,
119
+
0.75,
120
+
4,
121
+
)
122
+
}
123
+
114
124
return (
115
125
<View
116
126
style={[
···
118
128
a.overflow_hidden,
119
129
a.border,
120
130
t.atoms.border_contrast_low,
121
-
{aspectRatio: params.dimensions!.width / params.dimensions!.height},
131
+
{backgroundColor: t.palette.black},
132
+
{aspectRatio},
122
133
style,
123
134
]}>
124
135
<View
+29
-13
src/components/Post/Embed/index.tsx
+29
-13
src/components/Post/Embed/index.tsx
···
1
-
import React from 'react'
1
+
import {useCallback, useMemo} from 'react'
2
2
import {View} from 'react-native'
3
3
import {
4
4
type $Typed,
···
12
12
import {useLingui} from '@lingui/react'
13
13
import {useQueryClient} from '@tanstack/react-query'
14
14
15
-
import {usePalette} from '#/lib/hooks/usePalette'
16
15
import {makeProfileLink} from '#/lib/routes/links'
17
16
import {useDirectFetchRecords} from '#/state/preferences/direct-fetch-records'
18
17
import {useModerationOpts} from '#/state/preferences/moderation-opts'
···
22
21
import {Link} from '#/view/com/util/Link'
23
22
import {PostMeta} from '#/view/com/util/PostMeta'
24
23
import {atoms as a, useTheme} from '#/alf'
24
+
import {useInteractionState} from '#/components/hooks/useInteractionState'
25
25
import {ContentHider} from '#/components/moderation/ContentHider'
26
26
import {PostAlerts} from '#/components/moderation/PostAlerts'
27
27
import {RichText} from '#/components/RichText'
···
318
318
visibilityLabel?: string
319
319
}) {
320
320
const moderationOpts = useModerationOpts()
321
-
const quote = React.useMemo<$Typed<AppBskyFeedDefs.PostView>>(
321
+
const quote = useMemo<$Typed<AppBskyFeedDefs.PostView>>(
322
322
() => ({
323
323
...embed.view,
324
324
$type: 'app.bsky.feed.defs#postView',
···
327
327
}),
328
328
[embed],
329
329
)
330
-
const moderation = React.useMemo(() => {
330
+
const moderation = useMemo(() => {
331
331
return moderationOpts ? moderatePost(quote, moderationOpts) : undefined
332
332
}, [quote, moderationOpts])
333
333
334
334
const t = useTheme()
335
335
const queryClient = useQueryClient()
336
-
const pal = usePalette('default')
337
336
const itemUrip = new AtUri(quote.uri)
338
337
const itemHref = makeProfileLink(quote.author, 'post', itemUrip.rkey)
339
338
const itemTitle = `Post by ${quote.author.handle}`
340
339
341
-
const richText = React.useMemo(() => {
340
+
const richText = useMemo(() => {
342
341
if (
343
342
!bsky.dangerousIsType<AppBskyFeedPost.Record>(
344
343
quote.record,
···
352
351
: undefined
353
352
}, [quote.record])
354
353
355
-
const onBeforePress = React.useCallback(() => {
354
+
const onBeforePress = useCallback(() => {
356
355
unstableCacheProfileView(queryClient, quote.author)
357
356
onOpen?.()
358
357
}, [queryClient, quote.author, onOpen])
359
358
360
-
const [hover, setHover] = React.useState(false)
359
+
const {
360
+
state: hover,
361
+
onIn: onPointerEnter,
362
+
onOut: onPointerLeave,
363
+
} = useInteractionState()
364
+
const {
365
+
state: pressed,
366
+
onIn: onPressIn,
367
+
onOut: onPressOut,
368
+
} = useInteractionState()
361
369
return (
362
370
<View
363
371
style={[a.mt_sm]}
364
-
onPointerEnter={() => setHover(true)}
365
-
onPointerLeave={() => setHover(false)}>
372
+
onPointerEnter={onPointerEnter}
373
+
onPointerLeave={onPointerLeave}>
366
374
<ContentHider
367
375
modui={moderation?.ui('contentList')}
368
376
style={[a.rounded_md, a.border, t.atoms.border_contrast_low, style]}
···
370
378
childContainerStyle={[a.pt_sm]}>
371
379
{({active}) => (
372
380
<>
373
-
{!active && <SubtleHover hover={hover} style={[a.rounded_md]} />}
381
+
{!active && (
382
+
<SubtleHover
383
+
native
384
+
hover={hover || pressed}
385
+
style={[a.rounded_md]}
386
+
/>
387
+
)}
374
388
<Link
375
389
style={[!active && a.p_md]}
376
-
hoverStyle={{borderColor: pal.colors.borderLinkHover}}
390
+
hoverStyle={t.atoms.border_contrast_high}
377
391
href={itemHref}
378
392
title={itemTitle}
379
-
onBeforePress={onBeforePress}>
393
+
onBeforePress={onBeforePress}
394
+
onPressIn={onPressIn}
395
+
onPressOut={onPressOut}>
380
396
<View pointerEvents="none">
381
397
<PostMeta
382
398
author={quote.author}
+3
-3
src/components/dialogs/lists/CreateOrEditListDialog.tsx
+3
-3
src/components/dialogs/lists/CreateOrEditListDialog.tsx
···
5
5
import {useLingui} from '@lingui/react'
6
6
7
7
import {cleanError} from '#/lib/strings/errors'
8
-
import {useWarnMaxGraphemeCount} from '#/lib/strings/helpers'
8
+
import {isOverMaxGraphemeCount} from '#/lib/strings/helpers'
9
9
import {richTextToString} from '#/lib/strings/rich-text-helpers'
10
10
import {shortenLinks, stripInvalidMentions} from '#/lib/strings/rich-text-manip'
11
11
import {logger} from '#/logger'
···
262
262
_,
263
263
])
264
264
265
-
const displayNameTooLong = useWarnMaxGraphemeCount({
265
+
const displayNameTooLong = isOverMaxGraphemeCount({
266
266
text: displayName,
267
267
maxCount: DISPLAY_NAME_MAX_GRAPHEMES,
268
268
})
269
-
const descriptionTooLong = useWarnMaxGraphemeCount({
269
+
const descriptionTooLong = isOverMaxGraphemeCount({
270
270
text: descriptionRt,
271
271
maxCount: DESCRIPTION_MAX_GRAPHEMES,
272
272
})
+1
-2
src/components/moderation/ReportDialog/index.tsx
+1
-2
src/components/moderation/ReportDialog/index.tsx
···
1
1
import React from 'react'
2
-
import {Pressable, View} from 'react-native'
3
-
import {type ScrollView} from 'react-native-gesture-handler'
2
+
import {Pressable, type ScrollView, View} from 'react-native'
4
3
import {type AppBskyLabelerDefs, BSKY_LABELER_DID} from '@atproto/api'
5
4
import {msg, Trans} from '@lingui/macro'
6
5
import {useLingui} from '@lingui/react'
+7
-27
src/lib/strings/helpers.ts
+7
-27
src/lib/strings/helpers.ts
···
1
-
import {useCallback, useMemo} from 'react'
2
1
import {type RichText} from '@atproto/api'
3
-
import Graphemer from 'graphemer'
2
+
import {countGraphemes} from 'unicode-segmenter/grapheme'
4
3
5
4
import {shortenLinks} from './rich-text-manip'
6
5
···
29
28
return str
30
29
}
31
30
32
-
export function useEnforceMaxGraphemeCount() {
33
-
const splitter = useMemo(() => new Graphemer(), [])
34
-
35
-
return useCallback(
36
-
(text: string, maxCount: number) => {
37
-
if (splitter.countGraphemes(text) > maxCount) {
38
-
return splitter.splitGraphemes(text).slice(0, maxCount).join('')
39
-
} else {
40
-
return text
41
-
}
42
-
},
43
-
[splitter],
44
-
)
45
-
}
46
-
47
-
export function useWarnMaxGraphemeCount({
31
+
export function isOverMaxGraphemeCount({
48
32
text,
49
33
maxCount,
50
34
}: {
51
35
text: string | RichText
52
36
maxCount: number
53
37
}) {
54
-
const splitter = useMemo(() => new Graphemer(), [])
55
-
56
-
return useMemo(() => {
57
-
if (typeof text === 'string') {
58
-
return splitter.countGraphemes(text) > maxCount
59
-
} else {
60
-
return shortenLinks(text).graphemeLength > maxCount
61
-
}
62
-
}, [splitter, maxCount, text])
38
+
if (typeof text === 'string') {
39
+
return countGraphemes(text) > maxCount
40
+
} else {
41
+
return shortenLinks(text).graphemeLength > maxCount
42
+
}
63
43
}
64
44
65
45
export function countLines(str: string | undefined): number {
+2
-1
src/locale/i18n.ts
+2
-1
src/locale/i18n.ts
···
138
138
await Promise.all([
139
139
import('@formatjs/intl-pluralrules/locale-data/eo'),
140
140
import('@formatjs/intl-numberformat/locale-data/eo'),
141
-
import('@formatjs/intl-displaynames/locale-data/eo'),
141
+
// borked, see https://github.com/bluesky-social/social-app/pull/9574
142
+
// import('@formatjs/intl-displaynames/locale-data/eo'),
142
143
])
143
144
break
144
145
}
+122
-119
src/locale/locales/en/messages.po
+122
-119
src/locale/locales/en/messages.po
···
436
436
msgstr ""
437
437
438
438
#: src/screens/Settings/FindContactsSettings.tsx:430
439
-
msgid "{numMatches, plural, one {1 contact found} other {# contacts found}}"
439
+
msgid "{numMatches, plural, one {# contact found} other {# contacts found}}"
440
440
msgstr ""
441
441
442
442
#: src/components/NewskieDialog.tsx:113
···
574
574
msgid "A screenshot of a profile page with a bell icon next to the follow button, indicating the new activity notifications feature."
575
575
msgstr ""
576
576
577
-
#: src/Navigation.tsx:534
577
+
#: src/Navigation.tsx:535
578
578
#: src/screens/Settings/AboutSettings.tsx:75
579
579
#: src/screens/Settings/Settings.tsx:262
580
580
#: src/screens/Settings/Settings.tsx:265
···
609
609
msgid "Accessibility"
610
610
msgstr ""
611
611
612
-
#: src/Navigation.tsx:385
612
+
#: src/Navigation.tsx:386
613
613
msgid "Accessibility Settings"
614
614
msgstr ""
615
615
616
-
#: src/Navigation.tsx:401
616
+
#: src/Navigation.tsx:402
617
617
#: src/screens/Login/LoginForm.tsx:194
618
618
#: src/screens/Settings/AccountSettings.tsx:51
619
619
#: src/screens/Settings/Settings.tsx:180
···
648
648
msgid "Account Muted by List"
649
649
msgstr ""
650
650
651
-
#: src/screens/Settings/Settings.tsx:644
651
+
#: src/screens/Settings/Settings.tsx:646
652
652
msgid "Account options"
653
653
msgstr ""
654
654
···
656
656
msgid "Account provider"
657
657
msgstr ""
658
658
659
-
#: src/screens/Settings/Settings.tsx:680
659
+
#: src/screens/Settings/Settings.tsx:682
660
660
msgid "Account removed from quick access"
661
661
msgstr ""
662
662
···
688
688
msgid "Activity from others"
689
689
msgstr ""
690
690
691
-
#: src/Navigation.tsx:502
691
+
#: src/Navigation.tsx:503
692
692
msgid "Activity notifications"
693
693
msgstr ""
694
694
···
770
770
msgid "Add emoji reaction"
771
771
msgstr ""
772
772
773
-
#: src/view/com/feeds/ComposerPrompt.tsx:224
773
+
#: src/view/com/feeds/ComposerPrompt.tsx:222
774
774
msgid "Add image"
775
775
msgstr ""
776
776
···
1011
1011
msgid "Already signed in as @{0}"
1012
1012
msgstr ""
1013
1013
1014
-
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:186
1014
+
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:197
1015
1015
#: src/view/com/composer/GifAltText.tsx:100
1016
1016
#: src/view/com/composer/photos/Gallery.tsx:188
1017
1017
msgid "ALT"
···
1027
1027
msgid "Alt text"
1028
1028
msgstr ""
1029
1029
1030
-
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:191
1030
+
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:202
1031
1031
msgid "Alt Text"
1032
1032
msgstr ""
1033
1033
···
1167
1167
msgid "Animals"
1168
1168
msgstr ""
1169
1169
1170
-
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:149
1170
+
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:160
1171
1171
msgid "Animated GIF"
1172
1172
msgstr ""
1173
1173
···
1193
1193
msgid "Anyone who follows me"
1194
1194
msgstr ""
1195
1195
1196
-
#: src/Navigation.tsx:542
1196
+
#: src/Navigation.tsx:543
1197
1197
#: src/screens/Settings/AppIconSettings/index.tsx:67
1198
1198
#: src/screens/Settings/AppIconSettings/SettingsListItem.tsx:18
1199
1199
#: src/screens/Settings/AppIconSettings/SettingsListItem.tsx:23
···
1234
1234
msgid "App passwords"
1235
1235
msgstr ""
1236
1236
1237
-
#: src/Navigation.tsx:353
1237
+
#: src/Navigation.tsx:354
1238
1238
#: src/screens/Settings/AppPasswords.tsx:50
1239
1239
msgid "App Passwords"
1240
1240
msgstr ""
···
1270
1270
msgid "Appeal this decision"
1271
1271
msgstr ""
1272
1272
1273
-
#: src/Navigation.tsx:393
1273
+
#: src/Navigation.tsx:394
1274
1274
#: src/screens/Settings/AppearanceSettings.tsx:73
1275
1275
#: src/screens/Settings/Settings.tsx:230
1276
1276
#: src/screens/Settings/Settings.tsx:233
···
1520
1520
msgid "Blocked accounts"
1521
1521
msgstr ""
1522
1522
1523
-
#: src/Navigation.tsx:194
1523
+
#: src/Navigation.tsx:195
1524
1524
#: src/view/screens/ModerationBlockedAccounts.tsx:104
1525
1525
msgid "Blocked Accounts"
1526
1526
msgstr ""
···
1642
1642
msgid "Browse custom feeds"
1643
1643
msgstr ""
1644
1644
1645
-
#: src/components/FeedInterstitials.tsx:778
1645
+
#: src/components/FeedInterstitials.tsx:777
1646
1646
msgid "Browse more accounts"
1647
1647
msgstr ""
1648
1648
1649
-
#: src/components/FeedInterstitials.tsx:907
1649
+
#: src/components/FeedInterstitials.tsx:905
1650
1650
msgid "Browse more feeds on the Explore page"
1651
1651
msgstr ""
1652
1652
1653
-
#: src/components/FeedInterstitials.tsx:888
1654
-
#: src/components/FeedInterstitials.tsx:891
1653
+
#: src/components/FeedInterstitials.tsx:886
1654
+
#: src/components/FeedInterstitials.tsx:889
1655
1655
msgid "Browse more suggestions"
1656
1656
msgstr ""
1657
1657
1658
-
#: src/components/FeedInterstitials.tsx:916
1658
+
#: src/components/FeedInterstitials.tsx:914
1659
1659
msgid "Browse more suggestions on the Explore page"
1660
1660
msgstr ""
1661
1661
···
1872
1872
msgstr ""
1873
1873
1874
1874
#: src/lib/hooks/useNotificationHandler.ts:99
1875
-
#: src/Navigation.tsx:559
1875
+
#: src/Navigation.tsx:560
1876
1876
#: src/view/shell/bottom-bar/BottomBar.tsx:221
1877
1877
#: src/view/shell/desktop/LeftNav.tsx:608
1878
1878
#: src/view/shell/Drawer.tsx:466
···
1898
1898
msgid "Chat muted"
1899
1899
msgstr ""
1900
1900
1901
-
#: src/Navigation.tsx:569
1901
+
#: src/Navigation.tsx:570
1902
1902
#: src/screens/Messages/components/InboxPreview.tsx:22
1903
1903
msgid "Chat request inbox"
1904
1904
msgstr ""
···
1910
1910
msgstr ""
1911
1911
1912
1912
#: src/components/dms/ConvoMenu.tsx:78
1913
-
#: src/Navigation.tsx:564
1913
+
#: src/Navigation.tsx:565
1914
1914
#: src/screens/Messages/ChatList.tsx:81
1915
1915
#: src/screens/Messages/ChatList.tsx:85
1916
1916
#: src/screens/Messages/ChatList.tsx:380
···
2081
2081
#: src/components/live/EditLiveDialog.tsx:235
2082
2082
#: src/components/NewskieDialog.tsx:167
2083
2083
#: src/components/NewskieDialog.tsx:173
2084
-
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:197
2084
+
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:208
2085
2085
#: src/components/ProgressGuide/FollowDialog.tsx:440
2086
2086
#: src/components/StarterPack/Wizard/WizardEditListDialog.tsx:118
2087
2087
#: src/components/StarterPack/Wizard/WizardEditListDialog.tsx:124
···
2199
2199
msgstr ""
2200
2200
2201
2201
#: src/components/PolicyUpdateOverlay/updates/202508/index.tsx:45
2202
-
#: src/Navigation.tsx:343
2202
+
#: src/Navigation.tsx:344
2203
2203
#: src/view/screens/CommunityGuidelines.tsx:37
2204
2204
msgid "Community Guidelines"
2205
2205
msgstr ""
···
2298
2298
2299
2299
#: src/components/ageAssurance/AgeAssuranceAppealDialog.tsx:93
2300
2300
msgid "Contact us"
2301
+
msgstr ""
2302
+
2303
+
#: src/screens/Settings/FindContactsSettings.tsx:498
2304
+
msgid "Contacts imported"
2301
2305
msgstr ""
2302
2306
2303
2307
#: src/screens/Settings/FindContactsSettings.tsx:471
2304
2308
msgid "Contacts removed"
2305
2309
msgstr ""
2306
2310
2307
-
#: src/screens/Settings/FindContactsSettings.tsx:498
2308
-
msgid "Contacts uploaded"
2309
-
msgstr ""
2310
-
2311
2311
#: src/screens/Settings/ContentAndMediaSettings.tsx:51
2312
2312
msgid "Content & Media"
2313
2313
msgstr ""
···
2317
2317
msgid "Content and media"
2318
2318
msgstr ""
2319
2319
2320
-
#: src/Navigation.tsx:518
2320
+
#: src/Navigation.tsx:519
2321
2321
msgid "Content and Media"
2322
2322
msgstr ""
2323
2323
···
2515
2515
2516
2516
#: src/components/PolicyUpdateOverlay/updates/202508/index.tsx:40
2517
2517
#: src/components/PolicyUpdateOverlay/updates/202508/index.tsx:107
2518
-
#: src/Navigation.tsx:348
2518
+
#: src/Navigation.tsx:349
2519
2519
#: src/view/screens/CopyrightPolicy.tsx:34
2520
2520
msgid "Copyright Policy"
2521
2521
msgstr ""
···
2604
2604
2605
2605
#: src/components/StarterPack/ProfileStarterPacks.tsx:206
2606
2606
#: src/components/StarterPack/ProfileStarterPacks.tsx:315
2607
-
#: src/Navigation.tsx:599
2607
+
#: src/Navigation.tsx:600
2608
2608
msgid "Create a starter pack"
2609
2609
msgstr ""
2610
2610
···
3230
3230
msgid "Edit moderation list"
3231
3231
msgstr ""
3232
3232
3233
-
#: src/Navigation.tsx:358
3233
+
#: src/Navigation.tsx:359
3234
3234
#: src/view/screens/Feeds.tsx:518
3235
3235
msgid "Edit My Feeds"
3236
3236
msgstr ""
···
3272
3272
msgid "Edit who can reply"
3273
3273
msgstr ""
3274
3274
3275
-
#: src/Navigation.tsx:604
3275
+
#: src/Navigation.tsx:605
3276
3276
msgid "Edit your starter pack"
3277
3277
msgstr ""
3278
3278
···
3601
3601
msgid "Explicit sexual images."
3602
3602
msgstr ""
3603
3603
3604
-
#: src/Navigation.tsx:778
3604
+
#: src/Navigation.tsx:780
3605
3605
#: src/screens/Search/Shell.tsx:327
3606
3606
#: src/view/shell/desktop/LeftNav.tsx:690
3607
3607
#: src/view/shell/Drawer.tsx:414
···
3637
3637
msgid "External media may allow websites to collect information about you and your device. No information is sent or requested until you press the \"play\" button."
3638
3638
msgstr ""
3639
3639
3640
-
#: src/Navigation.tsx:377
3640
+
#: src/Navigation.tsx:378
3641
3641
#: src/screens/Settings/ExternalMediaPreferences.tsx:34
3642
3642
msgid "External Media Preferences"
3643
3643
msgstr ""
···
3874
3874
msgid "False information about elections"
3875
3875
msgstr ""
3876
3876
3877
-
#: src/Navigation.tsx:293
3877
+
#: src/Navigation.tsx:294
3878
3878
msgid "Feed"
3879
3879
msgstr ""
3880
3880
···
3915
3915
msgid "Feedback sent to feed operator"
3916
3916
msgstr ""
3917
3917
3918
-
#: src/Navigation.tsx:584
3918
+
#: src/Navigation.tsx:585
3919
3919
#: src/screens/SavedFeeds.tsx:108
3920
3920
#: src/screens/Search/SearchResults.tsx:78
3921
3921
#: src/screens/StarterPack/StarterPackScreen.tsx:190
···
3986
3986
msgid "Find accounts to follow"
3987
3987
msgstr ""
3988
3988
3989
-
#: src/Navigation.tsx:425
3990
-
#: src/Navigation.tsx:626
3989
+
#: src/Navigation.tsx:426
3990
+
#: src/Navigation.tsx:627
3991
3991
msgid "Find Contacts"
3992
3992
msgstr ""
3993
3993
···
4141
4141
msgid "Followed by <0>{0}</0>, <1>{1}</1>, and {2, plural, one {# other} other {# others}}"
4142
4142
msgstr ""
4143
4143
4144
-
#: src/Navigation.tsx:247
4144
+
#: src/Navigation.tsx:248
4145
4145
msgid "Followers of @{0} that you know"
4146
4146
msgstr ""
4147
4147
···
4184
4184
msgid "Following feed preferences"
4185
4185
msgstr ""
4186
4186
4187
-
#: src/Navigation.tsx:364
4187
+
#: src/Navigation.tsx:365
4188
4188
#: src/screens/Settings/FollowingFeedPreferences.tsx:56
4189
4189
msgid "Following Feed Preferences"
4190
4190
msgstr ""
···
4510
4510
msgid "Harming or endangering minors"
4511
4511
msgstr ""
4512
4512
4513
-
#: src/Navigation.tsx:549
4513
+
#: src/Navigation.tsx:550
4514
4514
msgid "Hashtag"
4515
4515
msgstr ""
4516
4516
···
4696
4696
msgid "Hold up! We’re gradually giving access to video, and you’re still waiting in line. Check back soon!"
4697
4697
msgstr ""
4698
4698
4699
-
#: src/Navigation.tsx:773
4700
-
#: src/Navigation.tsx:793
4699
+
#: src/Navigation.tsx:775
4700
+
#: src/Navigation.tsx:795
4701
4701
#: src/view/shell/bottom-bar/BottomBar.tsx:178
4702
4702
#: src/view/shell/desktop/LeftNav.tsx:672
4703
4703
#: src/view/shell/Drawer.tsx:440
···
4853
4853
msgid "Import contacts to find your friends"
4854
4854
msgstr ""
4855
4855
4856
+
#: src/screens/Settings/FindContactsSettings.tsx:507
4857
+
msgid "Imported on {0}"
4858
+
msgstr ""
4859
+
4856
4860
#: src/ageAssurance/components/NoAccessScreen.tsx:204
4857
4861
msgid "In order to provide an age-appropriate experience, we need to know your birthdate. This is a one-time thing, and your data will be kept private."
4858
4862
msgstr ""
···
5081
5085
msgid "Labels on your content"
5082
5086
msgstr ""
5083
5087
5084
-
#: src/Navigation.tsx:220
5088
+
#: src/Navigation.tsx:221
5085
5089
msgid "Language Settings"
5086
5090
msgstr ""
5087
5091
···
5258
5262
msgid "Like 10 posts to train the Discover feed"
5259
5263
msgstr ""
5260
5264
5261
-
#: src/Navigation.tsx:462
5265
+
#: src/Navigation.tsx:463
5262
5266
msgid "Like notifications"
5263
5267
msgstr ""
5264
5268
···
5270
5274
msgid "Like this labeler"
5271
5275
msgstr ""
5272
5276
5273
-
#: src/Navigation.tsx:298
5274
-
#: src/Navigation.tsx:303
5277
+
#: src/Navigation.tsx:299
5278
+
#: src/Navigation.tsx:304
5275
5279
msgid "Liked by"
5276
5280
msgstr ""
5277
5281
···
5306
5310
msgid "Likes of your reposts"
5307
5311
msgstr ""
5308
5312
5309
-
#: src/Navigation.tsx:486
5313
+
#: src/Navigation.tsx:487
5310
5314
msgid "Likes of your reposts notifications"
5311
5315
msgstr ""
5312
5316
···
5319
5323
msgid "Linear"
5320
5324
msgstr ""
5321
5325
5322
-
#: src/Navigation.tsx:253
5326
+
#: src/Navigation.tsx:254
5323
5327
msgid "List"
5324
5328
msgstr ""
5325
5329
···
5399
5403
msgid "List unmuted"
5400
5404
msgstr ""
5401
5405
5402
-
#: src/Navigation.tsx:174
5406
+
#: src/Navigation.tsx:175
5403
5407
#: src/view/screens/Lists.tsx:67
5404
5408
#: src/view/screens/Profile.tsx:233
5405
5409
#: src/view/screens/Profile.tsx:241
···
5464
5468
msgid "Loading..."
5465
5469
msgstr ""
5466
5470
5467
-
#: src/Navigation.tsx:323
5471
+
#: src/Navigation.tsx:324
5468
5472
msgid "Log"
5469
5473
msgstr ""
5470
5474
···
5559
5563
msgid "Media that may be disturbing or inappropriate for some audiences."
5560
5564
msgstr ""
5561
5565
5562
-
#: src/Navigation.tsx:446
5566
+
#: src/Navigation.tsx:447
5563
5567
msgid "Mention notifications"
5564
5568
msgstr ""
5565
5569
···
5612
5616
msgid "Message options"
5613
5617
msgstr ""
5614
5618
5615
-
#: src/Navigation.tsx:788
5619
+
#: src/Navigation.tsx:790
5616
5620
msgid "Messages"
5617
5621
msgstr ""
5618
5622
···
5625
5629
msgid "Minor harassment or bullying"
5626
5630
msgstr ""
5627
5631
5628
-
#: src/Navigation.tsx:510
5632
+
#: src/Navigation.tsx:511
5629
5633
msgid "Miscellaneous notifications"
5630
5634
msgstr ""
5631
5635
···
5633
5637
msgid "Misleading"
5634
5638
msgstr ""
5635
5639
5636
-
#: src/Navigation.tsx:179
5640
+
#: src/Navigation.tsx:180
5637
5641
#: src/screens/Moderation/index.tsx:99
5638
5642
#: src/screens/Settings/Settings.tsx:194
5639
5643
#: src/screens/Settings/Settings.tsx:197
···
5672
5676
msgid "Moderation lists"
5673
5677
msgstr ""
5674
5678
5675
-
#: src/Navigation.tsx:184
5679
+
#: src/Navigation.tsx:185
5676
5680
#: src/view/screens/ModerationModlists.tsx:67
5677
5681
msgid "Moderation Lists"
5678
5682
msgstr ""
···
5681
5685
msgid "moderation settings"
5682
5686
msgstr ""
5683
5687
5684
-
#: src/Navigation.tsx:313
5688
+
#: src/Navigation.tsx:314
5685
5689
msgid "Moderation states"
5686
5690
msgstr ""
5687
5691
···
5804
5808
msgid "Muted accounts"
5805
5809
msgstr ""
5806
5810
5807
-
#: src/Navigation.tsx:189
5811
+
#: src/Navigation.tsx:190
5808
5812
#: src/view/screens/ModerationMutedAccounts.tsx:116
5809
5813
msgid "Muted Accounts"
5810
5814
msgstr ""
···
5903
5907
msgid "New Feature"
5904
5908
msgstr ""
5905
5909
5906
-
#: src/Navigation.tsx:478
5910
+
#: src/Navigation.tsx:479
5907
5911
msgid "New follower notifications"
5908
5912
msgstr ""
5909
5913
···
6209
6213
msgid "Not followed by anyone you're following"
6210
6214
msgstr ""
6211
6215
6212
-
#: src/Navigation.tsx:169
6216
+
#: src/Navigation.tsx:170
6213
6217
#: src/view/screens/Profile.tsx:132
6214
6218
msgid "Not Found"
6215
6219
msgstr ""
···
6235
6239
msgid "Nothing saved yet"
6236
6240
msgstr ""
6237
6241
6238
-
#: src/Navigation.tsx:432
6239
-
#: src/Navigation.tsx:579
6242
+
#: src/Navigation.tsx:433
6243
+
#: src/Navigation.tsx:580
6240
6244
#: src/view/screens/Notifications.tsx:136
6241
6245
msgid "Notification settings"
6242
6246
msgstr ""
···
6249
6253
msgid "Notification Sounds"
6250
6254
msgstr ""
6251
6255
6252
-
#: src/Navigation.tsx:574
6253
-
#: src/Navigation.tsx:783
6256
+
#: src/Navigation.tsx:575
6257
+
#: src/Navigation.tsx:785
6254
6258
#: src/screens/Notifications/ActivityList.tsx:30
6255
6259
#: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:90
6256
6260
#: src/screens/Settings/NotificationSettings/index.tsx:92
···
6392
6396
msgid "Open avatar creator"
6393
6397
msgstr ""
6394
6398
6395
-
#: src/view/com/feeds/ComposerPrompt.tsx:202
6399
+
#: src/view/com/feeds/ComposerPrompt.tsx:200
6396
6400
msgid "Open camera"
6397
6401
msgstr ""
6398
6402
···
6501
6505
msgid "Opens composer"
6502
6506
msgstr ""
6503
6507
6504
-
#: src/view/com/feeds/ComposerPrompt.tsx:203
6508
+
#: src/view/com/feeds/ComposerPrompt.tsx:201
6505
6509
msgid "Opens device camera"
6506
6510
msgstr ""
6507
6511
···
6532
6536
msgid "Opens helpdesk in browser"
6533
6537
msgstr ""
6534
6538
6535
-
#: src/view/com/feeds/ComposerPrompt.tsx:225
6539
+
#: src/view/com/feeds/ComposerPrompt.tsx:223
6536
6540
msgid "Opens image picker"
6537
6541
msgstr ""
6538
6542
···
6675
6679
msgid "Password updated!"
6676
6680
msgstr ""
6677
6681
6678
-
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:43
6682
+
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:44
6679
6683
#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerNative.tsx:137
6680
6684
#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VideoControls.tsx:369
6681
6685
msgid "Pause"
···
6691
6695
msgid "People"
6692
6696
msgstr ""
6693
6697
6694
-
#: src/Navigation.tsx:240
6698
+
#: src/Navigation.tsx:241
6695
6699
msgid "People followed by @{0}"
6696
6700
msgstr ""
6697
6701
6698
-
#: src/Navigation.tsx:233
6702
+
#: src/Navigation.tsx:234
6699
6703
msgid "People following @{0}"
6700
6704
msgstr ""
6701
6705
···
6786
6790
msgid "Pinned to your feeds"
6787
6791
msgstr ""
6788
6792
6789
-
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:43
6793
+
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:44
6790
6794
#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerNative.tsx:137
6791
6795
#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VideoControls.tsx:370
6792
6796
msgid "Play"
···
6805
6809
msgid "Play Video"
6806
6810
msgstr ""
6807
6811
6808
-
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:42
6812
+
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:43
6809
6813
msgid "Plays or pauses the GIF"
6810
6814
msgstr ""
6811
6815
···
6953
6957
msgid "Please sign in as @{0}"
6954
6958
msgstr ""
6955
6959
6960
+
#: src/screens/Settings/FindContactsSettings.tsx:102
6961
+
msgid "Please use the native app to import your contacts."
6962
+
msgstr ""
6963
+
6956
6964
#: src/screens/FindContactsFlowScreen.tsx:71
6957
-
#: src/screens/Settings/FindContactsSettings.tsx:102
6958
6965
msgid "Please use the native app to sync your contacts."
6959
6966
msgstr ""
6960
6967
···
7004
7011
msgid "Post blocked"
7005
7012
msgstr ""
7006
7013
7007
-
#: src/Navigation.tsx:266
7008
-
#: src/Navigation.tsx:273
7009
-
#: src/Navigation.tsx:280
7010
-
#: src/Navigation.tsx:287
7014
+
#: src/Navigation.tsx:267
7015
+
#: src/Navigation.tsx:274
7016
+
#: src/Navigation.tsx:281
7017
+
#: src/Navigation.tsx:288
7011
7018
msgid "Post by @{0}"
7012
7019
msgstr ""
7013
7020
···
7041
7048
msgid "Post interaction settings"
7042
7049
msgstr ""
7043
7050
7044
-
#: src/Navigation.tsx:200
7051
+
#: src/Navigation.tsx:201
7045
7052
#: src/screens/ModerationInteractionSettings/index.tsx:34
7046
7053
msgid "Post Interaction Settings"
7047
7054
msgstr ""
···
7140
7147
msgid "Privacy and security"
7141
7148
msgstr ""
7142
7149
7143
-
#: src/Navigation.tsx:409
7144
-
#: src/Navigation.tsx:417
7150
+
#: src/Navigation.tsx:410
7151
+
#: src/Navigation.tsx:418
7145
7152
#: src/screens/Settings/ActivityPrivacySettings.tsx:40
7146
7153
#: src/screens/Settings/PrivacyAndSecuritySettings.tsx:44
7147
7154
msgid "Privacy and Security"
···
7154
7161
7155
7162
#: src/components/PolicyUpdateOverlay/updates/202508/index.tsx:35
7156
7163
#: src/components/PolicyUpdateOverlay/updates/202508/index.tsx:102
7157
-
#: src/Navigation.tsx:333
7164
+
#: src/Navigation.tsx:334
7158
7165
#: src/screens/Settings/AboutSettings.tsx:92
7159
7166
#: src/screens/Settings/AboutSettings.tsx:95
7160
7167
#: src/view/screens/PrivacyPolicy.tsx:34
···
7253
7260
msgid "QR code saved to your camera roll!"
7254
7261
msgstr ""
7255
7262
7256
-
#: src/Navigation.tsx:454
7263
+
#: src/Navigation.tsx:455
7257
7264
msgid "Quote notifications"
7258
7265
msgstr ""
7259
7266
···
7414
7421
#: src/components/StarterPack/Wizard/WizardListCard.tsx:105
7415
7422
#: src/components/StarterPack/Wizard/WizardListCard.tsx:112
7416
7423
#: src/screens/Bookmarks/index.tsx:266
7417
-
#: src/screens/Settings/Settings.tsx:682
7424
+
#: src/screens/Settings/Settings.tsx:684
7418
7425
#: src/view/com/modals/UserAddRemoveLists.tsx:235
7419
7426
#: src/view/com/posts/PostFeedErrorMessage.tsx:220
7420
7427
msgid "Remove"
···
7428
7435
msgid "Remove {historyItem}"
7429
7436
msgstr ""
7430
7437
7431
-
#: src/screens/Settings/Settings.tsx:661
7432
-
#: src/screens/Settings/Settings.tsx:664
7438
+
#: src/screens/Settings/Settings.tsx:663
7439
+
#: src/screens/Settings/Settings.tsx:666
7433
7440
msgid "Remove account"
7434
7441
msgstr ""
7435
7442
···
7474
7481
msgid "Remove from my feeds"
7475
7482
msgstr ""
7476
7483
7477
-
#: src/screens/Settings/Settings.tsx:674
7484
+
#: src/screens/Settings/Settings.tsx:676
7478
7485
msgid "Remove from quick access?"
7479
7486
msgstr ""
7480
7487
···
7641
7648
msgid "Reply Hidden by You"
7642
7649
msgstr ""
7643
7650
7644
-
#: src/Navigation.tsx:438
7651
+
#: src/Navigation.tsx:439
7645
7652
msgid "Reply notifications"
7646
7653
msgstr ""
7647
7654
···
7756
7763
msgid "Repost ({0, plural, one {# repost} other {# reposts}})"
7757
7764
msgstr ""
7758
7765
7759
-
#: src/Navigation.tsx:470
7766
+
#: src/Navigation.tsx:471
7760
7767
msgid "Repost notifications"
7761
7768
msgstr ""
7762
7769
···
7797
7804
msgid "Reposts of your reposts"
7798
7805
msgstr ""
7799
7806
7800
-
#: src/Navigation.tsx:494
7807
+
#: src/Navigation.tsx:495
7801
7808
msgid "Reposts of your reposts notifications"
7802
7809
msgstr ""
7803
7810
···
8006
8013
msgstr ""
8007
8014
8008
8015
#: src/components/dialogs/nuxs/BookmarksAnnouncement.tsx:143
8009
-
#: src/Navigation.tsx:618
8016
+
#: src/Navigation.tsx:619
8010
8017
#: src/screens/Bookmarks/index.tsx:60
8011
8018
msgid "Saved Posts"
8012
8019
msgstr ""
···
8052
8059
msgid "Search"
8053
8060
msgstr ""
8054
8061
8055
-
#: src/Navigation.tsx:259
8062
+
#: src/Navigation.tsx:260
8056
8063
#: src/screens/Profile/ProfileSearch.tsx:37
8057
8064
msgid "Search @{0}'s posts"
8058
8065
msgstr ""
···
8169
8176
msgstr ""
8170
8177
8171
8178
#: src/components/FeedInterstitials.tsx:730
8172
-
#: src/components/FeedInterstitials.tsx:793
8179
+
#: src/components/FeedInterstitials.tsx:791
8173
8180
msgid "See more"
8174
8181
msgstr ""
8175
8182
···
8448
8455
msgid "Sets email for password reset"
8449
8456
msgstr ""
8450
8457
8451
-
#: src/Navigation.tsx:215
8458
+
#: src/Navigation.tsx:216
8452
8459
#: src/screens/Settings/Settings.tsx:105
8453
8460
#: src/view/shell/desktop/LeftNav.tsx:805
8454
8461
#: src/view/shell/Drawer.tsx:609
···
8593
8600
msgid "Share your favorite feed!"
8594
8601
msgstr ""
8595
8602
8596
-
#: src/Navigation.tsx:318
8603
+
#: src/Navigation.tsx:319
8597
8604
msgid "Shared Preferences Tester"
8598
8605
msgstr ""
8599
8606
···
8603
8610
msgid "Show"
8604
8611
msgstr ""
8605
8612
8606
-
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:178
8613
+
#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:189
8607
8614
msgid "Show alt text"
8608
8615
msgstr ""
8609
8616
···
8842
8849
msgid "Some of your verifications are invalid."
8843
8850
msgstr ""
8844
8851
8845
-
#: src/components/FeedInterstitials.tsx:870
8852
+
#: src/components/FeedInterstitials.tsx:868
8846
8853
msgid "Some other feeds you might like"
8847
8854
msgstr ""
8848
8855
···
8956
8963
msgid "Start chat with {displayName}"
8957
8964
msgstr ""
8958
8965
8959
-
#: src/Navigation.tsx:589
8960
-
#: src/Navigation.tsx:594
8966
+
#: src/Navigation.tsx:590
8967
+
#: src/Navigation.tsx:595
8961
8968
#: src/screens/StarterPack/Wizard/index.tsx:209
8962
8969
msgid "Starter Pack"
8963
8970
msgstr ""
···
9010
9017
msgid "Stored as part of a secure code for matching with others"
9011
9018
msgstr ""
9012
9019
9013
-
#: src/Navigation.tsx:308
9020
+
#: src/Navigation.tsx:309
9014
9021
#: src/screens/Settings/Settings.tsx:466
9015
9022
msgid "Storybook"
9016
9023
msgstr ""
···
9101
9108
msgid "Sunset"
9102
9109
msgstr ""
9103
9110
9104
-
#: src/Navigation.tsx:328
9111
+
#: src/Navigation.tsx:329
9105
9112
#: src/view/screens/Support.tsx:34
9106
9113
#: src/view/screens/Support.tsx:37
9107
9114
msgid "Support"
···
9215
9222
#: src/components/dialogs/BirthDateSettings.tsx:182
9216
9223
#: src/components/PolicyUpdateOverlay/updates/202508/index.tsx:30
9217
9224
#: src/components/PolicyUpdateOverlay/updates/202508/index.tsx:97
9218
-
#: src/Navigation.tsx:338
9225
+
#: src/Navigation.tsx:339
9219
9226
#: src/screens/Settings/AboutSettings.tsx:84
9220
9227
#: src/screens/Settings/AboutSettings.tsx:87
9221
9228
#: src/view/screens/TermsOfService.tsx:34
···
9528
9535
msgid "This appeal will be sent to Bluesky's moderation service."
9529
9536
msgstr ""
9530
9537
9538
+
#: src/screens/PostThread/components/ThreadItemAnchorNoUnauthenticated.tsx:27
9539
+
#: src/screens/PostThread/components/ThreadItemPostNoUnauthenticated.tsx:47
9540
+
msgid "This author has chosen to make their posts visible only to people who are signed in."
9541
+
msgstr ""
9542
+
9531
9543
#: src/screens/Messages/components/MessageListError.tsx:18
9532
9544
msgid "This chat was disconnected"
9533
9545
msgstr ""
···
9737
9749
msgid "This will delete \"{0}\" from your muted words. You can always add it back later."
9738
9750
msgstr ""
9739
9751
9740
-
#: src/screens/Settings/Settings.tsx:676
9752
+
#: src/screens/Settings/Settings.tsx:678
9741
9753
msgid "This will remove @{0} from the quick access list."
9742
9754
msgstr ""
9743
9755
···
9764
9776
msgid "Threaded"
9765
9777
msgstr ""
9766
9778
9767
-
#: src/Navigation.tsx:371
9779
+
#: src/Navigation.tsx:372
9768
9780
msgid "Threads Preferences"
9769
9781
msgstr ""
9770
9782
···
9830
9842
msgid "Top replies first"
9831
9843
msgstr ""
9832
9844
9833
-
#: src/Navigation.tsx:554
9845
+
#: src/Navigation.tsx:555
9834
9846
msgid "Topic"
9835
9847
msgstr ""
9836
9848
···
10200
10212
msgid "Upload from Library"
10201
10213
msgstr ""
10202
10214
10203
-
#: src/screens/Settings/FindContactsSettings.tsx:507
10204
-
msgid "Uploaded on {0}"
10205
-
msgstr ""
10206
-
10207
10215
#: src/lib/api/index.ts:302
10208
10216
msgid "Uploading images..."
10209
10217
msgstr ""
···
10341
10349
msgid "Verification settings"
10342
10350
msgstr ""
10343
10351
10344
-
#: src/Navigation.tsx:208
10352
+
#: src/Navigation.tsx:209
10345
10353
#: src/screens/Moderation/VerificationSettings.tsx:32
10346
10354
msgid "Verification Settings"
10347
10355
msgstr ""
···
10447
10455
msgid "Video failed to process"
10448
10456
msgstr ""
10449
10457
10450
-
#: src/Navigation.tsx:610
10458
+
#: src/Navigation.tsx:611
10451
10459
msgid "Video Feed"
10452
10460
msgstr ""
10453
10461
···
10858
10866
#: src/view/com/auth/SplashScreen.tsx:51
10859
10867
#: src/view/com/auth/SplashScreen.web.tsx:103
10860
10868
#: src/view/com/composer/Composer.tsx:857
10861
-
#: src/view/com/feeds/ComposerPrompt.tsx:193
10869
+
#: src/view/com/feeds/ComposerPrompt.tsx:191
10862
10870
msgid "What's up?"
10863
10871
msgstr ""
10864
10872
···
11278
11286
msgid "You must grant access to your photo library to save a QR code"
11279
11287
msgstr ""
11280
11288
11281
-
#: src/screens/PostThread/components/ThreadItemAnchorNoUnauthenticated.tsx:27
11282
-
#: src/screens/PostThread/components/ThreadItemPostNoUnauthenticated.tsx:47
11283
-
msgid "You must sign in to view this post."
11284
-
msgstr ""
11285
-
11286
11289
#: src/view/com/composer/SelectMediaButton.tsx:442
11287
11290
msgid "You need to allow access to your media library."
11288
11291
msgstr ""
···
11524
11527
msgid "Your full handle will be <0>@{0}</0>"
11525
11528
msgstr ""
11526
11529
11527
-
#: src/Navigation.tsx:526
11530
+
#: src/Navigation.tsx:527
11528
11531
#: src/screens/Search/modules/ExploreInterestsCard.tsx:67
11529
11532
#: src/screens/Settings/ContentAndMediaSettings.tsx:92
11530
11533
#: src/screens/Settings/ContentAndMediaSettings.tsx:95
+2
-2
src/screens/Messages/components/MessageInput.tsx
+2
-2
src/screens/Messages/components/MessageInput.tsx
···
14
14
import {useSafeAreaInsets} from 'react-native-safe-area-context'
15
15
import {msg} from '@lingui/macro'
16
16
import {useLingui} from '@lingui/react'
17
-
import Graphemer from 'graphemer'
17
+
import {countGraphemes} from 'unicode-segmenter/grapheme'
18
18
19
19
import {HITSLOP_10, MAX_DM_GRAPHEME_LENGTH} from '#/lib/constants'
20
20
import {useHaptics} from '#/lib/haptics'
···
78
78
if (!hasEmbed && message.trim() === '') {
79
79
return
80
80
}
81
-
if (new Graphemer().countGraphemes(message) > MAX_DM_GRAPHEME_LENGTH) {
81
+
if (countGraphemes(message) > MAX_DM_GRAPHEME_LENGTH) {
82
82
Toast.show(_(msg`Message is too long`), 'xmark')
83
83
return
84
84
}
+2
-2
src/screens/Messages/components/MessageInput.web.tsx
+2
-2
src/screens/Messages/components/MessageInput.web.tsx
···
2
2
import {Pressable, View} from 'react-native'
3
3
import {msg} from '@lingui/macro'
4
4
import {useLingui} from '@lingui/react'
5
-
import Graphemer from 'graphemer'
6
5
import {flushSync} from 'react-dom'
7
6
import TextareaAutosize from 'react-textarea-autosize'
7
+
import {countGraphemes} from 'unicode-segmenter/grapheme'
8
8
9
9
import {isSafari, isTouchDevice} from '#/lib/browser'
10
10
import {MAX_DM_GRAPHEME_LENGTH} from '#/lib/constants'
···
59
59
if (!hasEmbed && message.trim() === '') {
60
60
return
61
61
}
62
-
if (new Graphemer().countGraphemes(message) > MAX_DM_GRAPHEME_LENGTH) {
62
+
if (countGraphemes(message) > MAX_DM_GRAPHEME_LENGTH) {
63
63
Toast.show(_(msg`Message is too long`), 'xmark')
64
64
return
65
65
}
+1
-1
src/screens/ModerationInteractionSettings/index.tsx
+1
-1
src/screens/ModerationInteractionSettings/index.tsx
···
2
2
import {View} from 'react-native'
3
3
import {msg, Trans} from '@lingui/macro'
4
4
import {useLingui} from '@lingui/react'
5
-
import deepEqual from 'lodash.isequal'
5
+
import deepEqual from 'fast-deep-equal'
6
6
7
7
import {logger} from '#/logger'
8
8
import {usePostInteractionSettingsMutation} from '#/state/queries/post-interaction-settings'
+4
-1
src/screens/PostThread/components/ThreadItemAnchorNoUnauthenticated.tsx
+4
-1
src/screens/PostThread/components/ThreadItemAnchorNoUnauthenticated.tsx
···
24
24
25
25
<View style={[a.py_sm]}>
26
26
<Text style={[a.text_xl, a.italic, t.atoms.text_contrast_medium]}>
27
-
<Trans>You must sign in to view this post.</Trans>
27
+
<Trans>
28
+
This author has chosen to make their posts visible only to people
29
+
who are signed in.
30
+
</Trans>
28
31
</Text>
29
32
</View>
30
33
</View>
+4
-1
src/screens/PostThread/components/ThreadItemPostNoUnauthenticated.tsx
+4
-1
src/screens/PostThread/components/ThreadItemPostNoUnauthenticated.tsx
···
44
44
</Skele.Circle>
45
45
46
46
<Text style={[a.text_md, a.italic, t.atoms.text_contrast_medium]}>
47
-
<Trans>You must sign in to view this post.</Trans>
47
+
<Trans>
48
+
This author has chosen to make their posts visible only to people
49
+
who are signed in.
50
+
</Trans>
48
51
</Text>
49
52
</Skele.Row>
50
53
<View
+3
-3
src/screens/Profile/Header/EditProfileDialog.tsx
+3
-3
src/screens/Profile/Header/EditProfileDialog.tsx
···
6
6
7
7
import {urls} from '#/lib/constants'
8
8
import {cleanError} from '#/lib/strings/errors'
9
-
import {useWarnMaxGraphemeCount} from '#/lib/strings/helpers'
9
+
import {isOverMaxGraphemeCount} from '#/lib/strings/helpers'
10
10
import {logger} from '#/logger'
11
11
import {type ImageMeta} from '#/state/gallery'
12
12
import {useEnableSquareAvatars} from '#/state/preferences/enable-square-avatars'
···
208
208
_,
209
209
])
210
210
211
-
const displayNameTooLong = useWarnMaxGraphemeCount({
211
+
const displayNameTooLong = isOverMaxGraphemeCount({
212
212
text: displayName,
213
213
maxCount: DISPLAY_NAME_MAX_GRAPHEMES,
214
214
})
215
-
const descriptionTooLong = useWarnMaxGraphemeCount({
215
+
const descriptionTooLong = isOverMaxGraphemeCount({
216
216
text: description,
217
217
maxCount: DESCRIPTION_MAX_GRAPHEMES,
218
218
})
+4
-4
src/screens/Settings/FindContactsSettings.tsx
+4
-4
src/screens/Settings/FindContactsSettings.tsx
···
99
99
) : (
100
100
<ErrorScreen
101
101
title={_(msg`Not available on this platform.`)}
102
-
message={_(msg`Please use the native app to sync your contacts.`)}
102
+
message={_(msg`Please use the native app to import your contacts.`)}
103
103
/>
104
104
)}
105
105
</Layout.Screen>
···
429
429
<Text style={[a.text_md, a.font_semi_bold]}>
430
430
<Plural
431
431
value={numMatches}
432
-
one="1 contact found"
432
+
one="# contact found"
433
433
other="# contacts found"
434
434
/>
435
435
</Text>
···
495
495
<View style={[a.px_xl, a.py_xl, a.gap_4xl]}>
496
496
<View style={[a.gap_xs, a.align_start]}>
497
497
<Text style={[a.text_md, a.font_semi_bold]}>
498
-
<Trans>Contacts uploaded</Trans>
498
+
<Trans>Contacts imported</Trans>
499
499
</Text>
500
500
<View style={[a.gap_2xs]}>
501
501
<Text
···
505
505
<Text
506
506
style={[a.text_sm, a.leading_snug, t.atoms.text_contrast_medium]}>
507
507
<Trans>
508
-
Uploaded on{' '}
508
+
Imported on{' '}
509
509
{i18n.date(new Date(syncedAt), {
510
510
dateStyle: 'long',
511
511
})}
+3
-1
src/screens/Settings/Settings.tsx
+3
-1
src/screens/Settings/Settings.tsx
···
644
644
) : (
645
645
<View style={[{width: 28}]} />
646
646
)}
647
-
<SettingsList.ItemText>
647
+
<SettingsList.ItemText
648
+
numberOfLines={1}
649
+
style={[a.pr_2xl, a.leading_snug]}>
648
650
{sanitizeHandle(account.handle, '@')}
649
651
</SettingsList.ItemText>
650
652
{pendingDid === account.did && <SettingsList.ItemIcon icon={Loader} />}
+9
-14
src/screens/Takendown.tsx
+9
-14
src/screens/Takendown.tsx
···
1
-
import {useMemo, useState} from 'react'
1
+
import {useState} from 'react'
2
2
import {View} from 'react-native'
3
3
import {KeyboardAwareScrollView} from 'react-native-keyboard-controller'
4
4
import {useSafeAreaInsets} from 'react-native-safe-area-context'
···
6
6
import {msg, Trans} from '@lingui/macro'
7
7
import {useLingui} from '@lingui/react'
8
8
import {useMutation} from '@tanstack/react-query'
9
-
import Graphemer from 'graphemer'
9
+
import {countGraphemes} from 'unicode-segmenter/grapheme'
10
10
11
11
import {
12
12
BLUESKY_MOD_SERVICE_HEADERS,
···
37
37
const agent = useAgent()
38
38
const [isAppealling, setIsAppealling] = useState(false)
39
39
const [reason, setReason] = useState('')
40
-
const graphemer = useMemo(() => new Graphemer(), [])
41
40
42
-
const reasonGraphemeLength = useMemo(() => {
43
-
return graphemer.countGraphemes(reason)
44
-
}, [graphemer, reason])
41
+
const reasonGraphemeLength = countGraphemes(reason)
42
+
const isOverMaxLength =
43
+
reasonGraphemeLength > MAX_REPORT_REASON_GRAPHEME_LENGTH
45
44
46
45
const {
47
46
mutate: submitAppeal,
···
72
71
const primaryBtn =
73
72
isAppealling && !isSuccess ? (
74
73
<Button
75
-
variant="solid"
76
74
color="primary"
77
75
size="large"
78
76
label={_(msg`Submit appeal`)}
79
77
onPress={() => submitAppeal(reason)}
80
-
disabled={
81
-
isPending || reasonGraphemeLength > MAX_REPORT_REASON_GRAPHEME_LENGTH
82
-
}>
78
+
disabled={isPending || isOverMaxLength}>
83
79
<ButtonText>
84
80
<Trans>Submit Appeal</Trans>
85
81
</ButtonText>
···
87
83
</Button>
88
84
) : (
89
85
<Button
90
-
variant="solid"
91
86
size="large"
92
87
color="secondary_inverted"
93
88
label={_(msg`Sign out`)}
···
204
199
<Text
205
200
style={[
206
201
a.text_md,
207
-
a.leading_normal,
202
+
a.leading_snug,
208
203
{color: t.palette.negative_500},
209
204
a.mt_lg,
210
205
]}>
···
213
208
)}
214
209
</View>
215
210
) : (
216
-
<P style={[t.atoms.text_contrast_medium]}>
211
+
<P style={[t.atoms.text_contrast_medium, a.leading_snug]}>
217
212
<Trans>
218
213
Your account was found to be in violation of the{' '}
219
214
<SimpleInlineLinkText
220
215
label={_(msg`Bluesky Social Terms of Service`)}
221
216
to="https://bsky.social/about/support/tos"
222
-
style={[a.text_md, a.leading_normal]}>
217
+
style={[a.text_md, a.leading_snug]}>
223
218
Bluesky Social Terms of Service
224
219
</SimpleInlineLinkText>
225
220
. You have been sent an email outlining the specific violation
+3
-5
src/view/com/composer/text-input/TextInput.web.tsx
+3
-5
src/view/com/composer/text-input/TextInput.web.tsx
···
20
20
import {generateJSON} from '@tiptap/html'
21
21
import {Fragment, Node, Slice} from '@tiptap/pm/model'
22
22
import {EditorContent, type JSONContent, useEditor} from '@tiptap/react'
23
-
import Graphemer from 'graphemer'
23
+
import {splitGraphemes} from 'unicode-segmenter/grapheme'
24
24
25
25
import {useColorSchemeStyle} from '#/lib/hooks/useColorSchemeStyle'
26
26
import {blobToDataUri, isUriImage} from '#/lib/media/util'
···
218
218
// all the lines get mushed together -sfn
219
219
'\n',
220
220
)
221
-
const graphemes = new Graphemer().splitGraphemes(textBefore)
221
+
const graphemes = [...splitGraphemes(textBefore)]
222
222
223
223
if (graphemes.length > 0) {
224
224
const lastGrapheme = graphemes[graphemes.length - 1]
···
289
289
290
290
markdownFacets.push({
291
291
index: {byteStart, byteEnd},
292
-
features: [
293
-
{ $type: 'app.bsky.richtext.facet#link', uri: validUrl },
294
-
],
292
+
features: [{$type: 'app.bsky.richtext.facet#link', uri: validUrl}],
295
293
})
296
294
}
297
295
-36
src/view/com/composer/text-input/hooks/useGrapheme.tsx
-36
src/view/com/composer/text-input/hooks/useGrapheme.tsx
···
1
-
import {useCallback, useMemo} from 'react'
2
-
import Graphemer from 'graphemer'
3
-
4
-
export const useGrapheme = () => {
5
-
const splitter = useMemo(() => new Graphemer(), [])
6
-
7
-
const getGraphemeString = useCallback(
8
-
(name: string, length: number) => {
9
-
let remainingCharacters = 0
10
-
11
-
if (name.length > length) {
12
-
const graphemes = splitter.splitGraphemes(name)
13
-
14
-
if (graphemes.length > length) {
15
-
remainingCharacters = 0
16
-
name = `${graphemes.slice(0, length).join('')}…`
17
-
} else {
18
-
remainingCharacters = length - graphemes.length
19
-
name = graphemes.join('')
20
-
}
21
-
} else {
22
-
remainingCharacters = length - name.length
23
-
}
24
-
25
-
return {
26
-
name,
27
-
remainingCharacters,
28
-
}
29
-
},
30
-
[splitter],
31
-
)
32
-
33
-
return {
34
-
getGraphemeString,
35
-
}
36
-
}
+1
-1
src/view/com/composer/threadgate/ThreadgateBtn.tsx
+1
-1
src/view/com/composer/threadgate/ThreadgateBtn.tsx
···
4
4
import {type AppBskyFeedPostgate} from '@atproto/api'
5
5
import {msg, Trans} from '@lingui/macro'
6
6
import {useLingui} from '@lingui/react'
7
-
import deepEqual from 'lodash.isequal'
7
+
import deepEqual from 'fast-deep-equal'
8
8
9
9
import {isNetworkError} from '#/lib/strings/errors'
10
10
import {logger} from '#/logger'
+22
-5
src/view/com/composer/videos/SubtitleDialog.tsx
+22
-5
src/view/com/composer/videos/SubtitleDialog.tsx
···
4
4
import {useLingui} from '@lingui/react'
5
5
6
6
import {MAX_ALT_TEXT} from '#/lib/constants'
7
-
import {useEnforceMaxGraphemeCount} from '#/lib/strings/helpers'
7
+
import {isOverMaxGraphemeCount} from '#/lib/strings/helpers'
8
8
import {LANGUAGES} from '#/locale/languages'
9
9
import {isWeb} from '#/platform/detection'
10
10
import {useLanguagePrefs} from '#/state/preferences'
···
73
73
const control = Dialog.useDialogContext()
74
74
const {_} = useLingui()
75
75
const t = useTheme()
76
-
const enforceLen = useEnforceMaxGraphemeCount()
77
76
const {primaryLanguage} = useLanguagePrefs()
78
77
79
78
const [altText, setAltText] = useState(defaultAltText)
···
94
93
)
95
94
96
95
const subtitleMissingLanguage = captions.some(sub => sub.lang === '')
96
+
97
+
const isOverMaxLength = isOverMaxGraphemeCount({
98
+
text: altText,
99
+
maxCount: MAX_ALT_TEXT,
100
+
})
97
101
98
102
return (
99
103
<Dialog.ScrollableInner label={_(msg`Video settings`)}>
···
101
105
<Text style={[a.text_xl, a.font_semi_bold, a.leading_tight]}>
102
106
<Trans>Alt text</Trans>
103
107
</Text>
104
-
<TextField.Root>
108
+
<TextField.Root isInvalid={isOverMaxLength}>
105
109
<Dialog.Input
106
110
label={_(msg`Alt text`)}
107
111
placeholder={_(msg`Add alt text (optional)`)}
108
112
value={altText}
109
-
onChangeText={evt => setAltText(enforceLen(evt, MAX_ALT_TEXT))}
113
+
onChangeText={setAltText}
110
114
maxLength={MAX_ALT_TEXT * 10}
111
115
multiline
112
116
style={{maxHeight: 300}}
···
119
123
/>
120
124
</TextField.Root>
121
125
126
+
{isOverMaxLength && (
127
+
<Text
128
+
style={[
129
+
a.text_md,
130
+
{color: t.palette.negative_500},
131
+
a.leading_snug,
132
+
a.mt_md,
133
+
]}>
134
+
<Trans>Alt text must be less than {MAX_ALT_TEXT} characters.</Trans>
135
+
</Text>
136
+
)}
137
+
122
138
{isWeb && (
123
139
<>
124
140
<View
···
174
190
saveAltText(altText)
175
191
control.close()
176
192
}}
177
-
style={a.mt_lg}>
193
+
style={a.mt_lg}
194
+
disabled={isOverMaxLength}>
178
195
<ButtonText>
179
196
<Trans>Done</Trans>
180
197
</ButtonText>
+5
-7
src/view/com/feeds/ComposerPrompt.tsx
+5
-7
src/view/com/feeds/ComposerPrompt.tsx
···
1
1
import {useCallback, useState} from 'react'
2
2
import {Keyboard, Pressable, View} from 'react-native'
3
-
import {msg} from '@lingui/macro'
3
+
import {msg, Trans} from '@lingui/macro'
4
4
import {useLingui} from '@lingui/react'
5
5
6
6
import {useOpenComposer} from '#/lib/hooks/useOpenComposer'
···
168
168
<SubtleHover hover={hover} />
169
169
<UserAvatar
170
170
avatar={profile.avatar}
171
-
size={40}
171
+
size={42}
172
172
type={profile.associated?.labeler ? 'labeler' : 'user'}
173
173
/>
174
174
<View
···
184
184
]}>
185
185
<Text
186
186
style={[
187
-
t.atoms.text_contrast_low,
187
+
t.atoms.text_contrast_medium,
188
188
a.text_md,
189
-
{
190
-
includeFontPadding: false,
191
-
},
189
+
{includeFontPadding: false},
192
190
]}>
193
-
{_(msg`What's up?`)}
191
+
<Trans>What's up?</Trans>
194
192
</Text>
195
193
<View style={[a.flex_row, a.gap_md]}>
196
194
{isNative && (
+3
src/view/shell/BlockDrawerGesture.web.tsx
+3
src/view/shell/BlockDrawerGesture.web.tsx
+8
-3
src/view/shell/index.tsx
+8
-3
src/view/shell/index.tsx
···
91
91
}
92
92
}, [dedupe, navigation])
93
93
94
+
const drawerLayout = useCallback(
95
+
({children}: {children: React.ReactNode}) => (
96
+
<DrawerLayout>{children}</DrawerLayout>
97
+
),
98
+
[],
99
+
)
100
+
94
101
return (
95
102
<>
96
103
<View style={[a.h_full]}>
97
104
<ErrorBoundary
98
105
style={{paddingTop: insets.top, paddingBottom: insets.bottom}}>
99
-
<DrawerLayout>
100
-
<TabsNavigator />
101
-
</DrawerLayout>
106
+
<TabsNavigator layout={drawerLayout} />
102
107
</ErrorBoundary>
103
108
</View>
104
109
+39
-59
src/view/shell/index.web.tsx
+39
-59
src/view/shell/index.web.tsx
···
1
-
import {useEffect, useLayoutEffect, useState} from 'react'
1
+
import {useCallback, useEffect, useLayoutEffect, useState} from 'react'
2
2
import {StyleSheet, TouchableWithoutFeedback, View} from 'react-native'
3
3
import {msg} from '@lingui/macro'
4
4
import {useLingui} from '@lingui/react'
···
6
6
import {RemoveScrollBar} from 'react-remove-scroll-bar'
7
7
8
8
import {useIntentHandler} from '#/lib/hooks/useIntentHandler'
9
-
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
10
9
import {type NavigationProp} from '#/lib/routes/types'
11
10
import {useSession} from '#/state/session'
12
11
import {useIsDrawerOpen, useSetDrawerOpen} from '#/state/shell'
···
17
16
import {ErrorBoundary} from '#/view/com/util/ErrorBoundary'
18
17
import {Deactivated} from '#/screens/Deactivated'
19
18
import {Takendown} from '#/screens/Takendown'
20
-
import {atoms as a, select, useTheme} from '#/alf'
19
+
import {atoms as a, select, useBreakpoints, useTheme} from '#/alf'
21
20
import {AgeAssuranceRedirectDialog} from '#/components/ageAssurance/AgeAssuranceRedirectDialog'
22
21
import {EmailDialog} from '#/components/dialogs/EmailDialog'
23
22
import {LinkWarningDialog} from '#/components/dialogs/LinkWarning'
···
39
38
import {DrawerContent} from './Drawer'
40
39
41
40
function ShellInner() {
42
-
const t = useTheme()
43
-
const isDrawerOpen = useIsDrawerOpen()
44
-
const setDrawerOpen = useSetDrawerOpen()
45
-
const {isDesktop} = useWebMediaQueries()
46
41
const navigator = useNavigation<NavigationProp>()
47
42
const closeAllActiveElements = useCloseAllActiveElements()
48
-
const {_} = useLingui()
49
-
const showDrawer = !isDesktop && isDrawerOpen
50
-
const [showDrawerDelayedExit, setShowDrawerDelayedExit] = useState(showDrawer)
51
43
const {state: policyUpdateState} = usePolicyUpdateContext()
52
44
const welcomeModalControl = useWelcomeModal()
53
45
54
-
useLayoutEffect(() => {
55
-
const rootElement = document.documentElement
56
-
rootElement.className = `html`
57
-
rootElement.style.setProperty(
58
-
'background',
59
-
`${t.atoms.bg.backgroundColor}`,
60
-
'important',
61
-
)
62
-
}, [t.atoms.bg.backgroundColor, t.name])
63
-
64
-
useLayoutEffect(() => {
65
-
const color = t.palette.primary_500
66
-
67
-
const styleId = 'prosemirror-mention-color'
68
-
let style = document.getElementById(styleId) as HTMLStyleElement | null
69
-
70
-
if (!style) {
71
-
style = document.createElement('style')
72
-
style.id = styleId
73
-
document.head.appendChild(style)
74
-
}
75
-
76
-
style.innerHTML = `
77
-
.ProseMirror .mention {
78
-
color: ${color} !important;
79
-
}
80
-
.ProseMirror a,
81
-
.ProseMirror .autolink {
82
-
color: ${color} !important;
83
-
}
84
-
`
85
-
}, [t.palette.primary_500])
86
-
87
-
useLayoutEffect(() => {
88
-
if (showDrawer !== showDrawerDelayedExit) {
89
-
if (showDrawer) {
90
-
setShowDrawerDelayedExit(true)
91
-
} else {
92
-
const timeout = setTimeout(() => {
93
-
setShowDrawerDelayedExit(false)
94
-
}, 160)
95
-
return () => clearTimeout(timeout)
96
-
}
97
-
}
98
-
}, [showDrawer, showDrawerDelayedExit])
99
-
100
46
useComposerKeyboardShortcut()
101
47
useIntentHandler()
102
48
···
107
53
return unsubscribe
108
54
}, [navigator, closeAllActiveElements])
109
55
56
+
const drawerLayout = useCallback(
57
+
({children}: {children: React.ReactNode}) => (
58
+
<DrawerLayout>{children}</DrawerLayout>
59
+
),
60
+
[],
61
+
)
110
62
return (
111
63
<>
112
64
<ErrorBoundary>
113
-
<FlatNavigator />
65
+
<FlatNavigator layout={drawerLayout} />
114
66
</ErrorBoundary>
115
67
<Composer winHeight={0} />
116
68
<ModalsContainer />
···
133
85
</>
134
86
)}
135
87
88
+
<PolicyUpdateOverlayPortalOutlet />
89
+
</>
90
+
)
91
+
}
92
+
93
+
function DrawerLayout({children}: {children: React.ReactNode}) {
94
+
const t = useTheme()
95
+
const isDrawerOpen = useIsDrawerOpen()
96
+
const setDrawerOpen = useSetDrawerOpen()
97
+
const {gtTablet} = useBreakpoints()
98
+
const {_} = useLingui()
99
+
const showDrawer = !gtTablet && isDrawerOpen
100
+
const [showDrawerDelayedExit, setShowDrawerDelayedExit] = useState(showDrawer)
101
+
102
+
useLayoutEffect(() => {
103
+
if (showDrawer !== showDrawerDelayedExit) {
104
+
if (showDrawer) {
105
+
setShowDrawerDelayedExit(true)
106
+
} else {
107
+
const timeout = setTimeout(() => {
108
+
setShowDrawerDelayedExit(false)
109
+
}, 160)
110
+
return () => clearTimeout(timeout)
111
+
}
112
+
}
113
+
}, [showDrawer, showDrawerDelayedExit])
114
+
115
+
return (
116
+
<>
117
+
{children}
136
118
{showDrawerDelayedExit && (
137
119
<>
138
120
<RemoveScrollBar />
···
170
152
</TouchableWithoutFeedback>
171
153
</>
172
154
)}
173
-
174
-
<PolicyUpdateOverlayPortalOutlet />
175
155
</>
176
156
)
177
157
}
+1
webpack.config.js
+1
webpack.config.js
···
27
27
'unicode-segmenter/grapheme': require
28
28
.resolve('unicode-segmenter/grapheme')
29
29
.replace(/\.cjs$/, '.js'),
30
+
'react-native-gesture-handler': false, // RNGH should not be used on web, so let's cause a build error if it sneaks in
30
31
})
31
32
config.module.rules = [
32
33
...(config.module.rules || []),
+97
-450
yarn.lock
+97
-450
yarn.lock
···
1483
1483
js-tokens "^4.0.0"
1484
1484
picocolors "^1.0.0"
1485
1485
1486
-
"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9":
1486
+
"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9":
1487
1487
version "7.22.9"
1488
1488
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730"
1489
1489
integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==
···
1719
1719
"@babel/traverse" "^7.25.9"
1720
1720
"@babel/types" "^7.25.9"
1721
1721
1722
-
"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.10", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6":
1722
+
"@babel/helper-compilation-targets@^7.22.10", "@babel/helper-compilation-targets@^7.22.6":
1723
1723
version "7.22.10"
1724
1724
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024"
1725
1725
integrity sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==
···
1830
1830
"@babel/traverse" "^7.28.3"
1831
1831
semver "^6.3.1"
1832
1832
1833
-
"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5":
1833
+
"@babel/helper-create-regexp-features-plugin@^7.18.6":
1834
1834
version "7.22.9"
1835
1835
resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6"
1836
1836
integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==
···
1848
1848
regexpu-core "^6.1.1"
1849
1849
semver "^6.3.1"
1850
1850
1851
-
"@babel/helper-define-polyfill-provider@^0.4.2":
1852
-
version "0.4.2"
1853
-
resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7"
1854
-
integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==
1855
-
dependencies:
1856
-
"@babel/helper-compilation-targets" "^7.22.6"
1857
-
"@babel/helper-plugin-utils" "^7.22.5"
1858
-
debug "^4.1.1"
1859
-
lodash.debounce "^4.0.8"
1860
-
resolve "^1.14.2"
1861
-
1862
1851
"@babel/helper-define-polyfill-provider@^0.6.2", "@babel/helper-define-polyfill-provider@^0.6.3":
1863
1852
version "0.6.3"
1864
1853
resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz#f4f2792fae2ef382074bc2d713522cf24e6ddb21"
···
1870
1859
lodash.debounce "^4.0.8"
1871
1860
resolve "^1.14.2"
1872
1861
1873
-
"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.5":
1874
-
version "7.22.5"
1875
-
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98"
1876
-
integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==
1877
-
1878
1862
"@babel/helper-environment-visitor@^7.22.20":
1879
1863
version "7.22.20"
1880
1864
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167"
1881
1865
integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
1866
+
1867
+
"@babel/helper-environment-visitor@^7.22.5":
1868
+
version "7.22.5"
1869
+
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98"
1870
+
integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==
1882
1871
1883
1872
"@babel/helper-environment-visitor@^7.24.6":
1884
1873
version "7.24.6"
···
2060
2049
dependencies:
2061
2050
"@babel/types" "^7.27.1"
2062
2051
2063
-
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0":
2052
+
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0":
2064
2053
version "7.22.5"
2065
2054
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295"
2066
2055
integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
···
2080
2069
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c"
2081
2070
integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==
2082
2071
2083
-
"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.5":
2084
-
version "7.22.9"
2085
-
resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82"
2086
-
integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==
2087
-
dependencies:
2088
-
"@babel/helper-annotate-as-pure" "^7.22.5"
2089
-
"@babel/helper-environment-visitor" "^7.22.5"
2090
-
"@babel/helper-wrap-function" "^7.22.9"
2091
-
2092
2072
"@babel/helper-remap-async-to-generator@^7.25.9":
2093
2073
version "7.25.9"
2094
2074
resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92"
···
2098
2078
"@babel/helper-wrap-function" "^7.25.9"
2099
2079
"@babel/traverse" "^7.25.9"
2100
2080
2101
-
"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9":
2081
+
"@babel/helper-replace-supers@^7.22.9":
2102
2082
version "7.22.9"
2103
2083
resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779"
2104
2084
integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==
···
2163
2143
"@babel/traverse" "^7.25.9"
2164
2144
"@babel/types" "^7.25.9"
2165
2145
2166
-
"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5":
2146
+
"@babel/helper-skip-transparent-expression-wrappers@^7.22.5":
2167
2147
version "7.22.5"
2168
2148
resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847"
2169
2149
integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==
···
2287
2267
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72"
2288
2268
integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
2289
2269
2290
-
"@babel/helper-wrap-function@^7.22.9":
2291
-
version "7.22.10"
2292
-
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz#d845e043880ed0b8c18bd194a12005cb16d2f614"
2293
-
integrity sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==
2294
-
dependencies:
2295
-
"@babel/helper-function-name" "^7.22.5"
2296
-
"@babel/template" "^7.22.5"
2297
-
"@babel/types" "^7.22.10"
2298
-
2299
2270
"@babel/helper-wrap-function@^7.25.9":
2300
2271
version "7.25.9"
2301
2272
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0"
···
2450
2421
dependencies:
2451
2422
"@babel/helper-plugin-utils" "^7.25.9"
2452
2423
"@babel/traverse" "^7.25.9"
2453
-
2454
-
"@babel/plugin-proposal-async-generator-functions@^7.0.0":
2455
-
version "7.20.7"
2456
-
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326"
2457
-
integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==
2458
-
dependencies:
2459
-
"@babel/helper-environment-visitor" "^7.18.9"
2460
-
"@babel/helper-plugin-utils" "^7.20.2"
2461
-
"@babel/helper-remap-async-to-generator" "^7.18.9"
2462
-
"@babel/plugin-syntax-async-generators" "^7.8.4"
2463
-
2464
-
"@babel/plugin-proposal-class-properties@^7.18.0":
2465
-
version "7.18.6"
2466
-
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3"
2467
-
integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==
2468
-
dependencies:
2469
-
"@babel/helper-create-class-features-plugin" "^7.18.6"
2470
-
"@babel/helper-plugin-utils" "^7.18.6"
2471
2424
2472
2425
"@babel/plugin-proposal-decorators@^7.12.9":
2473
2426
version "7.22.10"
···
2480
2433
"@babel/helper-split-export-declaration" "^7.22.6"
2481
2434
"@babel/plugin-syntax-decorators" "^7.22.10"
2482
2435
2483
-
"@babel/plugin-proposal-export-default-from@^7.0.0":
2484
-
version "7.22.5"
2485
-
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.22.5.tgz#825924eda1fad382c3de4db6fe1711b6fa03362f"
2486
-
integrity sha512-UCe1X/hplyv6A5g2WnQ90tnHRvYL29dabCWww92lO7VdfMVTVReBTRrhiMrKQejHD9oVkdnRdwYuzUZkBVQisg==
2487
-
dependencies:
2488
-
"@babel/helper-plugin-utils" "^7.22.5"
2489
-
"@babel/plugin-syntax-export-default-from" "^7.22.5"
2490
-
2491
2436
"@babel/plugin-proposal-export-default-from@^7.24.7":
2492
2437
version "7.25.9"
2493
2438
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.25.9.tgz#52702be6ef8367fc8f18b8438278332beeb8f87c"
···
2495
2440
dependencies:
2496
2441
"@babel/helper-plugin-utils" "^7.25.9"
2497
2442
2498
-
"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0":
2499
-
version "7.18.6"
2500
-
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1"
2501
-
integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==
2502
-
dependencies:
2503
-
"@babel/helper-plugin-utils" "^7.18.6"
2504
-
"@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
2505
-
2506
-
"@babel/plugin-proposal-numeric-separator@^7.0.0":
2507
-
version "7.18.6"
2508
-
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75"
2509
-
integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==
2510
-
dependencies:
2511
-
"@babel/helper-plugin-utils" "^7.18.6"
2512
-
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
2513
-
2514
-
"@babel/plugin-proposal-object-rest-spread@^7.20.0":
2515
-
version "7.20.7"
2516
-
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a"
2517
-
integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==
2518
-
dependencies:
2519
-
"@babel/compat-data" "^7.20.5"
2520
-
"@babel/helper-compilation-targets" "^7.20.7"
2521
-
"@babel/helper-plugin-utils" "^7.20.2"
2522
-
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
2523
-
"@babel/plugin-transform-parameters" "^7.20.7"
2524
-
2525
-
"@babel/plugin-proposal-optional-catch-binding@^7.0.0":
2526
-
version "7.18.6"
2527
-
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb"
2528
-
integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==
2529
-
dependencies:
2530
-
"@babel/helper-plugin-utils" "^7.18.6"
2531
-
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
2532
-
2533
-
"@babel/plugin-proposal-optional-chaining@^7.20.0":
2534
-
version "7.21.0"
2535
-
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea"
2536
-
integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==
2537
-
dependencies:
2538
-
"@babel/helper-plugin-utils" "^7.20.2"
2539
-
"@babel/helper-skip-transparent-expression-wrappers" "^7.20.0"
2540
-
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
2541
-
2542
2443
"@babel/plugin-proposal-private-methods@^7.18.6":
2543
2444
version "7.18.6"
2544
2445
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea"
···
2580
2481
dependencies:
2581
2482
"@babel/helper-plugin-utils" "^7.22.5"
2582
2483
2583
-
"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3":
2484
+
"@babel/plugin-syntax-dynamic-import@^7.8.3":
2584
2485
version "7.8.3"
2585
2486
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
2586
2487
integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
2587
2488
dependencies:
2588
2489
"@babel/helper-plugin-utils" "^7.8.0"
2589
2490
2590
-
"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.22.5":
2591
-
version "7.22.5"
2592
-
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.22.5.tgz#ac3a24b362a04415a017ab96b9b4483d0e2a6e44"
2593
-
integrity sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ==
2594
-
dependencies:
2595
-
"@babel/helper-plugin-utils" "^7.22.5"
2596
-
2597
2491
"@babel/plugin-syntax-export-default-from@^7.24.7":
2598
2492
version "7.25.9"
2599
2493
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.25.9.tgz#86614767a9ff140366f0c3766ef218beb32a730a"
···
2601
2495
dependencies:
2602
2496
"@babel/helper-plugin-utils" "^7.25.9"
2603
2497
2604
-
"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.22.5":
2498
+
"@babel/plugin-syntax-flow@^7.12.1":
2605
2499
version "7.22.5"
2606
2500
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz#163b820b9e7696ce134df3ee716d9c0c98035859"
2607
2501
integrity sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==
···
2678
2572
dependencies:
2679
2573
"@babel/helper-plugin-utils" "^7.10.4"
2680
2574
2681
-
"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
2575
+
"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
2682
2576
version "7.8.3"
2683
2577
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
2684
2578
integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
2685
2579
dependencies:
2686
2580
"@babel/helper-plugin-utils" "^7.8.0"
2687
2581
2688
-
"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3":
2582
+
"@babel/plugin-syntax-numeric-separator@^7.8.3":
2689
2583
version "7.10.4"
2690
2584
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
2691
2585
integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
···
2706
2600
dependencies:
2707
2601
"@babel/helper-plugin-utils" "^7.8.0"
2708
2602
2709
-
"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3":
2603
+
"@babel/plugin-syntax-optional-chaining@^7.8.3":
2710
2604
version "7.8.3"
2711
2605
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
2712
2606
integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
···
2749
2643
"@babel/helper-create-regexp-features-plugin" "^7.18.6"
2750
2644
"@babel/helper-plugin-utils" "^7.18.6"
2751
2645
2752
-
"@babel/plugin-transform-arrow-functions@^7.0.0":
2753
-
version "7.22.5"
2754
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958"
2755
-
integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==
2756
-
dependencies:
2757
-
"@babel/helper-plugin-utils" "^7.22.5"
2758
-
2759
2646
"@babel/plugin-transform-arrow-functions@^7.0.0-0":
2760
2647
version "7.24.1"
2761
2648
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27"
···
2779
2666
"@babel/helper-remap-async-to-generator" "^7.25.9"
2780
2667
"@babel/traverse" "^7.25.9"
2781
2668
2782
-
"@babel/plugin-transform-async-to-generator@^7.20.0":
2783
-
version "7.22.5"
2784
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775"
2785
-
integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==
2786
-
dependencies:
2787
-
"@babel/helper-module-imports" "^7.22.5"
2788
-
"@babel/helper-plugin-utils" "^7.22.5"
2789
-
"@babel/helper-remap-async-to-generator" "^7.22.5"
2790
-
2791
2669
"@babel/plugin-transform-async-to-generator@^7.24.7", "@babel/plugin-transform-async-to-generator@^7.25.9":
2792
2670
version "7.25.9"
2793
2671
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71"
···
2804
2682
dependencies:
2805
2683
"@babel/helper-plugin-utils" "^7.25.9"
2806
2684
2807
-
"@babel/plugin-transform-block-scoping@^7.0.0":
2808
-
version "7.22.10"
2809
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz#88a1dccc3383899eb5e660534a76a22ecee64faa"
2810
-
integrity sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==
2811
-
dependencies:
2812
-
"@babel/helper-plugin-utils" "^7.22.5"
2813
-
2814
2685
"@babel/plugin-transform-block-scoping@^7.25.0", "@babel/plugin-transform-block-scoping@^7.25.9":
2815
2686
version "7.25.9"
2816
2687
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1"
···
2842
2713
"@babel/helper-create-class-features-plugin" "^7.28.3"
2843
2714
"@babel/helper-plugin-utils" "^7.27.1"
2844
2715
2845
-
"@babel/plugin-transform-classes@^7.0.0":
2846
-
version "7.22.6"
2847
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363"
2848
-
integrity sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==
2849
-
dependencies:
2850
-
"@babel/helper-annotate-as-pure" "^7.22.5"
2851
-
"@babel/helper-compilation-targets" "^7.22.6"
2852
-
"@babel/helper-environment-visitor" "^7.22.5"
2853
-
"@babel/helper-function-name" "^7.22.5"
2854
-
"@babel/helper-optimise-call-expression" "^7.22.5"
2855
-
"@babel/helper-plugin-utils" "^7.22.5"
2856
-
"@babel/helper-replace-supers" "^7.22.5"
2857
-
"@babel/helper-split-export-declaration" "^7.22.6"
2858
-
globals "^11.1.0"
2859
-
2860
2716
"@babel/plugin-transform-classes@^7.0.0-0", "@babel/plugin-transform-classes@^7.25.4", "@babel/plugin-transform-classes@^7.25.9":
2861
2717
version "7.25.9"
2862
2718
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52"
···
2869
2725
"@babel/traverse" "^7.25.9"
2870
2726
globals "^11.1.0"
2871
2727
2872
-
"@babel/plugin-transform-computed-properties@^7.0.0":
2873
-
version "7.22.5"
2874
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869"
2875
-
integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==
2876
-
dependencies:
2877
-
"@babel/helper-plugin-utils" "^7.22.5"
2878
-
"@babel/template" "^7.22.5"
2879
-
2880
2728
"@babel/plugin-transform-computed-properties@^7.24.7", "@babel/plugin-transform-computed-properties@^7.25.9":
2881
2729
version "7.25.9"
2882
2730
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b"
···
2885
2733
"@babel/helper-plugin-utils" "^7.25.9"
2886
2734
"@babel/template" "^7.25.9"
2887
2735
2888
-
"@babel/plugin-transform-destructuring@^7.20.0":
2889
-
version "7.22.10"
2890
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz#38e2273814a58c810b6c34ea293be4973c4eb5e2"
2891
-
integrity sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==
2892
-
dependencies:
2893
-
"@babel/helper-plugin-utils" "^7.22.5"
2894
-
2895
2736
"@babel/plugin-transform-destructuring@^7.24.8", "@babel/plugin-transform-destructuring@^7.25.9":
2896
2737
version "7.25.9"
2897
2738
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1"
···
2944
2785
dependencies:
2945
2786
"@babel/helper-plugin-utils" "^7.25.9"
2946
2787
2947
-
"@babel/plugin-transform-flow-strip-types@^7.20.0":
2948
-
version "7.22.5"
2949
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz#0bb17110c7bf5b35a60754b2f00c58302381dee2"
2950
-
integrity sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==
2951
-
dependencies:
2952
-
"@babel/helper-plugin-utils" "^7.22.5"
2953
-
"@babel/plugin-syntax-flow" "^7.22.5"
2954
-
2955
2788
"@babel/plugin-transform-flow-strip-types@^7.25.2":
2956
2789
version "7.25.9"
2957
2790
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.9.tgz#85879b42a8f5948fd6317069978e98f23ef8aec1"
···
2968
2801
"@babel/helper-plugin-utils" "^7.25.9"
2969
2802
"@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
2970
2803
2971
-
"@babel/plugin-transform-function-name@^7.0.0":
2972
-
version "7.22.5"
2973
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143"
2974
-
integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==
2975
-
dependencies:
2976
-
"@babel/helper-compilation-targets" "^7.22.5"
2977
-
"@babel/helper-function-name" "^7.22.5"
2978
-
"@babel/helper-plugin-utils" "^7.22.5"
2979
-
2980
2804
"@babel/plugin-transform-function-name@^7.25.1", "@babel/plugin-transform-function-name@^7.25.9":
2981
2805
version "7.25.9"
2982
2806
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97"
···
2992
2816
integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==
2993
2817
dependencies:
2994
2818
"@babel/helper-plugin-utils" "^7.25.9"
2995
-
2996
-
"@babel/plugin-transform-literals@^7.0.0":
2997
-
version "7.22.5"
2998
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920"
2999
-
integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==
3000
-
dependencies:
3001
-
"@babel/helper-plugin-utils" "^7.22.5"
3002
2819
3003
2820
"@babel/plugin-transform-literals@^7.25.2", "@babel/plugin-transform-literals@^7.25.9":
3004
2821
version "7.25.9"
···
3029
2846
"@babel/helper-module-transforms" "^7.25.9"
3030
2847
"@babel/helper-plugin-utils" "^7.25.9"
3031
2848
3032
-
"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.22.5":
2849
+
"@babel/plugin-transform-modules-commonjs@^7.22.5":
3033
2850
version "7.22.5"
3034
2851
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa"
3035
2852
integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==
···
3074
2891
"@babel/helper-module-transforms" "^7.25.9"
3075
2892
"@babel/helper-plugin-utils" "^7.25.9"
3076
2893
3077
-
"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0":
3078
-
version "7.22.5"
3079
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f"
3080
-
integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==
3081
-
dependencies:
3082
-
"@babel/helper-create-regexp-features-plugin" "^7.22.5"
3083
-
"@babel/helper-plugin-utils" "^7.22.5"
3084
-
3085
2894
"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7", "@babel/plugin-transform-named-capturing-groups-regex@^7.25.9":
3086
2895
version "7.25.9"
3087
2896
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a"
···
3160
2969
"@babel/helper-plugin-utils" "^7.25.9"
3161
2970
"@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
3162
2971
3163
-
"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7":
3164
-
version "7.22.5"
3165
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18"
3166
-
integrity sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==
3167
-
dependencies:
3168
-
"@babel/helper-plugin-utils" "^7.22.5"
3169
-
3170
2972
"@babel/plugin-transform-parameters@^7.24.7", "@babel/plugin-transform-parameters@^7.25.9":
3171
2973
version "7.25.9"
3172
2974
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257"
···
3198
3000
dependencies:
3199
3001
"@babel/helper-plugin-utils" "^7.25.9"
3200
3002
3201
-
"@babel/plugin-transform-react-display-name@^7.0.0":
3202
-
version "7.22.5"
3203
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b"
3204
-
integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==
3205
-
dependencies:
3206
-
"@babel/helper-plugin-utils" "^7.22.5"
3207
-
3208
3003
"@babel/plugin-transform-react-display-name@^7.23.3":
3209
3004
version "7.23.3"
3210
3005
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200"
···
3226
3021
dependencies:
3227
3022
"@babel/plugin-transform-react-jsx" "^7.22.5"
3228
3023
3229
-
"@babel/plugin-transform-react-jsx-self@^7.0.0":
3230
-
version "7.22.5"
3231
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz#ca2fdc11bc20d4d46de01137318b13d04e481d8e"
3232
-
integrity sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==
3233
-
dependencies:
3234
-
"@babel/helper-plugin-utils" "^7.22.5"
3235
-
3236
3024
"@babel/plugin-transform-react-jsx-self@^7.24.7":
3237
3025
version "7.25.9"
3238
3026
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz#c0b6cae9c1b73967f7f9eb2fca9536ba2fad2858"
···
3240
3028
dependencies:
3241
3029
"@babel/helper-plugin-utils" "^7.25.9"
3242
3030
3243
-
"@babel/plugin-transform-react-jsx-source@^7.0.0":
3244
-
version "7.22.5"
3245
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz#49af1615bfdf6ed9d3e9e43e425e0b2b65d15b6c"
3246
-
integrity sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==
3247
-
dependencies:
3248
-
"@babel/helper-plugin-utils" "^7.22.5"
3249
-
3250
3031
"@babel/plugin-transform-react-jsx-source@^7.24.7":
3251
3032
version "7.25.9"
3252
3033
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz#4c6b8daa520b5f155b5fb55547d7c9fa91417503"
···
3254
3035
dependencies:
3255
3036
"@babel/helper-plugin-utils" "^7.25.9"
3256
3037
3257
-
"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.22.5":
3258
-
version "7.22.5"
3259
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz#932c291eb6dd1153359e2a90cb5e557dcf068416"
3260
-
integrity sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==
3261
-
dependencies:
3262
-
"@babel/helper-annotate-as-pure" "^7.22.5"
3263
-
"@babel/helper-module-imports" "^7.22.5"
3264
-
"@babel/helper-plugin-utils" "^7.22.5"
3265
-
"@babel/plugin-syntax-jsx" "^7.22.5"
3266
-
"@babel/types" "^7.22.5"
3267
-
3268
3038
"@babel/plugin-transform-react-jsx@^7.22.15":
3269
3039
version "7.23.4"
3270
3040
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312"
···
3276
3046
"@babel/plugin-syntax-jsx" "^7.23.3"
3277
3047
"@babel/types" "^7.23.4"
3278
3048
3049
+
"@babel/plugin-transform-react-jsx@^7.22.5":
3050
+
version "7.22.5"
3051
+
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz#932c291eb6dd1153359e2a90cb5e557dcf068416"
3052
+
integrity sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==
3053
+
dependencies:
3054
+
"@babel/helper-annotate-as-pure" "^7.22.5"
3055
+
"@babel/helper-module-imports" "^7.22.5"
3056
+
"@babel/helper-plugin-utils" "^7.22.5"
3057
+
"@babel/plugin-syntax-jsx" "^7.22.5"
3058
+
"@babel/types" "^7.22.5"
3059
+
3279
3060
"@babel/plugin-transform-react-jsx@^7.25.2":
3280
3061
version "7.25.9"
3281
3062
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166"
···
3318
3099
dependencies:
3319
3100
"@babel/helper-plugin-utils" "^7.25.9"
3320
3101
3321
-
"@babel/plugin-transform-runtime@^7.0.0":
3322
-
version "7.22.10"
3323
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.10.tgz#89eda6daf1d3af6f36fb368766553054c8d7cd46"
3324
-
integrity sha512-RchI7HePu1eu0CYNKHHHQdfenZcM4nz8rew5B1VWqeRKdcwW5aQ5HeG9eTUbWiAS1UrmHVLmoxTWHt3iLD/NhA==
3325
-
dependencies:
3326
-
"@babel/helper-module-imports" "^7.22.5"
3327
-
"@babel/helper-plugin-utils" "^7.22.5"
3328
-
babel-plugin-polyfill-corejs2 "^0.4.5"
3329
-
babel-plugin-polyfill-corejs3 "^0.8.3"
3330
-
babel-plugin-polyfill-regenerator "^0.5.2"
3331
-
semver "^6.3.1"
3332
-
3333
3102
"@babel/plugin-transform-runtime@^7.24.7":
3334
3103
version "7.25.9"
3335
3104
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz#62723ea3f5b31ffbe676da9d6dae17138ae580ea"
···
3342
3111
babel-plugin-polyfill-regenerator "^0.6.1"
3343
3112
semver "^6.3.1"
3344
3113
3345
-
"@babel/plugin-transform-shorthand-properties@^7.0.0":
3346
-
version "7.22.5"
3347
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624"
3348
-
integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==
3349
-
dependencies:
3350
-
"@babel/helper-plugin-utils" "^7.22.5"
3351
-
3352
3114
"@babel/plugin-transform-shorthand-properties@^7.0.0-0":
3353
3115
version "7.24.1"
3354
3116
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55"
···
3363
3125
dependencies:
3364
3126
"@babel/helper-plugin-utils" "^7.25.9"
3365
3127
3366
-
"@babel/plugin-transform-spread@^7.0.0":
3367
-
version "7.22.5"
3368
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b"
3369
-
integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==
3370
-
dependencies:
3371
-
"@babel/helper-plugin-utils" "^7.22.5"
3372
-
"@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
3373
-
3374
3128
"@babel/plugin-transform-spread@^7.24.7", "@babel/plugin-transform-spread@^7.25.9":
3375
3129
version "7.25.9"
3376
3130
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9"
···
3379
3133
"@babel/helper-plugin-utils" "^7.25.9"
3380
3134
"@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
3381
3135
3382
-
"@babel/plugin-transform-sticky-regex@^7.0.0":
3383
-
version "7.22.5"
3384
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa"
3385
-
integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==
3386
-
dependencies:
3387
-
"@babel/helper-plugin-utils" "^7.22.5"
3388
-
3389
3136
"@babel/plugin-transform-sticky-regex@^7.24.7", "@babel/plugin-transform-sticky-regex@^7.25.9":
3390
3137
version "7.25.9"
3391
3138
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32"
···
3414
3161
dependencies:
3415
3162
"@babel/helper-plugin-utils" "^7.25.9"
3416
3163
3417
-
"@babel/plugin-transform-typescript@^7.22.5", "@babel/plugin-transform-typescript@^7.5.0":
3164
+
"@babel/plugin-transform-typescript@^7.22.5":
3418
3165
version "7.22.10"
3419
3166
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.10.tgz#aadd98fab871f0bb5717bcc24c31aaaa455af923"
3420
3167
integrity sha512-7++c8I/ymsDo4QQBAgbraXLzIM6jmfao11KgIBEYZRReWzNWH9NtNgJcyrZiXsOPh523FQm6LfpLyy/U5fn46A==
···
3459
3206
dependencies:
3460
3207
"@babel/helper-create-regexp-features-plugin" "^7.25.9"
3461
3208
"@babel/helper-plugin-utils" "^7.25.9"
3462
-
3463
-
"@babel/plugin-transform-unicode-regex@^7.0.0":
3464
-
version "7.22.5"
3465
-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183"
3466
-
integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==
3467
-
dependencies:
3468
-
"@babel/helper-create-regexp-features-plugin" "^7.22.5"
3469
-
"@babel/helper-plugin-utils" "^7.22.5"
3470
3209
3471
3210
"@babel/plugin-transform-unicode-regex@^7.0.0-0", "@babel/plugin-transform-unicode-regex@^7.24.7", "@babel/plugin-transform-unicode-regex@^7.25.9":
3472
3211
version "7.25.9"
···
3628
3367
dependencies:
3629
3368
regenerator-runtime "^0.14.0"
3630
3369
3631
-
"@babel/template@^7.0.0", "@babel/template@^7.22.5", "@babel/template@^7.3.3":
3632
-
version "7.22.5"
3633
-
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec"
3634
-
integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==
3635
-
dependencies:
3636
-
"@babel/code-frame" "^7.22.5"
3637
-
"@babel/parser" "^7.22.5"
3638
-
"@babel/types" "^7.22.5"
3639
-
3640
3370
"@babel/template@^7.22.15":
3641
3371
version "7.22.15"
3642
3372
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38"
···
3645
3375
"@babel/code-frame" "^7.22.13"
3646
3376
"@babel/parser" "^7.22.15"
3647
3377
"@babel/types" "^7.22.15"
3378
+
3379
+
"@babel/template@^7.22.5", "@babel/template@^7.3.3":
3380
+
version "7.22.5"
3381
+
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec"
3382
+
integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==
3383
+
dependencies:
3384
+
"@babel/code-frame" "^7.22.5"
3385
+
"@babel/parser" "^7.22.5"
3386
+
"@babel/types" "^7.22.5"
3648
3387
3649
3388
"@babel/template@^7.24.0":
3650
3389
version "7.24.0"
···
6549
6288
invariant "^2.2.4"
6550
6289
nullthrows "^1.1.1"
6551
6290
6552
-
"@react-navigation/bottom-tabs@^7.3.13":
6553
-
version "7.3.14"
6554
-
resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-7.3.14.tgz#9ee02baea86ab24abe267726665bc69c6df0bf4c"
6555
-
integrity sha512-s2qinJggS2HYZdCOey9A+fN+bNpWeEKwiL/FjAVOTcv+uofxPWN6CtEZUZGPEjfRjis/srURBmCmpNZSI6sQ9Q==
6291
+
"@react-navigation/bottom-tabs@^7.9.0":
6292
+
version "7.9.0"
6293
+
resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-7.9.0.tgz#b546adb0cedd72a1f0179e00b74039b3c8abb6bd"
6294
+
integrity sha512-024FWdHp3ZsE5rP8tmGI4vh+1z3wg8u8E9Frep8eeGoYo1h9rQhvgofQDGxknmrKsb7t8o8Dim+IZSvl57cPFQ==
6556
6295
dependencies:
6557
-
"@react-navigation/elements" "^2.4.3"
6296
+
"@react-navigation/elements" "^2.9.3"
6558
6297
color "^4.2.3"
6298
+
sf-symbols-typescript "^2.1.0"
6559
6299
6560
-
"@react-navigation/core@^7.10.0":
6561
-
version "7.10.0"
6562
-
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-7.10.0.tgz#8205ea6b84ce34b2fc2c196701b4cd9b434211b9"
6563
-
integrity sha512-qZBA5gGm+9liT4+EHk+kl9apwvqh7HqhLF1XeX6SQRmC/n2QI0u1B8OevKc+EPUDEM9Od15IuwT/GRbSs7/Umw==
6300
+
"@react-navigation/core@^7.13.7":
6301
+
version "7.13.7"
6302
+
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-7.13.7.tgz#1263903a703b5f183a08c22dfc5c3735ac4ef91c"
6303
+
integrity sha512-k2ABo3250vq1ovOh/iVwXS6Hwr5PVRGXoPh/ewVFOOuEKTvOx9i//OBzt8EF+HokBxS2HBRlR2b+aCOmscRqBw==
6564
6304
dependencies:
6565
-
"@react-navigation/routers" "^7.4.0"
6305
+
"@react-navigation/routers" "^7.5.3"
6566
6306
escape-string-regexp "^4.0.0"
6307
+
fast-deep-equal "^3.1.3"
6567
6308
nanoid "^3.3.11"
6568
6309
query-string "^7.1.3"
6569
6310
react-is "^19.1.0"
6570
-
use-latest-callback "^0.2.3"
6311
+
use-latest-callback "^0.2.4"
6571
6312
use-sync-external-store "^1.5.0"
6572
6313
6573
-
"@react-navigation/drawer@^7.3.12":
6574
-
version "7.4.1"
6575
-
resolved "https://registry.yarnpkg.com/@react-navigation/drawer/-/drawer-7.4.1.tgz#50517d8c57f09cdbfc20a485c47016066b918e76"
6576
-
integrity sha512-kj5wL31smDLw/6l+0KPR5cjaOZg6oHJCl3RPQonFPuYolUPZBVnuS++uvlifWcD/mqdGmhl3rgLTircRH4vQ7Q==
6314
+
"@react-navigation/elements@^2.9.3":
6315
+
version "2.9.3"
6316
+
resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-2.9.3.tgz#505ae38af347a0bc5326155318a3d9a54e2071e3"
6317
+
integrity sha512-3+eyvWiVPIEf6tN9UdduhOEHcTuNe3R5WovgiVkfH9+jApHMTZDc2loePTpY/i2HDJhObhhChpJzO6BVjrpdYQ==
6577
6318
dependencies:
6578
-
"@react-navigation/elements" "^2.4.3"
6579
6319
color "^4.2.3"
6580
-
react-native-drawer-layout "^4.1.10"
6581
-
use-latest-callback "^0.2.3"
6320
+
use-latest-callback "^0.2.4"
6321
+
use-sync-external-store "^1.5.0"
6582
6322
6583
-
"@react-navigation/elements@^2.4.3":
6584
-
version "2.4.3"
6585
-
resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-2.4.3.tgz#cc1dde4c98739d35a0c9c23872316063962cfaee"
6586
-
integrity sha512-psoNmnZ0DQIt9nxxPITVLtYW04PGCAfnmd/Pcd3yhiBs93aj+HYKH+SDZDpUnXMf3BN7Wvo4+jPI+/Xjqb+m9w==
6323
+
"@react-navigation/native-stack@^7.9.0":
6324
+
version "7.9.0"
6325
+
resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-7.9.0.tgz#4fcd08a403ff86c465a908f3b49f86ab3f66d06a"
6326
+
integrity sha512-C/mNPhI0Pnerl7C2cB+6fAkdgSmfKECMERrbyfjx3P6JmEuTC54o+GV1c62FUmlRaRUassVHbtw4EeaY2uLh0g==
6587
6327
dependencies:
6328
+
"@react-navigation/elements" "^2.9.3"
6588
6329
color "^4.2.3"
6589
-
6590
-
"@react-navigation/native-stack@^7.3.13":
6591
-
version "7.3.14"
6592
-
resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-7.3.14.tgz#d1c90f2e50cd13bbced923991cf2faee8083f725"
6593
-
integrity sha512-45Sf7ReqSCIySXS5nrKtLGmNlFXm5x+u32YQMwKDONCqVGOBCfo4ryKqeQq1EMJ7Py6IDyOwHMhA+jhNOxnfPw==
6594
-
dependencies:
6595
-
"@react-navigation/elements" "^2.4.3"
6330
+
sf-symbols-typescript "^2.1.0"
6596
6331
warn-once "^0.1.1"
6597
6332
6598
-
"@react-navigation/native@^7.1.9":
6599
-
version "7.1.10"
6600
-
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-7.1.10.tgz#768f674f7c09b6a57215762052aa62a7dc107402"
6601
-
integrity sha512-Ug4IML0DkAxZTMF/E7lyyLXSclkGAYElY2cxZWITwfBjtlVeda0NjsdnTWY5EGjnd7bwvhTIUC+CO6qSlrDn5A==
6333
+
"@react-navigation/native@^7.1.26":
6334
+
version "7.1.26"
6335
+
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-7.1.26.tgz#220672e115f39014b95ca3ce8f2c37076a0e74f4"
6336
+
integrity sha512-RhKmeD0E2ejzKS6z8elAfdfwShpcdkYY8zJzvHYLq+wv183BBcElTeyMLcIX6wIn7QutXeI92Yi21t7aUWfqNQ==
6602
6337
dependencies:
6603
-
"@react-navigation/core" "^7.10.0"
6338
+
"@react-navigation/core" "^7.13.7"
6604
6339
escape-string-regexp "^4.0.0"
6605
6340
fast-deep-equal "^3.1.3"
6606
6341
nanoid "^3.3.11"
6607
-
use-latest-callback "^0.2.3"
6342
+
use-latest-callback "^0.2.4"
6608
6343
6609
-
"@react-navigation/routers@^7.4.0":
6610
-
version "7.4.0"
6611
-
resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-7.4.0.tgz#5bace799713ac163310c18711b98dfbe418c6b36"
6612
-
integrity sha512-th5THnuWKJlmr7GGHiicy979di11ycDWub9iIXbEDvQwmwmsRzppmVbfs2nD8bC/MgyMgqWu/gxfys+HqN+kcw==
6344
+
"@react-navigation/routers@^7.5.3":
6345
+
version "7.5.3"
6346
+
resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-7.5.3.tgz#8002930ef5f62351be2475d0dffde3ffaee174d7"
6347
+
integrity sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==
6613
6348
dependencies:
6614
6349
nanoid "^3.3.11"
6615
6350
···
7813
7548
dependencies:
7814
7549
"@types/lodash" "*"
7815
7550
7816
-
"@types/lodash.isequal@^4.5.6":
7817
-
version "4.5.6"
7818
-
resolved "https://registry.yarnpkg.com/@types/lodash.isequal/-/lodash.isequal-4.5.6.tgz#ff42a1b8e20caa59a97e446a77dc57db923bc02b"
7819
-
integrity sha512-Ww4UGSe3DmtvLLJm2F16hDwEQSv7U0Rr8SujLUA2wHI2D2dm8kPu6Et+/y303LfjTIwSBKXB/YTUcAKpem/XEg==
7820
-
dependencies:
7821
-
"@types/lodash" "*"
7822
-
7823
7551
"@types/lodash.shuffle@^4.2.7":
7824
7552
version "4.2.7"
7825
7553
resolved "https://registry.yarnpkg.com/@types/lodash.shuffle/-/lodash.shuffle-4.2.7.tgz#b714d829af948a266b0df1477d629c70de2f4c72"
···
8885
8613
"@babel/helper-define-polyfill-provider" "^0.6.3"
8886
8614
semver "^6.3.1"
8887
8615
8888
-
babel-plugin-polyfill-corejs2@^0.4.5:
8889
-
version "0.4.5"
8890
-
resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c"
8891
-
integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==
8892
-
dependencies:
8893
-
"@babel/compat-data" "^7.22.6"
8894
-
"@babel/helper-define-polyfill-provider" "^0.4.2"
8895
-
semver "^6.3.1"
8896
-
8897
8616
babel-plugin-polyfill-corejs3@^0.10.6:
8898
8617
version "0.10.6"
8899
8618
resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7"
···
8901
8620
dependencies:
8902
8621
"@babel/helper-define-polyfill-provider" "^0.6.2"
8903
8622
core-js-compat "^3.38.0"
8904
-
8905
-
babel-plugin-polyfill-corejs3@^0.8.3:
8906
-
version "0.8.3"
8907
-
resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52"
8908
-
integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==
8909
-
dependencies:
8910
-
"@babel/helper-define-polyfill-provider" "^0.4.2"
8911
-
core-js-compat "^3.31.0"
8912
-
8913
-
babel-plugin-polyfill-regenerator@^0.5.2:
8914
-
version "0.5.2"
8915
-
resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326"
8916
-
integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==
8917
-
dependencies:
8918
-
"@babel/helper-define-polyfill-provider" "^0.4.2"
8919
8623
8920
8624
babel-plugin-polyfill-regenerator@^0.6.1:
8921
8625
version "0.6.3"
···
9235
8939
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
9236
8940
integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==
9237
8941
9238
-
browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9:
8942
+
browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.4, browserslist@^4.21.9:
9239
8943
version "4.21.10"
9240
8944
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0"
9241
8945
integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==
···
9844
9548
normalize-path "^3.0.0"
9845
9549
schema-utils "^4.0.0"
9846
9550
serialize-javascript "^6.0.0"
9847
-
9848
-
core-js-compat@^3.31.0:
9849
-
version "3.32.1"
9850
-
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.1.tgz#55f9a7d297c0761a8eb1d31b593e0f5b6ffae964"
9851
-
integrity sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==
9852
-
dependencies:
9853
-
browserslist "^4.21.10"
9854
9551
9855
9552
core-js-compat@^3.38.0, core-js-compat@^3.38.1:
9856
9553
version "3.39.0"
···
14587
14284
resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
14588
14285
integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==
14589
14286
14590
-
lodash.isequal@^4.5.0:
14591
-
version "4.5.0"
14592
-
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
14593
-
integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
14594
-
14595
14287
lodash.memoize@^4.1.2:
14596
14288
version "4.1.2"
14597
14289
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
···
14905
14597
flow-enums-runtime "^0.0.6"
14906
14598
terser "^5.15.0"
14907
14599
14908
-
metro-react-native-babel-preset@^0.77.0:
14909
-
version "0.77.0"
14910
-
resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.77.0.tgz#47457eca8e36b77156afbe790247a70dbb40faaa"
14911
-
integrity sha512-HPPD+bTxADtoE4y/4t1txgTQ1LVR6imOBy7RMHUsqMVTbekoi8Ph5YI9vKX2VMPtVWeFt0w9YnCSLPa76GcXsA==
14912
-
dependencies:
14913
-
"@babel/core" "^7.20.0"
14914
-
"@babel/plugin-proposal-async-generator-functions" "^7.0.0"
14915
-
"@babel/plugin-proposal-class-properties" "^7.18.0"
14916
-
"@babel/plugin-proposal-export-default-from" "^7.0.0"
14917
-
"@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0"
14918
-
"@babel/plugin-proposal-numeric-separator" "^7.0.0"
14919
-
"@babel/plugin-proposal-object-rest-spread" "^7.20.0"
14920
-
"@babel/plugin-proposal-optional-catch-binding" "^7.0.0"
14921
-
"@babel/plugin-proposal-optional-chaining" "^7.20.0"
14922
-
"@babel/plugin-syntax-dynamic-import" "^7.8.0"
14923
-
"@babel/plugin-syntax-export-default-from" "^7.0.0"
14924
-
"@babel/plugin-syntax-flow" "^7.18.0"
14925
-
"@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0"
14926
-
"@babel/plugin-syntax-optional-chaining" "^7.0.0"
14927
-
"@babel/plugin-transform-arrow-functions" "^7.0.0"
14928
-
"@babel/plugin-transform-async-to-generator" "^7.20.0"
14929
-
"@babel/plugin-transform-block-scoping" "^7.0.0"
14930
-
"@babel/plugin-transform-classes" "^7.0.0"
14931
-
"@babel/plugin-transform-computed-properties" "^7.0.0"
14932
-
"@babel/plugin-transform-destructuring" "^7.20.0"
14933
-
"@babel/plugin-transform-flow-strip-types" "^7.20.0"
14934
-
"@babel/plugin-transform-function-name" "^7.0.0"
14935
-
"@babel/plugin-transform-literals" "^7.0.0"
14936
-
"@babel/plugin-transform-modules-commonjs" "^7.0.0"
14937
-
"@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0"
14938
-
"@babel/plugin-transform-parameters" "^7.0.0"
14939
-
"@babel/plugin-transform-react-display-name" "^7.0.0"
14940
-
"@babel/plugin-transform-react-jsx" "^7.0.0"
14941
-
"@babel/plugin-transform-react-jsx-self" "^7.0.0"
14942
-
"@babel/plugin-transform-react-jsx-source" "^7.0.0"
14943
-
"@babel/plugin-transform-runtime" "^7.0.0"
14944
-
"@babel/plugin-transform-shorthand-properties" "^7.0.0"
14945
-
"@babel/plugin-transform-spread" "^7.0.0"
14946
-
"@babel/plugin-transform-sticky-regex" "^7.0.0"
14947
-
"@babel/plugin-transform-typescript" "^7.5.0"
14948
-
"@babel/plugin-transform-unicode-regex" "^7.0.0"
14949
-
"@babel/template" "^7.0.0"
14950
-
babel-plugin-transform-flow-enums "^0.0.2"
14951
-
react-refresh "^0.4.0"
14952
-
14953
14600
metro-resolver@0.83.2:
14954
14601
version "0.83.2"
14955
14602
resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.83.2.tgz#d4a40a602615baacfb94d8a773e8b93eaac70d0f"
···
17070
16717
dependencies:
17071
16718
dotenv "^16.4.5"
17072
16719
17073
-
react-native-drawer-layout@^4.1.10, react-native-drawer-layout@^4.1.8:
17074
-
version "4.1.10"
17075
-
resolved "https://registry.yarnpkg.com/react-native-drawer-layout/-/react-native-drawer-layout-4.1.10.tgz#9007cb747767ca8e1c9c3337671ad35ed95ad4d9"
17076
-
integrity sha512-wejQo0F+EffCkOkRh+DP6ENWMB+aWEHkXV8Pd564PmtoySZLUsV/ksYrh/mrufh7T7EuvGT8+fNHz7mMRYftWg==
16720
+
react-native-drawer-layout@^4.2.1:
16721
+
version "4.2.1"
16722
+
resolved "https://registry.yarnpkg.com/react-native-drawer-layout/-/react-native-drawer-layout-4.2.1.tgz#5c89425662c9b5216a227dbc87bc7f38c4ec8719"
16723
+
integrity sha512-liwRJ7ynRU/ogRlUdiK1Yoi1VzUSq2Vu/RU+UgqlMB3XduslZ1DZg/mTX0f1uCEV2dJ4ec+1fRa3OlIierfyZg==
17077
16724
dependencies:
17078
-
use-latest-callback "^0.2.3"
16725
+
color "^4.2.3"
16726
+
use-latest-callback "^0.2.4"
17079
16727
17080
16728
react-native-edge-to-edge@^1.6.0:
17081
16729
version "1.6.0"
···
17164
16812
resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-5.6.1.tgz#cb4d249ef1a6f7e8fd0cfdfa9764838dffda26b6"
17165
16813
integrity sha512-/wJE58HLEAkATzhhX1xSr+fostLsK8Q97EfpfMDKo8jlOc1QKESSX/FQrhk7HhQH/2uSaox4Y86sNaI02kteiA==
17166
16814
17167
-
react-native-screens@~4.16.0:
17168
-
version "4.16.0"
17169
-
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-4.16.0.tgz#efa42e77a092aa0b5277c9ae41391ea0240e0870"
17170
-
integrity sha512-yIAyh7F/9uWkOzCi1/2FqvNvK6Wb9Y1+Kzn16SuGfN9YFJDTbwlzGRvePCNTOX0recpLQF3kc2FmvMUhyTCH1Q==
16815
+
react-native-screens@^4.19.0:
16816
+
version "4.19.0"
16817
+
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-4.19.0.tgz#d00f2ec070d7426204eaf34ef6c64396a6871e1d"
16818
+
integrity sha512-qSDAO3AL5bti0Ri7KZRSVmWlhDr8MV86N5GruiKVQfEL7Zx2nUi3Dl62lqHUAD/LnDvOPuDDsMHCfIpYSv3hPQ==
17171
16819
dependencies:
17172
16820
react-freeze "^1.0.0"
17173
-
react-native-is-edge-to-edge "^1.2.1"
17174
16821
warn-once "^0.1.0"
17175
16822
17176
16823
react-native-svg@15.12.1:
···
17284
16931
version "0.14.2"
17285
16932
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
17286
16933
integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==
17287
-
17288
-
react-refresh@^0.4.0:
17289
-
version "0.4.3"
17290
-
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53"
17291
-
integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==
17292
16934
17293
16935
react-remove-scroll-bar@^2.3.7, react-remove-scroll-bar@^2.3.8:
17294
16936
version "2.3.8"
···
18143
17785
version "1.2.0"
18144
17786
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
18145
17787
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
17788
+
17789
+
sf-symbols-typescript@^2.1.0:
17790
+
version "2.2.0"
17791
+
resolved "https://registry.yarnpkg.com/sf-symbols-typescript/-/sf-symbols-typescript-2.2.0.tgz#926d6e0715e3d8784cadf7658431e36581254208"
17792
+
integrity sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==
18146
17793
18147
17794
shallow-equal@^3.1.0:
18148
17795
version "3.1.0"
···
19526
19173
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd"
19527
19174
integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==
19528
19175
19529
-
unicode-segmenter@^0.14.0:
19530
-
version "0.14.0"
19531
-
resolved "https://registry.yarnpkg.com/unicode-segmenter/-/unicode-segmenter-0.14.0.tgz#090128182bcc710327a1b7e4af4f5834444eaa61"
19532
-
integrity sha512-AH4lhPCJANUnSLEKnM4byboctePJzltF4xj8b+NbNiYeAkAXGh7px2K/4NANFp7dnr6+zB3e6HLu8Jj8SKyvYg==
19176
+
unicode-segmenter@0.14.5, unicode-segmenter@^0.14.0, unicode-segmenter@^0.14.5:
19177
+
version "0.14.5"
19178
+
resolved "https://registry.yarnpkg.com/unicode-segmenter/-/unicode-segmenter-0.14.5.tgz#c658f6dd30de172cdcd94542adc205ba43fb63c6"
19179
+
integrity sha512-jHGmj2LUuqDcX3hqY12Ql+uhUTn8huuxNZGq7GvtF6bSybzH3aFgedYu/KTzQStEgt1Ra2F3HxadNXsNjb3m3g==
19533
19180
19534
19181
unimodules-app-loader@~6.0.8:
19535
19182
version "6.0.8"
···
19645
19292
resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb"
19646
19293
integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==
19647
19294
19648
-
use-latest-callback@^0.2.3:
19649
-
version "0.2.3"
19650
-
resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.2.3.tgz#2d644d3063040b9bc2d4c55bb525a13ae3de9e16"
19651
-
integrity sha512-7vI3fBuyRcP91pazVboc4qu+6ZqM8izPWX9k7cRnT8hbD5svslcknsh3S9BUhaK11OmgTV4oWZZVSeQAiV53SQ==
19295
+
use-latest-callback@^0.2.4:
19296
+
version "0.2.6"
19297
+
resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.2.6.tgz#e5ea752808c86219acc179ace0ae3c1203255e77"
19298
+
integrity sha512-FvRG9i1HSo0wagmX63Vrm8SnlUU3LMM3WyZkQ76RnslpBrX694AdG4A0zQBx2B3ZifFA0yv/BaEHGBnEax5rZg==
19652
19299
19653
19300
use-latest@^1.2.1:
19654
19301
version "1.2.1"