@hjmds/react-native 1.7.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/README.md +30 -2
  2. package/THIRD_PARTY_NOTICES.md +58 -0
  3. package/dist/actions.js +1 -1
  4. package/dist/actions.js.map +1 -1
  5. package/dist/agreement.d.ts.map +1 -1
  6. package/dist/agreement.js +13 -3
  7. package/dist/agreement.js.map +1 -1
  8. package/dist/calendar.d.ts.map +1 -1
  9. package/dist/calendar.js +6 -3
  10. package/dist/calendar.js.map +1 -1
  11. package/dist/carousel-motion.d.ts +16 -0
  12. package/dist/carousel-motion.d.ts.map +1 -0
  13. package/dist/carousel-motion.js +57 -0
  14. package/dist/carousel-motion.js.map +1 -0
  15. package/dist/celebration.d.ts +8 -0
  16. package/dist/celebration.d.ts.map +1 -0
  17. package/dist/celebration.js +64 -0
  18. package/dist/celebration.js.map +1 -0
  19. package/dist/content-transition.d.ts +12 -0
  20. package/dist/content-transition.d.ts.map +1 -0
  21. package/dist/content-transition.js +34 -0
  22. package/dist/content-transition.js.map +1 -0
  23. package/dist/context-menu-native.d.ts +17 -0
  24. package/dist/context-menu-native.d.ts.map +1 -0
  25. package/dist/context-menu-native.js +11 -0
  26. package/dist/context-menu-native.js.map +1 -0
  27. package/dist/data-display.d.ts.map +1 -1
  28. package/dist/data-display.js +8 -2
  29. package/dist/data-display.js.map +1 -1
  30. package/dist/date-picker.d.ts +8 -1
  31. package/dist/date-picker.d.ts.map +1 -1
  32. package/dist/date-picker.js +3 -3
  33. package/dist/date-picker.js.map +1 -1
  34. package/dist/evidence.d.ts +61 -2
  35. package/dist/evidence.d.ts.map +1 -1
  36. package/dist/evidence.js +104 -46
  37. package/dist/evidence.js.map +1 -1
  38. package/dist/feedback.d.ts +7 -2
  39. package/dist/feedback.d.ts.map +1 -1
  40. package/dist/feedback.js +104 -24
  41. package/dist/feedback.js.map +1 -1
  42. package/dist/forms.d.ts +8 -3
  43. package/dist/forms.d.ts.map +1 -1
  44. package/dist/forms.js +64 -11
  45. package/dist/forms.js.map +1 -1
  46. package/dist/image-viewer.d.ts +25 -0
  47. package/dist/image-viewer.d.ts.map +1 -0
  48. package/dist/image-viewer.js +49 -0
  49. package/dist/image-viewer.js.map +1 -0
  50. package/dist/index.d.ts +2 -2
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +1 -1
  53. package/dist/index.js.map +1 -1
  54. package/dist/inputs.d.ts.map +1 -1
  55. package/dist/inputs.js +40 -31
  56. package/dist/inputs.js.map +1 -1
  57. package/dist/internal/state.d.ts +19 -0
  58. package/dist/internal/state.d.ts.map +1 -1
  59. package/dist/internal/state.js +15 -0
  60. package/dist/internal/state.js.map +1 -1
  61. package/dist/internal/toast-presentation.d.ts +27 -0
  62. package/dist/internal/toast-presentation.d.ts.map +1 -0
  63. package/dist/internal/toast-presentation.js +2 -0
  64. package/dist/internal/toast-presentation.js.map +1 -0
  65. package/dist/keyboard-controller.d.ts +19 -0
  66. package/dist/keyboard-controller.d.ts.map +1 -0
  67. package/dist/keyboard-controller.js +18 -0
  68. package/dist/keyboard-controller.js.map +1 -0
  69. package/dist/masonry.d.ts +14 -0
  70. package/dist/masonry.d.ts.map +1 -0
  71. package/dist/masonry.js +16 -0
  72. package/dist/masonry.js.map +1 -0
  73. package/dist/mentions.d.ts.map +1 -1
  74. package/dist/mentions.js +15 -7
  75. package/dist/mentions.js.map +1 -1
  76. package/dist/navigation.d.ts.map +1 -1
  77. package/dist/navigation.js +6 -4
  78. package/dist/navigation.js.map +1 -1
  79. package/dist/number-field.d.ts.map +1 -1
  80. package/dist/number-field.js +9 -4
  81. package/dist/number-field.js.map +1 -1
  82. package/dist/overlays.d.ts +1 -1
  83. package/dist/overlays.d.ts.map +1 -1
  84. package/dist/overlays.js +18 -7
  85. package/dist/overlays.js.map +1 -1
  86. package/dist/primitives.d.ts.map +1 -1
  87. package/dist/primitives.js +2 -2
  88. package/dist/primitives.js.map +1 -1
  89. package/dist/provider.d.ts +19 -1
  90. package/dist/provider.d.ts.map +1 -1
  91. package/dist/provider.js +10 -2
  92. package/dist/provider.js.map +1 -1
  93. package/dist/qr-code.d.ts +11 -0
  94. package/dist/qr-code.d.ts.map +1 -0
  95. package/dist/qr-code.js +16 -0
  96. package/dist/qr-code.js.map +1 -0
  97. package/dist/screen-transition.d.ts +14 -0
  98. package/dist/screen-transition.d.ts.map +1 -0
  99. package/dist/screen-transition.js +42 -0
  100. package/dist/screen-transition.js.map +1 -0
  101. package/dist/sheet-gesture.d.ts +27 -0
  102. package/dist/sheet-gesture.d.ts.map +1 -0
  103. package/dist/sheet-gesture.js +97 -0
  104. package/dist/sheet-gesture.js.map +1 -0
  105. package/dist/slider.d.ts.map +1 -1
  106. package/dist/slider.js +58 -11
  107. package/dist/slider.js.map +1 -1
  108. package/dist/sortable.d.ts +15 -0
  109. package/dist/sortable.d.ts.map +1 -0
  110. package/dist/sortable.js +64 -0
  111. package/dist/sortable.js.map +1 -0
  112. package/dist/steps.js +1 -1
  113. package/dist/steps.js.map +1 -1
  114. package/dist/swipe-actions.d.ts +17 -0
  115. package/dist/swipe-actions.d.ts.map +1 -0
  116. package/dist/swipe-actions.js +58 -0
  117. package/dist/swipe-actions.js.map +1 -0
  118. package/dist/tags-input.d.ts.map +1 -1
  119. package/dist/tags-input.js +6 -1
  120. package/dist/tags-input.js.map +1 -1
  121. package/dist/thinking-orb.d.ts +9 -0
  122. package/dist/thinking-orb.d.ts.map +1 -0
  123. package/dist/thinking-orb.js +68 -0
  124. package/dist/thinking-orb.js.map +1 -0
  125. package/dist/toast-liquid.d.ts +8 -0
  126. package/dist/toast-liquid.d.ts.map +1 -0
  127. package/dist/toast-liquid.js +160 -0
  128. package/dist/toast-liquid.js.map +1 -0
  129. package/dist/transfer-list.d.ts.map +1 -1
  130. package/dist/transfer-list.js +4 -3
  131. package/dist/transfer-list.js.map +1 -1
  132. package/dist/upload-item.d.ts.map +1 -1
  133. package/dist/upload-item.js +6 -1
  134. package/dist/upload-item.js.map +1 -1
  135. package/dist/virtual-list.d.ts +14 -0
  136. package/dist/virtual-list.d.ts.map +1 -0
  137. package/dist/virtual-list.js +12 -0
  138. package/dist/virtual-list.js.map +1 -0
  139. package/docs/liquid-toast.md +101 -0
  140. package/docs/patches/@react-native-menu__menu.patch +43 -0
  141. package/docs/patches/README.md +27 -0
  142. package/docs/patches/react-native-ios-context-menu.patch +14 -0
  143. package/docs/patches/react-native-ios-utilities.patch +34 -0
  144. package/docs/patches/react-native-screen-transitions.patch +87 -0
  145. package/package.json +194 -5
@@ -0,0 +1,14 @@
1
+ diff --git a/ios/RNIContextMenu/RNIMenuActionItem.swift b/ios/RNIContextMenu/RNIMenuActionItem.swift
2
+ index 63fae48aeb169f0ec81798adc60f53304be9afcb..5e25cedaae4629dc038755677251d597c9d68760 100644
3
+ --- a/ios/RNIContextMenu/RNIMenuActionItem.swift
4
+ +++ b/ios/RNIContextMenu/RNIMenuActionItem.swift
5
+ @@ -182,7 +182,8 @@ extension RNIMenuActionItem {
6
+ );
7
+
8
+ #if swift(>=5.5)
9
+ - if #available(iOS 15.0, *) {
10
+ + // Xcode 27 annotates UIAction.subtitle as iOS 16+; keep older hosts supported.
11
+ + if #available(iOS 16.0, *) {
12
+ action.subtitle =
13
+ self.actionSubtitle
14
+ ?? self.fallbackActionSubtitle;
@@ -0,0 +1,34 @@
1
+ diff --git a/ios/Sources/Extensions+Helpers/RCTView+Helpers.swift b/ios/Sources/Extensions+Helpers/RCTView+Helpers.swift
2
+ index 09be306d5aa39337c5114c2ad6ba7513218e0751..0a650b65b4f127116f78dd057aef2f696f5177a5 100644
3
+ --- a/ios/Sources/Extensions+Helpers/RCTView+Helpers.swift
4
+ +++ b/ios/Sources/Extensions+Helpers/RCTView+Helpers.swift
5
+ @@ -25,6 +25,9 @@ public extension RCTView {
6
+ return rootView.recursivelyFindSubview(whereType: targetType);
7
+ };
8
+
9
+ + // RN 0.86 prebuilt Fabric omits the legacy RCTRootContentView implementation.
10
+ + // Keep the fallback only for legacy builds; Fabric uses its own surface touch handler.
11
+ + #if !RCT_NEW_ARCH_ENABLED
12
+ var closestParentReactContentView: RCTRootContentView? {
13
+ let targetType = RCTRootContentView.self;
14
+
15
+ @@ -36,6 +39,8 @@ public extension RCTView {
16
+ return rootView.recursivelyFindSubview(whereType: targetType);
17
+ };
18
+
19
+ + #endif
20
+ +
21
+ var reactTouchHandlers: [RCTTouchHandler]? {
22
+ self.gestureRecognizers?.compactMap {
23
+ $0 as? RCTTouchHandler
24
+ @@ -58,6 +63,10 @@ public extension RCTView {
25
+ currentView = superview;
26
+ };
27
+
28
+ + #if !RCT_NEW_ARCH_ENABLED
29
+ return closestParentReactContentView?.reactTouchHandlers?.first;
30
+ + #else
31
+ + return nil;
32
+ + #endif
33
+ };
34
+ };
@@ -0,0 +1,87 @@
1
+ diff --git a/package.json b/package.json
2
+ index 2a5a78236a92756591adcc6ed55a71c7726e149f..c16a59ea7e8973c8e5da0d52ca4d623381bb0513 100644
3
+ --- a/package.json
4
+ +++ b/package.json
5
+ @@ -25,22 +25,22 @@
6
+ "react-native": "src/index",
7
+ "exports": {
8
+ ".": {
9
+ + "types": "./lib/typescript/index.d.ts",
10
+ "react-native": "./src/index.ts",
11
+ "import": "./lib/module/index.js",
12
+ - "require": "./lib/commonjs/index.js",
13
+ - "types": "./lib/typescript/index.d.ts"
14
+ + "require": "./lib/commonjs/index.js"
15
+ },
16
+ "./react-navigation": {
17
+ + "types": "./lib/typescript/navigators/react-navigation/index.d.ts",
18
+ "react-native": "./src/navigators/react-navigation/index.tsx",
19
+ "import": "./lib/module/navigators/react-navigation/index.js",
20
+ - "require": "./lib/commonjs/navigators/react-navigation/index.js",
21
+ - "types": "./lib/typescript/navigators/react-navigation/index.d.ts"
22
+ + "require": "./lib/commonjs/navigators/react-navigation/index.js"
23
+ },
24
+ "./expo-router": {
25
+ + "types": "./lib/typescript/navigators/expo-router/index.d.ts",
26
+ "react-native": "./src/navigators/expo-router/index.tsx",
27
+ "import": "./lib/module/navigators/expo-router/index.js",
28
+ - "require": "./lib/commonjs/navigators/expo-router/index.js",
29
+ - "types": "./lib/typescript/navigators/expo-router/index.d.ts"
30
+ + "require": "./lib/commonjs/navigators/expo-router/index.js"
31
+ }
32
+ },
33
+ "scripts": {
34
+ diff --git a/src/components/boundary/portal/teleport.ts b/src/components/boundary/portal/teleport.ts
35
+ --- a/src/components/boundary/portal/teleport.ts
36
+ +++ b/src/components/boundary/portal/teleport.ts
37
+ @@ -10,7 +10,13 @@
38
+ */
39
+ let mod: any = null;
40
+ try {
41
+ - mod = require("react-native-teleport");
42
+ + // A JS package can exist before its native views are linked into a dev client.
43
+ + // Treat that case as absent, rather than mounting RN's red placeholder views.
44
+ + // TODO(remove when upstream probes native availability): observed on iOS 27.
45
+ + const { UIManager } = require("react-native");
46
+ + if (UIManager.hasViewManagerConfig("PortalHostView") && UIManager.hasViewManagerConfig("PortalView")) {
47
+ + mod = require("react-native-teleport");
48
+ + }
49
+ } catch {}
50
+
51
+ const SafeNativePortalProvider: ComponentType<{ children: ReactNode }> | null =
52
+ diff --git a/lib/module/components/boundary/portal/teleport.js b/lib/module/components/boundary/portal/teleport.js
53
+ --- a/lib/module/components/boundary/portal/teleport.js
54
+ +++ b/lib/module/components/boundary/portal/teleport.js
55
+ @@ -10,7 +10,13 @@
56
+ */
57
+ let mod = null;
58
+ try {
59
+ - mod = require("react-native-teleport");
60
+ + // A JS package can exist before its native views are linked into a dev client.
61
+ + // Treat that case as absent, rather than mounting RN's red placeholder views.
62
+ + // TODO(remove when upstream probes native availability): observed on iOS 27.
63
+ + const { UIManager } = require("react-native");
64
+ + if (UIManager.hasViewManagerConfig("PortalHostView") && UIManager.hasViewManagerConfig("PortalView")) {
65
+ + mod = require("react-native-teleport");
66
+ + }
67
+ } catch {}
68
+ const SafeNativePortalProvider = mod?.PortalProvider ?? null;
69
+ export const isTeleportAvailable = mod !== null && SafeNativePortalProvider !== null;
70
+ diff --git a/lib/commonjs/components/boundary/portal/teleport.js b/lib/commonjs/components/boundary/portal/teleport.js
71
+ --- a/lib/commonjs/components/boundary/portal/teleport.js
72
+ +++ b/lib/commonjs/components/boundary/portal/teleport.js
73
+ @@ -14,7 +14,13 @@
74
+ */
75
+ let mod = null;
76
+ try {
77
+ - mod = require("react-native-teleport");
78
+ + // A JS package can exist before its native views are linked into a dev client.
79
+ + // Treat that case as absent, rather than mounting RN's red placeholder views.
80
+ + // TODO(remove when upstream probes native availability): observed on iOS 27.
81
+ + const { UIManager } = require("react-native");
82
+ + if (UIManager.hasViewManagerConfig("PortalHostView") && UIManager.hasViewManagerConfig("PortalView")) {
83
+ + mod = require("react-native-teleport");
84
+ + }
85
+ } catch {}
86
+ const SafeNativePortalProvider = mod?.PortalProvider ?? null;
87
+ const isTeleportAvailable = exports.isTeleportAvailable = mod !== null && SafeNativePortalProvider !== null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hjmds/react-native",
3
- "version": "1.7.0",
3
+ "version": "1.9.0",
4
4
  "description": "Expo-independent React Native renderers for HJM design contracts.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -249,35 +249,224 @@
249
249
  "react-native": "./dist/evidence.js",
250
250
  "import": "./dist/evidence.js",
251
251
  "default": "./dist/evidence.js"
252
+ },
253
+ "./toast-liquid": {
254
+ "types": "./dist/toast-liquid.d.ts",
255
+ "react-native": "./dist/toast-liquid.js",
256
+ "import": "./dist/toast-liquid.js",
257
+ "default": "./dist/toast-liquid.js"
258
+ },
259
+ "./thinking-orb": {
260
+ "types": "./dist/thinking-orb.d.ts",
261
+ "react-native": "./dist/thinking-orb.js",
262
+ "import": "./dist/thinking-orb.js",
263
+ "default": "./dist/thinking-orb.js"
264
+ },
265
+ "./image-viewer": {
266
+ "types": "./dist/image-viewer.d.ts",
267
+ "react-native": "./dist/image-viewer.js",
268
+ "import": "./dist/image-viewer.js",
269
+ "default": "./dist/image-viewer.js"
270
+ },
271
+ "./keyboard-controller": {
272
+ "types": "./dist/keyboard-controller.d.ts",
273
+ "react-native": "./dist/keyboard-controller.js",
274
+ "import": "./dist/keyboard-controller.js",
275
+ "default": "./dist/keyboard-controller.js"
276
+ },
277
+ "./sheet-gesture": {
278
+ "types": "./dist/sheet-gesture.d.ts",
279
+ "react-native": "./dist/sheet-gesture.js",
280
+ "import": "./dist/sheet-gesture.js",
281
+ "default": "./dist/sheet-gesture.js"
282
+ },
283
+ "./context-menu-native": {
284
+ "types": "./dist/context-menu-native.d.ts",
285
+ "react-native": "./dist/context-menu-native.js",
286
+ "import": "./dist/context-menu-native.js",
287
+ "default": "./dist/context-menu-native.js"
288
+ },
289
+ "./masonry": {
290
+ "types": "./dist/masonry.d.ts",
291
+ "react-native": "./dist/masonry.js",
292
+ "import": "./dist/masonry.js",
293
+ "default": "./dist/masonry.js"
294
+ },
295
+ "./virtual-list": {
296
+ "types": "./dist/virtual-list.d.ts",
297
+ "react-native": "./dist/virtual-list.js",
298
+ "import": "./dist/virtual-list.js",
299
+ "default": "./dist/virtual-list.js"
300
+ },
301
+ "./qr-code": {
302
+ "types": "./dist/qr-code.d.ts",
303
+ "react-native": "./dist/qr-code.js",
304
+ "import": "./dist/qr-code.js",
305
+ "default": "./dist/qr-code.js"
306
+ },
307
+ "./sortable": {
308
+ "types": "./dist/sortable.d.ts",
309
+ "react-native": "./dist/sortable.js",
310
+ "import": "./dist/sortable.js",
311
+ "default": "./dist/sortable.js"
312
+ },
313
+ "./swipe-actions": {
314
+ "types": "./dist/swipe-actions.d.ts",
315
+ "react-native": "./dist/swipe-actions.js",
316
+ "import": "./dist/swipe-actions.js",
317
+ "default": "./dist/swipe-actions.js"
318
+ },
319
+ "./content-transition": {
320
+ "types": "./dist/content-transition.d.ts",
321
+ "react-native": "./dist/content-transition.js",
322
+ "import": "./dist/content-transition.js",
323
+ "default": "./dist/content-transition.js"
324
+ },
325
+ "./carousel-motion": {
326
+ "types": "./dist/carousel-motion.d.ts",
327
+ "react-native": "./dist/carousel-motion.js",
328
+ "import": "./dist/carousel-motion.js",
329
+ "default": "./dist/carousel-motion.js"
330
+ },
331
+ "./celebration": {
332
+ "types": "./dist/celebration.d.ts",
333
+ "react-native": "./dist/celebration.js",
334
+ "import": "./dist/celebration.js",
335
+ "default": "./dist/celebration.js"
336
+ },
337
+ "./screen-transition": {
338
+ "types": "./dist/screen-transition.d.ts",
339
+ "react-native": "./dist/screen-transition.js",
340
+ "import": "./dist/screen-transition.js",
341
+ "default": "./dist/screen-transition.js"
252
342
  }
253
343
  },
254
344
  "files": [
255
345
  "dist",
256
346
  "README.md",
257
- "LICENSE"
347
+ "LICENSE",
348
+ "THIRD_PARTY_NOTICES.md",
349
+ "docs"
258
350
  ],
259
351
  "peerDependencies": {
260
- "@hjmds/design-contracts": ">=1.7.0 <1.8.0",
352
+ "@gorhom/bottom-sheet": "5.2.14",
353
+ "@hjmds/design-contracts": ">=1.9.0 <1.10.0",
354
+ "@react-native-menu/menu": "1.2.2",
355
+ "@shopify/react-native-skia": "^2.6.2",
261
356
  "react": ">=19",
262
- "react-native": ">=0.81"
357
+ "react-native": ">=0.81",
358
+ "react-native-gesture-handler": "2.32.0",
359
+ "react-native-ios-context-menu": "3.2.1",
360
+ "react-native-ios-utilities": "5.2.0",
361
+ "react-native-keyboard-controller": "1.22.5",
362
+ "react-native-reanimated": "^4.5.1",
363
+ "react-native-worklets": "^0.10.1",
364
+ "react-native-zoom-toolkit": "5.1.1",
365
+ "zeego": "3.0.6",
366
+ "react-native-svg": "15.15.5",
367
+ "qrcode-generator": "2.0.4",
368
+ "react-native-sortables": "1.10.1",
369
+ "react-native-reanimated-carousel": "5.1.1",
370
+ "react-native-fast-confetti": "2.0.2",
371
+ "react-native-screen-transitions": "4.0.0",
372
+ "@react-navigation/native": "7.4.1",
373
+ "react-native-safe-area-context": "5.7.0"
263
374
  },
264
375
  "devDependencies": {
265
376
  "@babel/runtime": "7.29.7",
377
+ "@gorhom/bottom-sheet": "5.2.14",
378
+ "@react-native-menu/menu": "1.2.2",
266
379
  "@react-native/metro-config": "0.81.6",
380
+ "@shopify/react-native-skia": "2.6.2",
267
381
  "@types/node": "^24.13.3",
268
382
  "@types/react": "^19.2.18",
269
383
  "@types/react-test-renderer": "^19.1.0",
270
384
  "metro": "0.83.8",
271
385
  "react": "19.2.3",
272
386
  "react-native": "^0.81.6",
387
+ "react-native-gesture-handler": "2.32.0",
388
+ "react-native-ios-context-menu": "3.2.1",
389
+ "react-native-ios-utilities": "5.2.0",
390
+ "react-native-keyboard-controller": "1.22.5",
391
+ "react-native-reanimated": "4.5.1",
392
+ "react-native-svg": "15.15.5",
393
+ "react-native-worklets": "0.10.1",
394
+ "react-native-zoom-toolkit": "5.1.1",
273
395
  "react-test-renderer": "19.2.3",
274
396
  "typescript": "^5.9.3",
275
397
  "vitest": "^4.1.11",
276
- "@hjmds/design-contracts": "1.7.0"
398
+ "zeego": "3.0.6",
399
+ "qrcode-generator": "2.0.4",
400
+ "react-native-sortables": "1.10.1",
401
+ "react-native-reanimated-carousel": "5.1.1",
402
+ "react-native-fast-confetti": "2.0.2",
403
+ "react-native-screen-transitions": "4.0.0",
404
+ "@react-navigation/native": "7.4.1",
405
+ "react-native-safe-area-context": "5.7.0",
406
+ "@hjmds/design-contracts": "1.9.0"
277
407
  },
278
408
  "engines": {
279
409
  "node": ">=20"
280
410
  },
411
+ "peerDependenciesMeta": {
412
+ "@shopify/react-native-skia": {
413
+ "optional": true
414
+ },
415
+ "react-native-reanimated": {
416
+ "optional": true
417
+ },
418
+ "react-native-worklets": {
419
+ "optional": true
420
+ },
421
+ "react-native-zoom-toolkit": {
422
+ "optional": true
423
+ },
424
+ "react-native-keyboard-controller": {
425
+ "optional": true
426
+ },
427
+ "@gorhom/bottom-sheet": {
428
+ "optional": true
429
+ },
430
+ "zeego": {
431
+ "optional": true
432
+ },
433
+ "@react-native-menu/menu": {
434
+ "optional": true
435
+ },
436
+ "react-native-ios-utilities": {
437
+ "optional": true
438
+ },
439
+ "react-native-ios-context-menu": {
440
+ "optional": true
441
+ },
442
+ "react-native-gesture-handler": {
443
+ "optional": true
444
+ },
445
+ "react-native-svg": {
446
+ "optional": true
447
+ },
448
+ "qrcode-generator": {
449
+ "optional": true
450
+ },
451
+ "react-native-sortables": {
452
+ "optional": true
453
+ },
454
+ "react-native-reanimated-carousel": {
455
+ "optional": true
456
+ },
457
+ "react-native-fast-confetti": {
458
+ "optional": true
459
+ },
460
+ "react-native-screen-transitions": {
461
+ "optional": true
462
+ },
463
+ "@react-navigation/native": {
464
+ "optional": true
465
+ },
466
+ "react-native-safe-area-context": {
467
+ "optional": true
468
+ }
469
+ },
281
470
  "scripts": {
282
471
  "build": "tsc -p tsconfig.build.json",
283
472
  "typecheck": "tsc -p tsconfig.json --noEmit",