expo-native-sheet-emojis 1.9.0 → 2.0.1

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 (49) hide show
  1. package/README.md +8 -6
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/expo/community/modules/emojisheet/EmojiGridAdapter.kt +10 -0
  4. package/android/src/main/java/expo/community/modules/emojisheet/EmojiSheetContentView.kt +6 -0
  5. package/android/src/main/java/expo/community/modules/emojisheet/EmojiSheetModule.kt +4 -1
  6. package/ios/EmojiGridView.swift +1 -0
  7. package/ios/EmojiSheetContentView.swift +8 -0
  8. package/ios/EmojiSheetModule.podspec +1 -1
  9. package/ios/EmojiSheetModule.swift +9 -1
  10. package/lib/commonjs/EmojiSheetModule.js +12 -1
  11. package/lib/commonjs/EmojiSheetModule.js.map +1 -1
  12. package/lib/commonjs/EmojiSheetView.js +4 -2
  13. package/lib/commonjs/EmojiSheetView.js.map +1 -1
  14. package/lib/module/EmojiSheetModule.js +12 -1
  15. package/lib/module/EmojiSheetModule.js.map +1 -1
  16. package/lib/module/EmojiSheetView.js +4 -2
  17. package/lib/module/EmojiSheetView.js.map +1 -1
  18. package/lib/typescript/EmojiSheetModule.d.ts.map +1 -1
  19. package/lib/typescript/EmojiSheetModule.types.d.ts +12 -1
  20. package/lib/typescript/EmojiSheetModule.types.d.ts.map +1 -1
  21. package/lib/typescript/EmojiSheetView.d.ts +1 -1
  22. package/lib/typescript/EmojiSheetView.d.ts.map +1 -1
  23. package/package.json +5 -2
  24. package/plugin/build/withEmojiSheet.js +38 -22
  25. package/src/EmojiSheetModule.ts +15 -2
  26. package/src/EmojiSheetModule.types.ts +7 -4
  27. package/src/EmojiSheetView.tsx +3 -1
  28. package/android/src/main/assets/translations/.gitkeep +0 -0
  29. package/android/src/main/assets/translations/ca.json +0 -1
  30. package/android/src/main/assets/translations/cs.json +0 -1
  31. package/android/src/main/assets/translations/de.json +0 -1
  32. package/android/src/main/assets/translations/el.json +0 -1
  33. package/android/src/main/assets/translations/en.json +0 -1
  34. package/android/src/main/assets/translations/es.json +0 -1
  35. package/android/src/main/assets/translations/fi.json +0 -1
  36. package/android/src/main/assets/translations/fr.json +0 -1
  37. package/android/src/main/assets/translations/hi.json +0 -1
  38. package/android/src/main/assets/translations/hu.json +0 -1
  39. package/android/src/main/assets/translations/it.json +0 -1
  40. package/android/src/main/assets/translations/ja.json +0 -1
  41. package/android/src/main/assets/translations/ko.json +0 -1
  42. package/android/src/main/assets/translations/nl.json +0 -1
  43. package/android/src/main/assets/translations/pl.json +0 -1
  44. package/android/src/main/assets/translations/pt.json +0 -1
  45. package/android/src/main/assets/translations/ru.json +0 -1
  46. package/android/src/main/assets/translations/sv.json +0 -1
  47. package/android/src/main/assets/translations/tr.json +0 -1
  48. package/android/src/main/assets/translations/uk.json +0 -1
  49. package/android/src/main/assets/translations/zh.json +0 -1
package/README.md CHANGED
@@ -72,7 +72,7 @@ function MyComponent() {
72
72
  style={{ flex: 1 }}
73
73
  theme="light"
74
74
  layoutDirection="auto"
75
- onEmojiSelected={(emoji) => console.log(emoji)}
75
+ onEmojiSelected={(emoji, name, id) => console.log(emoji, name, id)}
76
76
  columns={7}
77
77
  showSearch={true}
78
78
  />
@@ -278,7 +278,7 @@ Presents the emoji picker as a native bottom sheet. Returns a promise that resol
278
278
  **Returns:** `Promise<EmojiSheetResult>`
279
279
 
280
280
  The result is a discriminated union:
281
- - `{ emoji: string }` when an emoji is selected
281
+ - `{ emoji: string; name: string; id: string }` when an emoji is selected
282
282
  - `{ cancelled: true }` when the sheet is dismissed without selection
283
283
 
284
284
  ### EmojiSheetModule.dismiss()
@@ -307,8 +307,9 @@ A declarative React component that renders the emoji picker inline.
307
307
 
308
308
  | Prop | Type | Default | Description |
309
309
  |-|-|-|-|
310
- | onEmojiSelected | `(emoji: string) => void` | required | Called when an emoji is tapped |
310
+ | onEmojiSelected | `(emoji: string, name: string, id: string) => void` | required | Called when an emoji is tapped |
311
311
  | onDismiss | `() => void` | -- | Called when the picker is dismissed (View API only, not Embedded view) |
312
+ | onOpen | `() => void` | -- | Called when the picker becomes visible |
312
313
  | theme | `EmojiSheetTheme \| 'dark' \| 'light' \| 'system'` | `'light'` | Theme configuration |
313
314
  | translations | `EmojiSheetTranslations` | -- | Localized strings |
314
315
  | layoutDirection | `'auto' \| 'ltr' \| 'rtl'` | `'auto'` | UI layout direction. `'auto'` follows the device locale; use `'ltr'` or `'rtl'` to force a direction. |
@@ -372,6 +373,7 @@ All theme fields with their purpose:
372
373
  | gestureEnabled | `boolean` | `true` | Allow swipe-to-dismiss gesture |
373
374
  | backdropOpacity | `number` | `0.22` | Opacity of the backdrop behind the sheet |
374
375
  | excludeEmojis | `string[]` | `[]` | Emoji IDs to hide from the picker |
376
+ | onOpen | `() => void` | -- | Called when the sheet becomes visible |
375
377
 
376
378
  ### EmojiSheetResult
377
379
 
@@ -379,8 +381,8 @@ A discriminated union type:
379
381
 
380
382
  ```typescript
381
383
  type EmojiSheetResult =
382
- | { emoji: string; cancelled?: never }
383
- | { cancelled: true; emoji?: never };
384
+ | { emoji: string; name: string; id: string; cancelled?: never }
385
+ | { cancelled: true; emoji?: never; name?: never; id?: never };
384
386
  ```
385
387
 
386
388
  ## Category Bar Position
@@ -431,7 +433,7 @@ await EmojiSheetModule.present({
431
433
 
432
434
  ## LLM / AI Agent Reference
433
435
 
434
- If you're an AI agent or using an LLM to integrate this module, see [llms.txt](llms.txt) for a concise, structured reference with all types, APIs, and usage patterns.
436
+ If you're an AI agent or using an LLM to integrate this module, see [llms.txt](https://raw.githubusercontent.com/efstathiosntonas/expo-native-sheet-emojis/refs/heads/main/llms.txt) for a concise, structured reference with all types, APIs, and usage patterns.
435
437
 
436
438
  ## Contributing
437
439
 
@@ -43,7 +43,7 @@ android {
43
43
 
44
44
  dependencies {
45
45
  implementation "androidx.recyclerview:recyclerview:1.3.2"
46
- implementation "androidx.appcompat:appcompat:1.6.1"
46
+ implementation "androidx.appcompat:appcompat:1.7.0"
47
47
  implementation "com.google.android.material:material:1.12.0"
48
48
  implementation "androidx.emoji2:emoji2:1.6.0"
49
49
  implementation "androidx.emoji2:emoji2-views-helper:1.6.0"
@@ -9,6 +9,9 @@ import android.view.ViewGroup
9
9
  import android.widget.FrameLayout
10
10
  import android.widget.TextView
11
11
  import androidx.appcompat.widget.AppCompatTextView
12
+ import androidx.core.view.AccessibilityDelegateCompat
13
+ import androidx.core.view.ViewCompat
14
+ import androidx.core.view.accessibility.AccessibilityNodeInfoCompat
12
15
  import androidx.recyclerview.widget.RecyclerView
13
16
 
14
17
  class EmojiGridAdapter(
@@ -140,9 +143,16 @@ class EmojiGridAdapter(
140
143
  onEmojiLongPress(h.container, item.emoji, item.id)
141
144
  true
142
145
  }
146
+ ViewCompat.setAccessibilityDelegate(h.container, object : AccessibilityDelegateCompat() {
147
+ override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfoCompat) {
148
+ super.onInitializeAccessibilityNodeInfo(host, info)
149
+ info.hintText = "Hold to select skin tone"
150
+ }
151
+ })
143
152
  } else {
144
153
  h.container.setOnLongClickListener(null)
145
154
  h.container.isLongClickable = false
155
+ ViewCompat.setAccessibilityDelegate(h.container, null)
146
156
  }
147
157
  }
148
158
  }
@@ -14,6 +14,7 @@ class EmojiSheetContentView(
14
14
 
15
15
  private val onEmojiSelected by EventDispatcher()
16
16
  private val onDismiss by EventDispatcher()
17
+ private val onOpen by EventDispatcher()
17
18
  private val pickerView = EmojiSheetUIView(context)
18
19
 
19
20
  init {
@@ -25,6 +26,11 @@ class EmojiSheetContentView(
25
26
  pickerView.loadDataAsync()
26
27
  }
27
28
 
29
+ override fun onAttachedToWindow() {
30
+ super.onAttachedToWindow()
31
+ onOpen(mapOf<String, Any>())
32
+ }
33
+
28
34
  fun applyConfiguration() {
29
35
  pickerView.applyConfiguration()
30
36
  }
@@ -29,6 +29,8 @@ class EmojiSheetModule : Module() {
29
29
  ModuleDefinition {
30
30
  Name("EmojiSheet")
31
31
 
32
+ Events("onSheetOpened")
33
+
32
34
  OnCreate {
33
35
  val ctx = appContext.reactContext ?: return@OnCreate
34
36
  EmojiSheetUIView.warmCache(ctx)
@@ -115,7 +117,7 @@ class EmojiSheetModule : Module() {
115
117
  Prop("excludeEmojis") { view: EmojiSheetContentView, ids: List<String>? ->
116
118
  view.updateExcludeEmojis(ids ?: emptyList())
117
119
  }
118
- Events("onEmojiSelected", "onDismiss")
120
+ Events("onEmojiSelected", "onDismiss", "onOpen")
119
121
  }
120
122
  }
121
123
 
@@ -308,6 +310,7 @@ class EmojiSheetModule : Module() {
308
310
  (parent as? View)?.setBackgroundColor(Color.TRANSPARENT)
309
311
  }
310
312
  pickerView.loadDataAsync()
313
+ sendEvent("onSheetOpened", android.os.Bundle())
311
314
  }
312
315
 
313
316
  bottomSheet.window?.let { window ->
@@ -213,6 +213,7 @@ class EmojiGridView: UIView, UICollectionViewDataSource, UICollectionViewDelegat
213
213
  cell.isAccessibilityElement = true
214
214
  cell.accessibilityLabel = item.name
215
215
  cell.accessibilityTraits = .button
216
+ cell.accessibilityHint = (enableSkinTones && item.toneEnabled) ? "Hold to select skin tone" : nil
216
217
 
217
218
  // Add long press for tone-enabled emojis
218
219
  if enableSkinTones && item.toneEnabled {
@@ -22,6 +22,7 @@ struct EmojiSection: Sendable {
22
22
  class EmojiSheetContentView: ExpoView, EmojiSheetUIViewDelegate {
23
23
  let onEmojiSelected = EventDispatcher()
24
24
  let onDismiss = EventDispatcher()
25
+ let onOpen = EventDispatcher()
25
26
  private let pickerView = EmojiSheetUIView()
26
27
 
27
28
  required init(appContext: AppContext? = nil) {
@@ -42,6 +43,13 @@ class EmojiSheetContentView: ExpoView, EmojiSheetUIViewDelegate {
42
43
  fatalError("init(coder:) has not been implemented")
43
44
  }
44
45
 
46
+ override func didMoveToWindow() {
47
+ super.didMoveToWindow()
48
+ if window != nil {
49
+ onOpen([:])
50
+ }
51
+ }
52
+
45
53
  func updateTheme(_ theme: String) {
46
54
  pickerView.updateTheme(theme)
47
55
  }
@@ -1,6 +1,6 @@
1
1
  Pod::Spec.new do |s|
2
2
  s.name = 'EmojiSheetModule'
3
- s.version = '1.9.0'
3
+ s.version = '2.0.1'
4
4
  s.summary = 'Native emoji picker bottom sheet for React Native'
5
5
  s.description = 'A fully native iOS/Android emoji picker presented in a bottom sheet with search, skin tones, and theming support.'
6
6
  s.author = ''
@@ -9,6 +9,8 @@ public class EmojiSheetModule: Module {
9
9
  public func definition() -> ModuleDefinition {
10
10
  Name("EmojiSheet")
11
11
 
12
+ Events("onSheetOpened")
13
+
12
14
  OnCreate {
13
15
  EmojiSheetUIView.warmCache()
14
16
  }
@@ -87,7 +89,7 @@ public class EmojiSheetModule: Module {
87
89
  Prop("excludeEmojis") { (view, ids: [String]?) in
88
90
  view.updateExcludeEmojis(ids ?? [])
89
91
  }
90
- Events("onEmojiSelected", "onDismiss")
92
+ Events("onEmojiSelected", "onDismiss", "onOpen")
91
93
  }
92
94
  }
93
95
 
@@ -209,6 +211,9 @@ public class EmojiSheetModule: Module {
209
211
  sheetVC.mediumDetentRatio = CGFloat(snapPoints.first ?? 0.5)
210
212
  sheetVC.gestureEnabled = gestureEnabled
211
213
  sheetVC.embedPickerView(pickerView)
214
+ sheetVC.onAppear = { [weak self] in
215
+ self?.sendEvent("onSheetOpened", [:])
216
+ }
212
217
  sheetVC.onDismiss = { [weak self] in
213
218
  if let promise = self?.currentPromise {
214
219
  promise.resolve(["cancelled": true])
@@ -312,6 +317,7 @@ private final class SheetViewController: UIViewController, UIGestureRecognizerDe
312
317
  case large
313
318
  }
314
319
 
320
+ var onAppear: (() -> Void)?
315
321
  var onDismiss: (() -> Void)?
316
322
  var mediumDetentRatio: CGFloat = 0.5
317
323
  var gestureEnabled: Bool = true
@@ -373,6 +379,8 @@ private final class SheetViewController: UIViewController, UIGestureRecognizerDe
373
379
  ) {
374
380
  self.backdropView.alpha = Layout.backdropAlpha
375
381
  self.sheetContainerView.transform = self.transform(for: self.currentDetent)
382
+ } completion: { [weak self] _ in
383
+ self?.onAppear?()
376
384
  }
377
385
  }
378
386
 
@@ -59,7 +59,18 @@ function flattenOptions(options) {
59
59
  const NativeEmojiSheet = (0, _expo.requireNativeModule)('EmojiSheet');
60
60
  var _default = exports.default = {
61
61
  present(options = {}) {
62
- return NativeEmojiSheet.present(flattenOptions(options));
62
+ let subscription = null;
63
+ if (options.onOpen) {
64
+ subscription = NativeEmojiSheet.addListener('onSheetOpened', () => {
65
+ options.onOpen();
66
+ subscription?.remove();
67
+ subscription = null;
68
+ });
69
+ }
70
+ return NativeEmojiSheet.present(flattenOptions(options)).finally(() => {
71
+ subscription?.remove();
72
+ subscription = null;
73
+ });
63
74
  },
64
75
  dismiss() {
65
76
  return NativeEmojiSheet.dismiss();
@@ -1 +1 @@
1
- {"version":3,"names":["_expo","require","flattenOptions","options","flat","theme","backgroundColor","searchBarBackgroundColor","textColor","textSecondaryColor","accentColor","dividerColor","searchTextColor","placeholderTextColor","selectionColor","categoryIconColor","categoryActiveIconColor","categoryActiveBackgroundColor","handleColor","categoryBarBackgroundColor","translations","searchPlaceholder","noResultsText","categoryNames","layoutDirection","snapPoints","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","enableHaptics","enableAnimations","gestureEnabled","backdropOpacity","excludeEmojis","NativeEmojiSheet","requireNativeModule","_default","exports","default","present","dismiss","clearRecents","clearSkinTonePreferences"],"sourceRoot":"../../src","sources":["EmojiSheetModule.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_expo","require","flattenOptions","options","flat","theme","backgroundColor","searchBarBackgroundColor","textColor","textSecondaryColor","accentColor","dividerColor","searchTextColor","placeholderTextColor","selectionColor","categoryIconColor","categoryActiveIconColor","categoryActiveBackgroundColor","handleColor","categoryBarBackgroundColor","translations","searchPlaceholder","noResultsText","categoryNames","layoutDirection","snapPoints","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","enableHaptics","enableAnimations","gestureEnabled","backdropOpacity","excludeEmojis","NativeEmojiSheet","requireNativeModule","_default","exports","default","present","subscription","onOpen","addListener","remove","finally","dismiss","clearRecents","clearSkinTonePreferences"],"sourceRoot":"../../src","sources":["EmojiSheetModule.ts"],"mappings":"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","ignoreList":[]}
@@ -10,6 +10,7 @@ const NativeView = (0, _expo.requireNativeView)('EmojiSheet');
10
10
  function EmojiSheetView({
11
11
  onEmojiSelected,
12
12
  onDismiss,
13
+ onOpen,
13
14
  theme,
14
15
  translations,
15
16
  layoutDirection,
@@ -51,9 +52,10 @@ function EmojiSheetView({
51
52
  onEmojiSelected: ({
52
53
  nativeEvent
53
54
  }) => {
54
- onEmojiSelected(nativeEvent.emoji);
55
+ onEmojiSelected(nativeEvent.emoji, nativeEvent.name, nativeEvent.id);
55
56
  },
56
- onDismiss: onDismiss ? () => onDismiss() : undefined
57
+ onDismiss: onDismiss ? () => onDismiss() : undefined,
58
+ onOpen: onOpen ? () => onOpen() : undefined
57
59
  });
58
60
  }
59
61
  //# sourceMappingURL=EmojiSheetView.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_expo","require","_jsxRuntime","NativeView","requireNativeView","EmojiSheetView","onEmojiSelected","onDismiss","theme","translations","layoutDirection","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","enableHaptics","enableAnimations","excludeEmojis","rest","resolvedTheme","jsx","searchPlaceholder","noResultsText","categoryNames","nativeEvent","emoji","undefined"],"sourceRoot":"../../src","sources":["EmojiSheetView.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAAyC,IAAAC,WAAA,GAAAD,OAAA;AAOzC,MAAME,UAA0D,GAC9D,IAAAC,uBAAiB,EAAC,YAAY,CAAC;AAElB,SAASC,cAAcA,CAAC;EACrCC,eAAe;EACfC,SAAS;EACTC,KAAK;EACLC,YAAY;EACZC,eAAe;EACfC,mBAAmB;EACnBC,OAAO;EACPC,SAAS;EACTC,WAAW;EACXC,UAAU;EACVC,WAAW;EACXC,eAAe;EACfC,aAAa;EACbC,gBAAgB;EAChBC,aAAa;EACb,GAAGC;AACgB,CAAC,EAAE;EACtB,MAAMC,aAAa,GAAG,OAAOd,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAGA,KAAK;;EAElE;EACA;EACA;;EAEA,oBACE,IAAAN,WAAA,CAAAqB,GAAA,EAACpB,UAAU;IAAA,GACLkB,IAAI;IACRb,KAAK,EAAEc,aAAc;IACrBZ,eAAe,EAAEA,eAAgB;IACjCC,mBAAmB,EAAEA,mBAAoB;IACzCC,OAAO,EAAEA,OAAQ;IACjBC,SAAS,EAAEA,SAAU;IACrBC,WAAW,EAAEA,WAAY;IACzBC,UAAU,EAAEA,UAAW;IACvBC,WAAW,EAAEA,WAAY;IACzBC,eAAe,EAAEA,eAAgB;IACjCC,aAAa,EAAEA,aAAc;IAC7BC,gBAAgB,EAAEA,gBAAiB;IACnCC,aAAa,EAAEA,aAAc;IAC7BI,iBAAiB,EAAEf,YAAY,EAAEe,iBAAkB;IACnDC,aAAa,EAAEhB,YAAY,EAAEgB,aAAc;IAC3CC,aAAa,EAAEjB,YAAY,EAAEiB,aAAc;IAC3CpB,eAAe,EAAEA,CAAC;MAAEqB;IAAY,CAAC,KAAK;MACpCrB,eAAe,CAACqB,WAAW,CAACC,KAAK,CAAC;IACpC,CAAE;IACFrB,SAAS,EAAEA,SAAS,GAAG,MAAMA,SAAS,CAAC,CAAC,GAAGsB;EAAU,CACtD,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"names":["_expo","require","_jsxRuntime","NativeView","requireNativeView","EmojiSheetView","onEmojiSelected","onDismiss","onOpen","theme","translations","layoutDirection","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","enableHaptics","enableAnimations","excludeEmojis","rest","resolvedTheme","jsx","searchPlaceholder","noResultsText","categoryNames","nativeEvent","emoji","name","id","undefined"],"sourceRoot":"../../src","sources":["EmojiSheetView.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAAyC,IAAAC,WAAA,GAAAD,OAAA;AAOzC,MAAME,UAA0D,GAC9D,IAAAC,uBAAiB,EAAC,YAAY,CAAC;AAElB,SAASC,cAAcA,CAAC;EACrCC,eAAe;EACfC,SAAS;EACTC,MAAM;EACNC,KAAK;EACLC,YAAY;EACZC,eAAe;EACfC,mBAAmB;EACnBC,OAAO;EACPC,SAAS;EACTC,WAAW;EACXC,UAAU;EACVC,WAAW;EACXC,eAAe;EACfC,aAAa;EACbC,gBAAgB;EAChBC,aAAa;EACb,GAAGC;AACgB,CAAC,EAAE;EACtB,MAAMC,aAAa,GAAG,OAAOd,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAGA,KAAK;;EAElE;EACA;EACA;;EAEA,oBACE,IAAAP,WAAA,CAAAsB,GAAA,EAACrB,UAAU;IAAA,GACLmB,IAAI;IACRb,KAAK,EAAEc,aAAc;IACrBZ,eAAe,EAAEA,eAAgB;IACjCC,mBAAmB,EAAEA,mBAAoB;IACzCC,OAAO,EAAEA,OAAQ;IACjBC,SAAS,EAAEA,SAAU;IACrBC,WAAW,EAAEA,WAAY;IACzBC,UAAU,EAAEA,UAAW;IACvBC,WAAW,EAAEA,WAAY;IACzBC,eAAe,EAAEA,eAAgB;IACjCC,aAAa,EAAEA,aAAc;IAC7BC,gBAAgB,EAAEA,gBAAiB;IACnCC,aAAa,EAAEA,aAAc;IAC7BI,iBAAiB,EAAEf,YAAY,EAAEe,iBAAkB;IACnDC,aAAa,EAAEhB,YAAY,EAAEgB,aAAc;IAC3CC,aAAa,EAAEjB,YAAY,EAAEiB,aAAc;IAC3CrB,eAAe,EAAEA,CAAC;MAAEsB;IAAY,CAAC,KAAK;MACpCtB,eAAe,CAACsB,WAAW,CAACC,KAAK,EAAED,WAAW,CAACE,IAAI,EAAEF,WAAW,CAACG,EAAE,CAAC;IACtE,CAAE;IACFxB,SAAS,EAAEA,SAAS,GAAG,MAAMA,SAAS,CAAC,CAAC,GAAGyB,SAAU;IACrDxB,MAAM,EAAEA,MAAM,GAAG,MAAMA,MAAM,CAAC,CAAC,GAAGwB;EAAU,CAC7C,CAAC;AAEN","ignoreList":[]}
@@ -55,7 +55,18 @@ function flattenOptions(options) {
55
55
  const NativeEmojiSheet = requireNativeModule('EmojiSheet');
56
56
  export default {
57
57
  present(options = {}) {
58
- return NativeEmojiSheet.present(flattenOptions(options));
58
+ let subscription = null;
59
+ if (options.onOpen) {
60
+ subscription = NativeEmojiSheet.addListener('onSheetOpened', () => {
61
+ options.onOpen();
62
+ subscription?.remove();
63
+ subscription = null;
64
+ });
65
+ }
66
+ return NativeEmojiSheet.present(flattenOptions(options)).finally(() => {
67
+ subscription?.remove();
68
+ subscription = null;
69
+ });
59
70
  },
60
71
  dismiss() {
61
72
  return NativeEmojiSheet.dismiss();
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModule","requireNativeModule","flattenOptions","options","flat","theme","backgroundColor","searchBarBackgroundColor","textColor","textSecondaryColor","accentColor","dividerColor","searchTextColor","placeholderTextColor","selectionColor","categoryIconColor","categoryActiveIconColor","categoryActiveBackgroundColor","handleColor","categoryBarBackgroundColor","translations","searchPlaceholder","noResultsText","categoryNames","layoutDirection","snapPoints","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","enableHaptics","enableAnimations","gestureEnabled","backdropOpacity","excludeEmojis","NativeEmojiSheet","present","dismiss","clearRecents","clearSkinTonePreferences"],"sourceRoot":"../../src","sources":["EmojiSheetModule.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NativeModule","requireNativeModule","flattenOptions","options","flat","theme","backgroundColor","searchBarBackgroundColor","textColor","textSecondaryColor","accentColor","dividerColor","searchTextColor","placeholderTextColor","selectionColor","categoryIconColor","categoryActiveIconColor","categoryActiveBackgroundColor","handleColor","categoryBarBackgroundColor","translations","searchPlaceholder","noResultsText","categoryNames","layoutDirection","snapPoints","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","enableHaptics","enableAnimations","gestureEnabled","backdropOpacity","excludeEmojis","NativeEmojiSheet","present","subscription","onOpen","addListener","remove","finally","dismiss","clearRecents","clearSkinTonePreferences"],"sourceRoot":"../../src","sources":["EmojiSheetModule.ts"],"mappings":"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","ignoreList":[]}
@@ -6,6 +6,7 @@ const NativeView = requireNativeView('EmojiSheet');
6
6
  export default function EmojiSheetView({
7
7
  onEmojiSelected,
8
8
  onDismiss,
9
+ onOpen,
9
10
  theme,
10
11
  translations,
11
12
  layoutDirection,
@@ -47,9 +48,10 @@ export default function EmojiSheetView({
47
48
  onEmojiSelected: ({
48
49
  nativeEvent
49
50
  }) => {
50
- onEmojiSelected(nativeEvent.emoji);
51
+ onEmojiSelected(nativeEvent.emoji, nativeEvent.name, nativeEvent.id);
51
52
  },
52
- onDismiss: onDismiss ? () => onDismiss() : undefined
53
+ onDismiss: onDismiss ? () => onDismiss() : undefined,
54
+ onOpen: onOpen ? () => onOpen() : undefined
53
55
  });
54
56
  }
55
57
  //# sourceMappingURL=EmojiSheetView.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["requireNativeView","jsx","_jsx","NativeView","EmojiSheetView","onEmojiSelected","onDismiss","theme","translations","layoutDirection","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","enableHaptics","enableAnimations","excludeEmojis","rest","resolvedTheme","searchPlaceholder","noResultsText","categoryNames","nativeEvent","emoji","undefined"],"sourceRoot":"../../src","sources":["EmojiSheetView.tsx"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,MAAM;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOzC,MAAMC,UAA0D,GAC9DH,iBAAiB,CAAC,YAAY,CAAC;AAEjC,eAAe,SAASI,cAAcA,CAAC;EACrCC,eAAe;EACfC,SAAS;EACTC,KAAK;EACLC,YAAY;EACZC,eAAe;EACfC,mBAAmB;EACnBC,OAAO;EACPC,SAAS;EACTC,WAAW;EACXC,UAAU;EACVC,WAAW;EACXC,eAAe;EACfC,aAAa;EACbC,gBAAgB;EAChBC,aAAa;EACb,GAAGC;AACgB,CAAC,EAAE;EACtB,MAAMC,aAAa,GAAG,OAAOd,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAGA,KAAK;;EAElE;EACA;EACA;;EAEA,oBACEL,IAAA,CAACC,UAAU;IAAA,GACLiB,IAAI;IACRb,KAAK,EAAEc,aAAc;IACrBZ,eAAe,EAAEA,eAAgB;IACjCC,mBAAmB,EAAEA,mBAAoB;IACzCC,OAAO,EAAEA,OAAQ;IACjBC,SAAS,EAAEA,SAAU;IACrBC,WAAW,EAAEA,WAAY;IACzBC,UAAU,EAAEA,UAAW;IACvBC,WAAW,EAAEA,WAAY;IACzBC,eAAe,EAAEA,eAAgB;IACjCC,aAAa,EAAEA,aAAc;IAC7BC,gBAAgB,EAAEA,gBAAiB;IACnCC,aAAa,EAAEA,aAAc;IAC7BG,iBAAiB,EAAEd,YAAY,EAAEc,iBAAkB;IACnDC,aAAa,EAAEf,YAAY,EAAEe,aAAc;IAC3CC,aAAa,EAAEhB,YAAY,EAAEgB,aAAc;IAC3CnB,eAAe,EAAEA,CAAC;MAAEoB;IAAY,CAAC,KAAK;MACpCpB,eAAe,CAACoB,WAAW,CAACC,KAAK,CAAC;IACpC,CAAE;IACFpB,SAAS,EAAEA,SAAS,GAAG,MAAMA,SAAS,CAAC,CAAC,GAAGqB;EAAU,CACtD,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"names":["requireNativeView","jsx","_jsx","NativeView","EmojiSheetView","onEmojiSelected","onDismiss","onOpen","theme","translations","layoutDirection","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","enableHaptics","enableAnimations","excludeEmojis","rest","resolvedTheme","searchPlaceholder","noResultsText","categoryNames","nativeEvent","emoji","name","id","undefined"],"sourceRoot":"../../src","sources":["EmojiSheetView.tsx"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,MAAM;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOzC,MAAMC,UAA0D,GAC9DH,iBAAiB,CAAC,YAAY,CAAC;AAEjC,eAAe,SAASI,cAAcA,CAAC;EACrCC,eAAe;EACfC,SAAS;EACTC,MAAM;EACNC,KAAK;EACLC,YAAY;EACZC,eAAe;EACfC,mBAAmB;EACnBC,OAAO;EACPC,SAAS;EACTC,WAAW;EACXC,UAAU;EACVC,WAAW;EACXC,eAAe;EACfC,aAAa;EACbC,gBAAgB;EAChBC,aAAa;EACb,GAAGC;AACgB,CAAC,EAAE;EACtB,MAAMC,aAAa,GAAG,OAAOd,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAGA,KAAK;;EAElE;EACA;EACA;;EAEA,oBACEN,IAAA,CAACC,UAAU;IAAA,GACLkB,IAAI;IACRb,KAAK,EAAEc,aAAc;IACrBZ,eAAe,EAAEA,eAAgB;IACjCC,mBAAmB,EAAEA,mBAAoB;IACzCC,OAAO,EAAEA,OAAQ;IACjBC,SAAS,EAAEA,SAAU;IACrBC,WAAW,EAAEA,WAAY;IACzBC,UAAU,EAAEA,UAAW;IACvBC,WAAW,EAAEA,WAAY;IACzBC,eAAe,EAAEA,eAAgB;IACjCC,aAAa,EAAEA,aAAc;IAC7BC,gBAAgB,EAAEA,gBAAiB;IACnCC,aAAa,EAAEA,aAAc;IAC7BG,iBAAiB,EAAEd,YAAY,EAAEc,iBAAkB;IACnDC,aAAa,EAAEf,YAAY,EAAEe,aAAc;IAC3CC,aAAa,EAAEhB,YAAY,EAAEgB,aAAc;IAC3CpB,eAAe,EAAEA,CAAC;MAAEqB;IAAY,CAAC,KAAK;MACpCrB,eAAe,CAACqB,WAAW,CAACC,KAAK,EAAED,WAAW,CAACE,IAAI,EAAEF,WAAW,CAACG,EAAE,CAAC;IACtE,CAAE;IACFvB,SAAS,EAAEA,SAAS,GAAG,MAAMA,SAAS,CAAC,CAAC,GAAGwB,SAAU;IACrDvB,MAAM,EAAEA,MAAM,GAAG,MAAMA,MAAM,CAAC,CAAC,GAAGuB;EAAU,CAC7C,CAAC;AAEN","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"EmojiSheetModule.d.ts","sourceRoot":"","sources":["../../src/EmojiSheetModule.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAmB,MAAM,0BAA0B,CAAC;AAkE5G,YAAY,EAAE,gBAAgB,EAAE,CAAC;;sBAGd,wBAAwB,GAAQ,OAAO,CAAC,gBAAgB,CAAC;eAG/D,OAAO,CAAC,IAAI,CAAC;oBAGR,OAAO,CAAC,IAAI,CAAC;gCAGD,OAAO,CAAC,IAAI,CAAC;;AAV3C,wBAaE"}
1
+ {"version":3,"file":"EmojiSheetModule.d.ts","sourceRoot":"","sources":["../../src/EmojiSheetModule.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAmB,MAAM,0BAA0B,CAAC;AAkE5G,YAAY,EAAE,gBAAgB,EAAE,CAAC;;sBAGd,wBAAwB,GAAQ,OAAO,CAAC,gBAAgB,CAAC;eAgB/D,OAAO,CAAC,IAAI,CAAC;oBAGR,OAAO,CAAC,IAAI,CAAC;gCAGD,OAAO,CAAC,IAAI,CAAC;;AAvB3C,wBA0BE"}
@@ -38,22 +38,30 @@ export type EmojiSheetPresentOptions = {
38
38
  gestureEnabled?: boolean;
39
39
  backdropOpacity?: number;
40
40
  excludeEmojis?: string[];
41
+ onOpen?: () => void;
41
42
  };
42
43
  export type EmojiSheetResult = {
43
44
  emoji: string;
45
+ name: string;
46
+ id: string;
44
47
  cancelled?: never;
45
48
  } | {
46
49
  cancelled: true;
47
50
  emoji?: never;
51
+ name?: never;
52
+ id?: never;
48
53
  };
49
54
  export type EmojiSelectionListener = (event: {
50
55
  nativeEvent: {
51
56
  emoji: string;
57
+ name: string;
58
+ id: string;
52
59
  };
53
60
  }) => void;
54
61
  export type EmojiSheetViewProps = ViewProps & {
55
- onEmojiSelected: (emoji: string) => void;
62
+ onEmojiSelected: (emoji: string, name: string, id: string) => void;
56
63
  onDismiss?: () => void;
64
+ onOpen?: () => void;
57
65
  theme?: EmojiSheetTheme | 'dark' | 'light' | 'system';
58
66
  translations?: EmojiSheetTranslations;
59
67
  layoutDirection?: 'ltr' | 'rtl' | 'auto';
@@ -73,6 +81,9 @@ export type EmojiSheetNativeViewProps = ViewProps & {
73
81
  onDismiss?: (event: {
74
82
  nativeEvent: {};
75
83
  }) => void;
84
+ onOpen?: (event: {
85
+ nativeEvent: {};
86
+ }) => void;
76
87
  theme?: string;
77
88
  layoutDirection?: 'ltr' | 'rtl' | 'auto';
78
89
  categoryBarPosition?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"EmojiSheetModule.types.d.ts","sourceRoot":"","sources":["../../src/EmojiSheetModule.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,MAAM,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,GACb,gBAAgB,GAChB,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,SAAS,GACT,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,MAAM,sBAAsB,GAAG;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtD,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,eAAe,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IACzC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,mBAAmB,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GACpC;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEvC,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,KAAK,IAAI,CAAC;AAEzF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG;IAC5C,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtD,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,eAAe,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IACzC,mBAAmB,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG;IAClD,eAAe,EAAE,sBAAsB,CAAC;IACxC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IACzC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC"}
1
+ {"version":3,"file":"EmojiSheetModule.types.d.ts","sourceRoot":"","sources":["../../src/EmojiSheetModule.types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import type { EmojiSheetViewProps } from './EmojiSheetModule.types';
2
- export default function EmojiSheetView({ onEmojiSelected, onDismiss, theme, translations, layoutDirection, categoryBarPosition, columns, emojiSize, recentLimit, showSearch, showRecents, enableSkinTones, enableHaptics, enableAnimations, excludeEmojis, ...rest }: EmojiSheetViewProps): import("react/jsx-runtime").JSX.Element;
2
+ export default function EmojiSheetView({ onEmojiSelected, onDismiss, onOpen, theme, translations, layoutDirection, categoryBarPosition, columns, emojiSize, recentLimit, showSearch, showRecents, enableSkinTones, enableHaptics, enableAnimations, excludeEmojis, ...rest }: EmojiSheetViewProps): import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=EmojiSheetView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmojiSheetView.d.ts","sourceRoot":"","sources":["../../src/EmojiSheetView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAKlC,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,eAAe,EACf,SAAS,EACT,KAAK,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,GAAG,IAAI,EACR,EAAE,mBAAmB,2CA+BrB"}
1
+ {"version":3,"file":"EmojiSheetView.d.ts","sourceRoot":"","sources":["../../src/EmojiSheetView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAKlC,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,eAAe,EACf,SAAS,EACT,MAAM,EACN,KAAK,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,GAAG,IAAI,EACR,EAAE,mBAAmB,2CAgCrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-native-sheet-emojis",
3
- "version": "1.9.0",
3
+ "version": "2.0.1",
4
4
  "description": "A fully native emoji picker bottom sheet for React Native. Built with Swift and Kotlin for maximum performance. Features search with multilingual keywords, skin tones, frequently used tracking, theming, and configurable layout.",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -66,7 +66,10 @@
66
66
  "lib/",
67
67
  "src/",
68
68
  "ios/",
69
- "android/src/",
69
+ "android/src/main/java/",
70
+ "android/src/main/res/",
71
+ "android/src/main/AndroidManifest.xml",
72
+ "android/src/main/assets/emojis.json",
70
73
  "android/build.gradle",
71
74
  "translations/",
72
75
  "app.plugin.js",
@@ -41,42 +41,58 @@ const withEmojiSheet = (config, props) => {
41
41
  if (searchLocales.length === 0) {
42
42
  return config;
43
43
  }
44
- // iOS: Copy locale files to ios/<projectName>/translations/
45
- config = (0, config_plugins_1.withDangerousMod)(config, [
46
- 'ios',
47
- (config) => {
48
- copyLocaleFiles(config, 'ios', searchLocales);
44
+ // iOS: Add locale files directly to the Xcode project's Copy Bundle Resources phase.
45
+ // This avoids the pod-install-time limitation of s.resources glob evaluation —
46
+ // files are added to the .xcodeproj by prebuild and survive without re-running pod install.
47
+ config = (0, config_plugins_1.withXcodeProject)(config, (config) => {
48
+ const project = config.modResults;
49
+ const projectRoot = config.modRequest.projectRoot;
50
+ const packageTranslationsDir = path.resolve(projectRoot, 'node_modules', 'expo-native-sheet-emojis', 'translations');
51
+ if (!fs.existsSync(packageTranslationsDir)) {
52
+ console.warn('[expo-native-sheet-emojis] translations/ directory not found in package.');
49
53
  return config;
50
- },
51
- ]);
52
- // Android: Copy locale files to android/app/src/main/assets/translations/
54
+ }
55
+ const target = project.getFirstTarget();
56
+ if (!target)
57
+ return config;
58
+ // addResourceFile crashes when no PBXGroup named 'Resources' exists (common in
59
+ // Expo-generated projects). ensureGroupRecursively creates it if absent — this is
60
+ // exactly how expo-asset's own config plugin handles the same situation.
61
+ config_plugins_1.IOSConfig.XcodeUtils.ensureGroupRecursively(project, 'Resources');
62
+ for (const locale of searchLocales) {
63
+ const absolutePath = path.join(packageTranslationsDir, `${locale}.json`);
64
+ if (!fs.existsSync(absolutePath)) {
65
+ console.warn(`[expo-native-sheet-emojis] Translation file not found for locale: ${locale}`);
66
+ continue;
67
+ }
68
+ // Path relative to ios/ where the .xcodeproj lives.
69
+ // Xcode copies this file into the app bundle at build time.
70
+ const relativePath = `../node_modules/expo-native-sheet-emojis/translations/${locale}.json`;
71
+ project.addResourceFile(relativePath, { target: target.uuid });
72
+ }
73
+ return config;
74
+ });
75
+ // Android: Copy locale files to the module's assets directory.
76
+ // Note: the module's Gradle copyTranslations task copies all locales at build time for
77
+ // bare React Native projects. For Expo managed workflow this plugin runs first and
78
+ // the Gradle task supplements with any remaining locales.
53
79
  config = (0, config_plugins_1.withDangerousMod)(config, [
54
80
  'android',
55
81
  (config) => {
56
- copyLocaleFiles(config, 'android', searchLocales);
82
+ copyAndroidLocaleFiles(config, searchLocales);
57
83
  return config;
58
84
  },
59
85
  ]);
60
86
  return config;
61
87
  };
62
- function copyLocaleFiles(config, platform, locales) {
88
+ function copyAndroidLocaleFiles(config, locales) {
63
89
  const projectRoot = config.modRequest.projectRoot;
64
- // Find the translations directory in the npm package
65
90
  const packageTranslationsDir = path.resolve(projectRoot, 'node_modules', 'expo-native-sheet-emojis', 'translations');
66
91
  if (!fs.existsSync(packageTranslationsDir)) {
67
- console.warn('[expo-native-sheet-emojis] translations/ directory not found in package. Run the build-emoji-translations script first.');
92
+ console.warn('[expo-native-sheet-emojis] translations/ directory not found in package.');
68
93
  return;
69
94
  }
70
- let targetDir;
71
- if (platform === 'ios') {
72
- // For iOS, copy into the module's bundle resources
73
- // The podspec includes translations/*.json, so we copy to the pod's source
74
- targetDir = path.resolve(projectRoot, 'node_modules', 'expo-native-sheet-emojis', 'ios', 'translations');
75
- }
76
- else {
77
- // For Android, copy into the module's assets
78
- targetDir = path.resolve(projectRoot, 'node_modules', 'expo-native-sheet-emojis', 'android', 'src', 'main', 'assets', 'translations');
79
- }
95
+ const targetDir = path.resolve(projectRoot, 'node_modules', 'expo-native-sheet-emojis', 'android', 'src', 'main', 'assets', 'translations');
80
96
  fs.mkdirSync(targetDir, { recursive: true });
81
97
  for (const locale of locales) {
82
98
  const sourceFile = path.join(packageTranslationsDir, `${locale}.json`);
@@ -56,7 +56,7 @@ function flattenOptions(options: EmojiSheetPresentOptions): NativeOptions {
56
56
  return flat;
57
57
  }
58
58
 
59
- declare class EmojiSheetModuleType extends NativeModule {
59
+ declare class EmojiSheetModuleType extends NativeModule<{ onSheetOpened: () => void }> {
60
60
  present(options: NativeOptions): Promise<EmojiSheetResult>;
61
61
  dismiss(): Promise<void>;
62
62
  clearRecents(): Promise<void>;
@@ -69,7 +69,20 @@ export type { EmojiSheetResult };
69
69
 
70
70
  export default {
71
71
  present(options: EmojiSheetPresentOptions = {}): Promise<EmojiSheetResult> {
72
- return NativeEmojiSheet.present(flattenOptions(options));
72
+ let subscription: ReturnType<typeof NativeEmojiSheet.addListener> | null = null;
73
+
74
+ if (options.onOpen) {
75
+ subscription = NativeEmojiSheet.addListener('onSheetOpened', () => {
76
+ options.onOpen!();
77
+ subscription?.remove();
78
+ subscription = null;
79
+ });
80
+ }
81
+
82
+ return NativeEmojiSheet.present(flattenOptions(options)).finally(() => {
83
+ subscription?.remove();
84
+ subscription = null;
85
+ });
73
86
  },
74
87
  dismiss(): Promise<void> {
75
88
  return NativeEmojiSheet.dismiss();
@@ -52,17 +52,19 @@ export type EmojiSheetPresentOptions = {
52
52
  gestureEnabled?: boolean;
53
53
  backdropOpacity?: number;
54
54
  excludeEmojis?: string[];
55
+ onOpen?: () => void;
55
56
  };
56
57
 
57
58
  export type EmojiSheetResult =
58
- | { emoji: string; cancelled?: never }
59
- | { cancelled: true; emoji?: never };
59
+ | { emoji: string; name: string; id: string; cancelled?: never }
60
+ | { cancelled: true; emoji?: never; name?: never; id?: never };
60
61
 
61
- export type EmojiSelectionListener = (event: { nativeEvent: { emoji: string } }) => void;
62
+ export type EmojiSelectionListener = (event: { nativeEvent: { emoji: string; name: string; id: string } }) => void;
62
63
 
63
64
  export type EmojiSheetViewProps = ViewProps & {
64
- onEmojiSelected: (emoji: string) => void;
65
+ onEmojiSelected: (emoji: string, name: string, id: string) => void;
65
66
  onDismiss?: () => void;
67
+ onOpen?: () => void;
66
68
  theme?: EmojiSheetTheme | 'dark' | 'light' | 'system';
67
69
  translations?: EmojiSheetTranslations;
68
70
  layoutDirection?: 'ltr' | 'rtl' | 'auto';
@@ -81,6 +83,7 @@ export type EmojiSheetViewProps = ViewProps & {
81
83
  export type EmojiSheetNativeViewProps = ViewProps & {
82
84
  onEmojiSelected: EmojiSelectionListener;
83
85
  onDismiss?: (event: { nativeEvent: {} }) => void;
86
+ onOpen?: (event: { nativeEvent: {} }) => void;
84
87
  theme?: string;
85
88
  layoutDirection?: 'ltr' | 'rtl' | 'auto';
86
89
  categoryBarPosition?: string;