expo-native-sheet-emojis 1.2.1 → 1.4.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 (30) hide show
  1. package/README.md +18 -3
  2. package/android/src/main/java/expo/community/modules/emojisheet/EmojiGridAdapter.kt +6 -2
  3. package/android/src/main/java/expo/community/modules/emojisheet/EmojiSheetContentView.kt +4 -0
  4. package/android/src/main/java/expo/community/modules/emojisheet/EmojiSheetModule.kt +33 -2
  5. package/android/src/main/java/expo/community/modules/emojisheet/EmojiSheetUIView.kt +6 -1
  6. package/android/src/main/java/expo/community/modules/emojisheet/EmojiSkinTonePicker.kt +5 -1
  7. package/ios/EmojiGridView.swift +12 -0
  8. package/ios/EmojiSheetContentView.swift +4 -0
  9. package/ios/EmojiSheetModule.podspec +1 -1
  10. package/ios/EmojiSheetModule.swift +34 -2
  11. package/ios/EmojiSheetUIView.swift +3 -0
  12. package/ios/EmojiSkinTonePicker.swift +4 -0
  13. package/lib/commonjs/EmojiSheetModule.js +7 -0
  14. package/lib/commonjs/EmojiSheetModule.js.map +1 -1
  15. package/lib/commonjs/EmojiSheetView.js +2 -0
  16. package/lib/commonjs/EmojiSheetView.js.map +1 -1
  17. package/lib/module/EmojiSheetModule.js +7 -0
  18. package/lib/module/EmojiSheetModule.js.map +1 -1
  19. package/lib/module/EmojiSheetView.js +2 -0
  20. package/lib/module/EmojiSheetView.js.map +1 -1
  21. package/lib/typescript/EmojiSheetModule.d.ts +2 -0
  22. package/lib/typescript/EmojiSheetModule.d.ts.map +1 -1
  23. package/lib/typescript/EmojiSheetModule.types.d.ts +5 -2
  24. package/lib/typescript/EmojiSheetModule.types.d.ts.map +1 -1
  25. package/lib/typescript/EmojiSheetView.d.ts +1 -1
  26. package/lib/typescript/EmojiSheetView.d.ts.map +1 -1
  27. package/package.json +1 -1
  28. package/src/EmojiSheetModule.ts +9 -0
  29. package/src/EmojiSheetModule.types.ts +5 -2
  30. package/src/EmojiSheetView.tsx +2 -0
package/README.md CHANGED
@@ -285,6 +285,18 @@ Programmatically dismisses the emoji picker sheet.
285
285
 
286
286
  **Returns:** `Promise<void>`
287
287
 
288
+ ### EmojiSheetModule.clearRecents()
289
+
290
+ Clears all frequently used emoji data.
291
+
292
+ **Returns:** `Promise<void>`
293
+
294
+ ### EmojiSheetModule.clearSkinTonePreferences()
295
+
296
+ Clears all saved skin tone preferences.
297
+
298
+ **Returns:** `Promise<void>`
299
+
288
300
  ### EmojiSheetView
289
301
 
290
302
  A declarative React component that renders the emoji picker inline.
@@ -294,7 +306,7 @@ A declarative React component that renders the emoji picker inline.
294
306
  | Prop | Type | Default | Description |
295
307
  |-|-|-|-|
296
308
  | onEmojiSelected | `(emoji: string) => void` | required | Called when an emoji is tapped |
297
- | theme | `EmojiSheetTheme \| 'dark' \| 'light'` | `'light'` | Theme configuration |
309
+ | theme | `EmojiSheetTheme \| 'dark' \| 'light' \| 'system'` | `'light'` | Theme configuration |
298
310
  | translations | `EmojiSheetTranslations` | -- | Localized strings |
299
311
  | categoryBarPosition | `'top' \| 'bottom'` | `'top'` | Position of the category tab bar |
300
312
  | columns | `number` | `7` | Number of emoji columns in the grid |
@@ -303,6 +315,7 @@ A declarative React component that renders the emoji picker inline.
303
315
  | showSearch | `boolean` | `true` | Whether to show the search bar |
304
316
  | showRecents | `boolean` | `true` | Whether to show the frequently used section |
305
317
  | enableSkinTones | `boolean` | `true` | Whether to enable skin tone selection on long press |
318
+ | enableHaptics | `boolean` | `true` | Whether to trigger haptic feedback on emoji tap, long-press, and skin tone selection |
306
319
  | excludeEmojis | `string[]` | `[]` | Array of emoji IDs to exclude (e.g., `["pile_of_poo", "thumbs_down"]`) |
307
320
 
308
321
  ### EmojiSheetTheme
@@ -338,7 +351,7 @@ All theme fields with their purpose:
338
351
 
339
352
  | Field | Type | Default | Description |
340
353
  |-|-|-|-|
341
- | theme | `EmojiSheetTheme \| 'dark' \| 'light'` | `'light'` | Theme configuration |
354
+ | theme | `EmojiSheetTheme \| 'dark' \| 'light' \| 'system'` | `'light'` | Theme configuration |
342
355
  | translations | `EmojiSheetTranslations` | -- | Localized UI strings |
343
356
  | snapPoints | `[number, number]` | `[0.5, 1.0]` | Bottom sheet snap points as screen fractions |
344
357
  | categoryBarPosition | `'top' \| 'bottom'` | `'top'` | Position of the category tab bar |
@@ -348,6 +361,7 @@ All theme fields with their purpose:
348
361
  | showSearch | `boolean` | `true` | Show the search bar |
349
362
  | showRecents | `boolean` | `true` | Show the frequently used section |
350
363
  | enableSkinTones | `boolean` | `true` | Enable skin tone long-press |
364
+ | enableHaptics | `boolean` | `true` | Haptic feedback on tap, long-press, and skin tone select |
351
365
  | gestureEnabled | `boolean` | `true` | Allow swipe-to-dismiss gesture |
352
366
  | backdropOpacity | `number` | `0.22` | Opacity of the backdrop behind the sheet |
353
367
  | excludeEmojis | `string[]` | `[]` | Emoji IDs to hide from the picker |
@@ -375,7 +389,7 @@ Set via `categoryBarPosition: 'top'` or `categoryBarPosition: 'bottom'` in the o
375
389
 
376
390
  | Prop | Type | Default | Description |
377
391
  |-|-|-|-|
378
- | theme | `EmojiSheetTheme \| 'dark' \| 'light'` | `'light'` | Visual theme |
392
+ | theme | `EmojiSheetTheme \| 'dark' \| 'light' \| 'system'` | `'light'` | Visual theme |
379
393
  | translations | `EmojiSheetTranslations` | -- | Localized strings |
380
394
  | snapPoints | `[number, number]` | `[0.5, 1.0]` | Sheet snap points |
381
395
  | categoryBarPosition | `'top' \| 'bottom'` | `'top'` | Category bar placement |
@@ -385,6 +399,7 @@ Set via `categoryBarPosition: 'top'` or `categoryBarPosition: 'bottom'` in the o
385
399
  | showSearch | `boolean` | `true` | Show search bar |
386
400
  | showRecents | `boolean` | `true` | Show recents section |
387
401
  | enableSkinTones | `boolean` | `true` | Skin tone long-press |
402
+ | enableHaptics | `boolean` | `true` | Haptic feedback on interactions |
388
403
  | excludeEmojis | `string[]` | `[]` | Emoji IDs to exclude |
389
404
  | gestureEnabled | `boolean` | `true` | Swipe to dismiss |
390
405
  | backdropOpacity | `number` | `0.22` | Backdrop opacity |
@@ -25,6 +25,7 @@ class EmojiGridAdapter(
25
25
  var spanCount: Int = 7
26
26
  var emojiTextSize: Float = 32f
27
27
  var enableSkinTones: Boolean = true
28
+ var enableHaptics: Boolean = true
28
29
 
29
30
  sealed class ListItem {
30
31
  data class Header(val title: String, val categoryKey: String) : ListItem()
@@ -114,11 +115,14 @@ class EmojiGridAdapter(
114
115
  // Prevent theme text color from washing out color emojis
115
116
  h.textView.setTextColor(Color.BLACK)
116
117
  h.textView.alpha = 1.0f
117
- h.container.setOnClickListener {
118
+ h.container.setOnClickListener { view ->
119
+ if (enableHaptics) {
120
+ view.performHapticFeedback(android.view.HapticFeedbackConstants.KEYBOARD_TAP)
121
+ }
118
122
  onEmojiClick(item.emoji, item.id)
119
123
  }
120
124
  if (item.toneEnabled && enableSkinTones) {
121
- h.container.setOnLongClickListener {
125
+ h.container.setOnLongClickListener { view ->
122
126
  onEmojiLongPress(h.container, item.emoji, item.id)
123
127
  true
124
128
  }
@@ -63,6 +63,10 @@ class EmojiSheetContentView(
63
63
  pickerView.enableSkinTones = enable
64
64
  }
65
65
 
66
+ fun updateEnableHaptics(enable: Boolean) {
67
+ pickerView.enableHaptics = enable
68
+ }
69
+
66
70
  fun updateSearchPlaceholder(text: String) {
67
71
  pickerView.searchPlaceholder = text
68
72
  }
@@ -51,9 +51,27 @@ class EmojiSheetModule : Module() {
51
51
  }
52
52
  }
53
53
 
54
+ AsyncFunction("clearRecents") {
55
+ appContext.reactContext
56
+ ?.getSharedPreferences("emoji_sheet_frequently_used", android.content.Context.MODE_PRIVATE)
57
+ ?.edit()?.clear()?.apply()
58
+ }
59
+
60
+ AsyncFunction("clearSkinTonePreferences") {
61
+ appContext.reactContext
62
+ ?.getSharedPreferences("emoji_sheet_skin_tones", android.content.Context.MODE_PRIVATE)
63
+ ?.edit()?.clear()?.apply()
64
+ }
65
+
54
66
  View(EmojiSheetContentView::class) {
55
67
  Prop("theme") { view: EmojiSheetContentView, theme: String? ->
56
- view.updateTheme(theme ?: "light")
68
+ val resolved = if (theme == "system") {
69
+ val uiMode = view.context.resources.configuration.uiMode and android.content.res.Configuration.UI_MODE_NIGHT_MASK
70
+ if (uiMode == android.content.res.Configuration.UI_MODE_NIGHT_YES) "dark" else "light"
71
+ } else {
72
+ theme ?: "light"
73
+ }
74
+ view.updateTheme(resolved)
57
75
  }
58
76
  Prop("categoryBarPosition") { view: EmojiSheetContentView, position: String? ->
59
77
  view.updateCategoryBarPosition(position ?: "top")
@@ -76,6 +94,9 @@ class EmojiSheetModule : Module() {
76
94
  Prop("enableSkinTones") { view: EmojiSheetContentView, enable: Boolean? ->
77
95
  view.updateEnableSkinTones(enable ?: true)
78
96
  }
97
+ Prop("enableHaptics") { view: EmojiSheetContentView, enable: Boolean? ->
98
+ view.updateEnableHaptics(enable ?: true)
99
+ }
79
100
  Prop("searchPlaceholder") { view: EmojiSheetContentView, text: String? ->
80
101
  if (text != null) view.updateSearchPlaceholder(text)
81
102
  }
@@ -94,7 +115,15 @@ class EmojiSheetModule : Module() {
94
115
 
95
116
  private fun presentSheet(options: Map<String, Any>, promise: Promise) {
96
117
  val activity = appContext.currentActivity ?: return
97
- val isDark = options["theme"] == "dark"
118
+ val themeString = options["theme"] as? String ?: "light"
119
+ val isDark = when (themeString) {
120
+ "dark" -> true
121
+ "system" -> {
122
+ val uiMode = activity.resources.configuration.uiMode and android.content.res.Configuration.UI_MODE_NIGHT_MASK
123
+ uiMode == android.content.res.Configuration.UI_MODE_NIGHT_YES
124
+ }
125
+ else -> false
126
+ }
98
127
  val density = activity.resources.displayMetrics.density
99
128
 
100
129
  // Parse new options
@@ -105,6 +134,7 @@ class EmojiSheetModule : Module() {
105
134
  val showSearch = options["showSearch"] as? Boolean ?: true
106
135
  val showRecents = options["showRecents"] as? Boolean ?: true
107
136
  val enableSkinTones = options["enableSkinTones"] as? Boolean ?: true
137
+ val enableHaptics = options["enableHaptics"] as? Boolean ?: true
108
138
  val recentLimit = (options["recentLimit"] as? Number)?.toInt() ?: 30
109
139
  val gestureEnabled = options["gestureEnabled"] as? Boolean ?: true
110
140
  val backdropOpacity = (options["backdropOpacity"] as? Number)?.toFloat() ?: if (isDark) 0.4f else 0.22f
@@ -164,6 +194,7 @@ class EmojiSheetModule : Module() {
164
194
  pickerView.showSearch = showSearch
165
195
  pickerView.showRecents = showRecents
166
196
  pickerView.enableSkinTones = enableSkinTones
197
+ pickerView.enableHaptics = enableHaptics
167
198
  pickerView.recentLimit = recentLimit
168
199
  pickerView.categoryBarPosition = categoryBarPosition
169
200
  pickerView.categoryNames = categoryNames
@@ -79,6 +79,7 @@ class EmojiSheetUIView(context: Context) : LinearLayout(context) {
79
79
  var showSearch: Boolean = true
80
80
  var showRecents: Boolean = true
81
81
  var enableSkinTones: Boolean = true
82
+ var enableHaptics: Boolean = true
82
83
  var recentLimit: Int = 30
83
84
  var categoryBarPosition: String = "top"
84
85
  var categoryNames: Map<String, String>? = null
@@ -280,6 +281,7 @@ class EmojiSheetUIView(context: Context) : LinearLayout(context) {
280
281
  gridAdapter.spanCount = columns
281
282
  gridAdapter.emojiTextSize = emojiSize
282
283
  gridAdapter.enableSkinTones = enableSkinTones
284
+ gridAdapter.enableHaptics = enableHaptics
283
285
  gridLayoutManager.spanCount = columns
284
286
 
285
287
  // Show/hide search
@@ -612,8 +614,11 @@ class EmojiSheetUIView(context: Context) : LinearLayout(context) {
612
614
 
613
615
  private fun showSkinTonePicker(anchorView: View, baseEmoji: String, emojiId: String) {
614
616
  if (!enableSkinTones) return
617
+ if (enableHaptics) {
618
+ anchorView.performHapticFeedback(android.view.HapticFeedbackConstants.LONG_PRESS)
619
+ }
615
620
  val originalBase = findBaseEmoji(emojiId) ?: baseEmoji
616
- val picker = EmojiSkinTonePicker(context, currentTheme) { selectedEmoji ->
621
+ val picker = EmojiSkinTonePicker(context, currentTheme, enableHaptics) { selectedEmoji ->
617
622
  trackFrequentlyUsed(emojiId)
618
623
  refreshVisibleItemsAfterUsage()
619
624
  val name = findEmojiName(emojiId) ?: ""
@@ -17,6 +17,7 @@ import androidx.appcompat.widget.AppCompatTextView
17
17
  class EmojiSkinTonePicker(
18
18
  private val context: Context,
19
19
  private val theme: EmojiSheetTheme,
20
+ private val enableHaptics: Boolean = true,
20
21
  private val onToneSelected: (emoji: String) -> Unit
21
22
  ) {
22
23
  companion object {
@@ -95,7 +96,10 @@ class EmojiSkinTonePicker(
95
96
  // Set click listeners now that popup exists
96
97
  for (i in 0 until container.childCount) {
97
98
  val (variantEmoji, toneCodePoint) = variants[i]
98
- (container.getChildAt(i) as View).setOnClickListener {
99
+ (container.getChildAt(i) as View).setOnClickListener { view ->
100
+ if (enableHaptics) {
101
+ view.performHapticFeedback(android.view.HapticFeedbackConstants.KEYBOARD_TAP)
102
+ }
99
103
  if (toneCodePoint != -1) {
100
104
  saveTone(context, emojiId, toneCodePoint)
101
105
  } else {
@@ -19,6 +19,10 @@ class EmojiGridView: UIView, UICollectionViewDataSource, UICollectionViewDelegat
19
19
  didSet { if cellHeight != oldValue { rebuildLayout() } }
20
20
  }
21
21
  var enableSkinTones: Bool = true
22
+ var enableHaptics: Bool = true
23
+
24
+ private lazy var selectionFeedback = UISelectionFeedbackGenerator()
25
+ private lazy var impactFeedbackMedium = UIImpactFeedbackGenerator(style: .medium)
22
26
 
23
27
  private var sections: [EmojiSection] = []
24
28
  private var categoryNames: [String: String] = [:]
@@ -231,6 +235,9 @@ class EmojiGridView: UIView, UICollectionViewDataSource, UICollectionViewDelegat
231
235
  // MARK: - UICollectionViewDelegate
232
236
 
233
237
  func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
238
+ if enableHaptics {
239
+ selectionFeedback.selectionChanged()
240
+ }
234
241
  let item = sections[indexPath.section].data[indexPath.item]
235
242
  var emoji = item.emoji
236
243
  if item.toneEnabled, let savedTone = UserDefaults.standard.string(forKey: "EmojiSkinTone_\(item.id)") {
@@ -329,11 +336,16 @@ class EmojiGridView: UIView, UICollectionViewDataSource, UICollectionViewDelegat
329
336
  guard let cell = collectionView.cellForItem(at: indexPath) else { return }
330
337
  let cellFrameInSelf = collectionView.convert(cell.frame, to: self)
331
338
 
339
+ if enableHaptics {
340
+ impactFeedbackMedium.impactOccurred()
341
+ }
342
+
332
343
  let picker = EmojiSkinTonePicker(
333
344
  baseEmoji: item.emoji,
334
345
  emojiId: item.id,
335
346
  theme: currentTheme
336
347
  )
348
+ picker.enableHaptics = enableHaptics
337
349
  picker.onEmojiSelected = { [weak self] emoji, modifier in
338
350
  guard let self = self else { return }
339
351
  if let modifier = modifier {
@@ -73,6 +73,10 @@ class EmojiSheetContentView: ExpoView, EmojiSheetUIViewDelegate {
73
73
  pickerView.enableSkinTones = enable
74
74
  }
75
75
 
76
+ func updateEnableHaptics(_ enable: Bool) {
77
+ pickerView.enableHaptics = enable
78
+ }
79
+
76
80
  func updateSearchPlaceholder(_ text: String) {
77
81
  pickerView.searchPlaceholder = text
78
82
  }
@@ -1,6 +1,6 @@
1
1
  Pod::Spec.new do |s|
2
2
  s.name = 'EmojiSheetModule'
3
- s.version = '1.2.1'
3
+ s.version = '1.4.0'
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 = ''
@@ -23,9 +23,27 @@ public class EmojiSheetModule: Module {
23
23
  }
24
24
  .runOnQueue(DispatchQueue.main)
25
25
 
26
+ AsyncFunction("clearRecents") {
27
+ UserDefaults.standard.removeObject(forKey: "EmojiSheet_FrequentlyUsed")
28
+ }
29
+
30
+ AsyncFunction("clearSkinTonePreferences") {
31
+ let defaults = UserDefaults.standard
32
+ let allKeys = defaults.dictionaryRepresentation().keys
33
+ for key in allKeys where key.hasPrefix("EmojiSkinTone_") {
34
+ defaults.removeObject(forKey: key)
35
+ }
36
+ }
37
+
26
38
  View(EmojiSheetContentView.self) {
27
39
  Prop("theme") { (view, theme: String?) in
28
- view.updateTheme(theme ?? "light")
40
+ let resolved: String
41
+ if theme == "system" {
42
+ resolved = UITraitCollection.current.userInterfaceStyle == .dark ? "dark" : "light"
43
+ } else {
44
+ resolved = theme ?? "light"
45
+ }
46
+ view.updateTheme(resolved)
29
47
  }
30
48
  Prop("categoryBarPosition") { (view, position: String?) in
31
49
  view.updateCategoryBarPosition(position ?? "top")
@@ -48,6 +66,9 @@ public class EmojiSheetModule: Module {
48
66
  Prop("enableSkinTones") { (view, enable: Bool?) in
49
67
  view.updateEnableSkinTones(enable ?? true)
50
68
  }
69
+ Prop("enableHaptics") { (view, enable: Bool?) in
70
+ view.updateEnableHaptics(enable ?? true)
71
+ }
51
72
  Prop("searchPlaceholder") { (view, text: String?) in
52
73
  if let text { view.updateSearchPlaceholder(text) }
53
74
  }
@@ -75,7 +96,16 @@ public class EmojiSheetModule: Module {
75
96
  return
76
97
  }
77
98
 
78
- let isDark = (options["theme"] as? String) == "dark"
99
+ let themeString = options["theme"] as? String ?? "light"
100
+ let isDark: Bool
101
+ switch themeString {
102
+ case "dark":
103
+ isDark = true
104
+ case "system":
105
+ isDark = UITraitCollection.current.userInterfaceStyle == .dark
106
+ default:
107
+ isDark = false
108
+ }
79
109
 
80
110
  // Parse new options
81
111
  let snapPoints = (options["snapPoints"] as? [Double]) ?? [0.5, 1.0]
@@ -84,6 +114,7 @@ public class EmojiSheetModule: Module {
84
114
  let showSearch = (options["showSearch"] as? Bool) ?? true
85
115
  let showRecents = (options["showRecents"] as? Bool) ?? true
86
116
  let enableSkinTones = (options["enableSkinTones"] as? Bool) ?? true
117
+ let enableHaptics = (options["enableHaptics"] as? Bool) ?? true
87
118
  let recentLimit = (options["recentLimit"] as? Int) ?? 30
88
119
  let gestureEnabled = (options["gestureEnabled"] as? Bool) ?? true
89
120
  let backdropOpacity = options["backdropOpacity"] as? Double ?? (isDark ? 0.4 : 0.22)
@@ -148,6 +179,7 @@ public class EmojiSheetModule: Module {
148
179
  pickerView.showSearch = showSearch
149
180
  pickerView.showRecents = showRecents
150
181
  pickerView.enableSkinTones = enableSkinTones
182
+ pickerView.enableHaptics = enableHaptics
151
183
  pickerView.recentLimit = recentLimit
152
184
  pickerView.categoryBarPosition = categoryBarPosition
153
185
  pickerView.categoryNames = categoryNames
@@ -58,6 +58,9 @@ class EmojiSheetUIView: UIView,
58
58
  var enableSkinTones: Bool = true {
59
59
  didSet { gridView.enableSkinTones = enableSkinTones }
60
60
  }
61
+ var enableHaptics: Bool = true {
62
+ didSet { gridView.enableHaptics = enableHaptics }
63
+ }
61
64
  var recentLimit: Int = 30
62
65
  var categoryBarPosition: String = "top" {
63
66
  didSet { if categoryBarPosition != oldValue { configureLayout() } }
@@ -2,6 +2,7 @@ import UIKit
2
2
 
3
3
  class EmojiSkinTonePicker: UIView {
4
4
  var onEmojiSelected: ((_ emoji: String, _ modifier: String?) -> Void)?
5
+ var enableHaptics: Bool = true
5
6
 
6
7
  private let baseEmoji: String
7
8
  private let emojiId: String
@@ -94,6 +95,9 @@ class EmojiSkinTonePicker: UIView {
94
95
  }
95
96
 
96
97
  @objc private func buttonTapped(_ sender: UIButton) {
98
+ if enableHaptics {
99
+ UIImpactFeedbackGenerator(style: .light).impactOccurred()
100
+ }
97
101
  let tag = sender.tag
98
102
  if tag == 0 {
99
103
  // Base emoji, no modifier
@@ -48,6 +48,7 @@ function flattenOptions(options) {
48
48
  if (options.showSearch != null) flat.showSearch = options.showSearch;
49
49
  if (options.showRecents != null) flat.showRecents = options.showRecents;
50
50
  if (options.enableSkinTones != null) flat.enableSkinTones = options.enableSkinTones;
51
+ if (options.enableHaptics != null) flat.enableHaptics = options.enableHaptics;
51
52
  if (options.gestureEnabled != null) flat.gestureEnabled = options.gestureEnabled;
52
53
  if (options.backdropOpacity != null) flat.backdropOpacity = options.backdropOpacity;
53
54
  if (options.excludeEmojis) flat.excludeEmojis = options.excludeEmojis;
@@ -60,6 +61,12 @@ var _default = exports.default = {
60
61
  },
61
62
  dismiss() {
62
63
  return NativeEmojiSheet.dismiss();
64
+ },
65
+ clearRecents() {
66
+ return NativeEmojiSheet.clearRecents();
67
+ },
68
+ clearSkinTonePreferences() {
69
+ return NativeEmojiSheet.clearSkinTonePreferences();
63
70
  }
64
71
  };
65
72
  //# sourceMappingURL=EmojiSheetModule.js.map
@@ -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","snapPoints","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","gestureEnabled","backdropOpacity","excludeEmojis","NativeEmojiSheet","requireNativeModule","_default","exports","default","present","dismiss"],"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","snapPoints","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","enableHaptics","gestureEnabled","backdropOpacity","excludeEmojis","NativeEmojiSheet","requireNativeModule","_default","exports","default","present","dismiss","clearRecents","clearSkinTonePreferences"],"sourceRoot":"../../src","sources":["EmojiSheetModule.ts"],"mappings":"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","ignoreList":[]}
@@ -18,6 +18,7 @@ function EmojiSheetView({
18
18
  showSearch,
19
19
  showRecents,
20
20
  enableSkinTones,
21
+ enableHaptics,
21
22
  excludeEmojis,
22
23
  ...rest
23
24
  }) {
@@ -37,6 +38,7 @@ function EmojiSheetView({
37
38
  showSearch: showSearch,
38
39
  showRecents: showRecents,
39
40
  enableSkinTones: enableSkinTones,
41
+ enableHaptics: enableHaptics,
40
42
  excludeEmojis: excludeEmojis,
41
43
  searchPlaceholder: translations?.searchPlaceholder,
42
44
  noResultsText: translations?.noResultsText,
@@ -1 +1 @@
1
- {"version":3,"names":["_expo","require","_jsxRuntime","NativeView","requireNativeView","EmojiSheetView","onEmojiSelected","theme","translations","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","excludeEmojis","rest","resolvedTheme","jsx","searchPlaceholder","noResultsText","categoryNames","nativeEvent","emoji"],"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,KAAK;EACLC,YAAY;EACZC,mBAAmB;EACnBC,OAAO;EACPC,SAAS;EACTC,WAAW;EACXC,UAAU;EACVC,WAAW;EACXC,eAAe;EACfC,aAAa;EACb,GAAGC;AACgB,CAAC,EAAE;EACtB,MAAMC,aAAa,GAAG,OAAOX,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAGA,KAAK;;EAElE;EACA;EACA;;EAEA,oBACE,IAAAL,WAAA,CAAAiB,GAAA,EAAChB,UAAU;IAAA,GACLc,IAAI;IACRV,KAAK,EAAEW,aAAc;IACrBT,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;IAC7BI,iBAAiB,EAAEZ,YAAY,EAAEY,iBAAkB;IACnDC,aAAa,EAAEb,YAAY,EAAEa,aAAc;IAC3CC,aAAa,EAAEd,YAAY,EAAEc,aAAc;IAC3ChB,eAAe,EAAEA,CAAC;MAAEiB;IAAY,CAAC,KAAK;MACpCjB,eAAe,CAACiB,WAAW,CAACC,KAAK,CAAC;IACpC;EAAE,CACH,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"names":["_expo","require","_jsxRuntime","NativeView","requireNativeView","EmojiSheetView","onEmojiSelected","theme","translations","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","enableHaptics","excludeEmojis","rest","resolvedTheme","jsx","searchPlaceholder","noResultsText","categoryNames","nativeEvent","emoji"],"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,KAAK;EACLC,YAAY;EACZC,mBAAmB;EACnBC,OAAO;EACPC,SAAS;EACTC,WAAW;EACXC,UAAU;EACVC,WAAW;EACXC,eAAe;EACfC,aAAa;EACbC,aAAa;EACb,GAAGC;AACgB,CAAC,EAAE;EACtB,MAAMC,aAAa,GAAG,OAAOZ,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAGA,KAAK;;EAElE;EACA;EACA;;EAEA,oBACE,IAAAL,WAAA,CAAAkB,GAAA,EAACjB,UAAU;IAAA,GACLe,IAAI;IACRX,KAAK,EAAEY,aAAc;IACrBV,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,aAAa,EAAEA,aAAc;IAC7BI,iBAAiB,EAAEb,YAAY,EAAEa,iBAAkB;IACnDC,aAAa,EAAEd,YAAY,EAAEc,aAAc;IAC3CC,aAAa,EAAEf,YAAY,EAAEe,aAAc;IAC3CjB,eAAe,EAAEA,CAAC;MAAEkB;IAAY,CAAC,KAAK;MACpClB,eAAe,CAACkB,WAAW,CAACC,KAAK,CAAC;IACpC;EAAE,CACH,CAAC;AAEN","ignoreList":[]}
@@ -44,6 +44,7 @@ function flattenOptions(options) {
44
44
  if (options.showSearch != null) flat.showSearch = options.showSearch;
45
45
  if (options.showRecents != null) flat.showRecents = options.showRecents;
46
46
  if (options.enableSkinTones != null) flat.enableSkinTones = options.enableSkinTones;
47
+ if (options.enableHaptics != null) flat.enableHaptics = options.enableHaptics;
47
48
  if (options.gestureEnabled != null) flat.gestureEnabled = options.gestureEnabled;
48
49
  if (options.backdropOpacity != null) flat.backdropOpacity = options.backdropOpacity;
49
50
  if (options.excludeEmojis) flat.excludeEmojis = options.excludeEmojis;
@@ -56,6 +57,12 @@ export default {
56
57
  },
57
58
  dismiss() {
58
59
  return NativeEmojiSheet.dismiss();
60
+ },
61
+ clearRecents() {
62
+ return NativeEmojiSheet.clearRecents();
63
+ },
64
+ clearSkinTonePreferences() {
65
+ return NativeEmojiSheet.clearSkinTonePreferences();
59
66
  }
60
67
  };
61
68
  //# sourceMappingURL=EmojiSheetModule.js.map
@@ -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","snapPoints","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","gestureEnabled","backdropOpacity","excludeEmojis","NativeEmojiSheet","present","dismiss"],"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","snapPoints","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","enableHaptics","gestureEnabled","backdropOpacity","excludeEmojis","NativeEmojiSheet","present","dismiss","clearRecents","clearSkinTonePreferences"],"sourceRoot":"../../src","sources":["EmojiSheetModule.ts"],"mappings":"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","ignoreList":[]}
@@ -14,6 +14,7 @@ export default function EmojiSheetView({
14
14
  showSearch,
15
15
  showRecents,
16
16
  enableSkinTones,
17
+ enableHaptics,
17
18
  excludeEmojis,
18
19
  ...rest
19
20
  }) {
@@ -33,6 +34,7 @@ export default function EmojiSheetView({
33
34
  showSearch: showSearch,
34
35
  showRecents: showRecents,
35
36
  enableSkinTones: enableSkinTones,
37
+ enableHaptics: enableHaptics,
36
38
  excludeEmojis: excludeEmojis,
37
39
  searchPlaceholder: translations?.searchPlaceholder,
38
40
  noResultsText: translations?.noResultsText,
@@ -1 +1 @@
1
- {"version":3,"names":["requireNativeView","jsx","_jsx","NativeView","EmojiSheetView","onEmojiSelected","theme","translations","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","excludeEmojis","rest","resolvedTheme","searchPlaceholder","noResultsText","categoryNames","nativeEvent","emoji"],"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,KAAK;EACLC,YAAY;EACZC,mBAAmB;EACnBC,OAAO;EACPC,SAAS;EACTC,WAAW;EACXC,UAAU;EACVC,WAAW;EACXC,eAAe;EACfC,aAAa;EACb,GAAGC;AACgB,CAAC,EAAE;EACtB,MAAMC,aAAa,GAAG,OAAOX,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAGA,KAAK;;EAElE;EACA;EACA;;EAEA,oBACEJ,IAAA,CAACC,UAAU;IAAA,GACLa,IAAI;IACRV,KAAK,EAAEW,aAAc;IACrBT,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;IAC7BG,iBAAiB,EAAEX,YAAY,EAAEW,iBAAkB;IACnDC,aAAa,EAAEZ,YAAY,EAAEY,aAAc;IAC3CC,aAAa,EAAEb,YAAY,EAAEa,aAAc;IAC3Cf,eAAe,EAAEA,CAAC;MAAEgB;IAAY,CAAC,KAAK;MACpChB,eAAe,CAACgB,WAAW,CAACC,KAAK,CAAC;IACpC;EAAE,CACH,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"names":["requireNativeView","jsx","_jsx","NativeView","EmojiSheetView","onEmojiSelected","theme","translations","categoryBarPosition","columns","emojiSize","recentLimit","showSearch","showRecents","enableSkinTones","enableHaptics","excludeEmojis","rest","resolvedTheme","searchPlaceholder","noResultsText","categoryNames","nativeEvent","emoji"],"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,KAAK;EACLC,YAAY;EACZC,mBAAmB;EACnBC,OAAO;EACPC,SAAS;EACTC,WAAW;EACXC,UAAU;EACVC,WAAW;EACXC,eAAe;EACfC,aAAa;EACbC,aAAa;EACb,GAAGC;AACgB,CAAC,EAAE;EACtB,MAAMC,aAAa,GAAG,OAAOZ,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAGA,KAAK;;EAElE;EACA;EACA;;EAEA,oBACEJ,IAAA,CAACC,UAAU;IAAA,GACLc,IAAI;IACRX,KAAK,EAAEY,aAAc;IACrBV,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,aAAa,EAAEA,aAAc;IAC7BG,iBAAiB,EAAEZ,YAAY,EAAEY,iBAAkB;IACnDC,aAAa,EAAEb,YAAY,EAAEa,aAAc;IAC3CC,aAAa,EAAEd,YAAY,EAAEc,aAAc;IAC3ChB,eAAe,EAAEA,CAAC;MAAEiB;IAAY,CAAC,KAAK;MACpCjB,eAAe,CAACiB,WAAW,CAACC,KAAK,CAAC;IACpC;EAAE,CACH,CAAC;AAEN","ignoreList":[]}
@@ -3,6 +3,8 @@ export type { EmojiSheetResult };
3
3
  declare const _default: {
4
4
  present(options?: EmojiSheetPresentOptions): Promise<EmojiSheetResult>;
5
5
  dismiss(): Promise<void>;
6
+ clearRecents(): Promise<void>;
7
+ clearSkinTonePreferences(): Promise<void>;
6
8
  };
7
9
  export default _default;
8
10
  //# sourceMappingURL=EmojiSheetModule.d.ts.map
@@ -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;AA6D5G,YAAY,EAAE,gBAAgB,EAAE,CAAC;;sBAGd,wBAAwB,GAAQ,OAAO,CAAC,gBAAgB,CAAC;eAG/D,OAAO,CAAC,IAAI,CAAC;;AAJ1B,wBAOE"}
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;AAgE5G,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"}
@@ -22,7 +22,7 @@ export type EmojiSheetTranslations = {
22
22
  categoryNames?: Partial<Record<EmojiCategory, string>>;
23
23
  };
24
24
  export type EmojiSheetPresentOptions = {
25
- theme?: EmojiSheetTheme | 'dark' | 'light';
25
+ theme?: EmojiSheetTheme | 'dark' | 'light' | 'system';
26
26
  translations?: EmojiSheetTranslations;
27
27
  snapPoints?: [number, number];
28
28
  categoryBarPosition?: 'top' | 'bottom';
@@ -32,6 +32,7 @@ export type EmojiSheetPresentOptions = {
32
32
  showSearch?: boolean;
33
33
  showRecents?: boolean;
34
34
  enableSkinTones?: boolean;
35
+ enableHaptics?: boolean;
35
36
  gestureEnabled?: boolean;
36
37
  backdropOpacity?: number;
37
38
  excludeEmojis?: string[];
@@ -50,7 +51,7 @@ export type EmojiSelectionListener = (event: {
50
51
  }) => void;
51
52
  export type EmojiSheetViewProps = ViewProps & {
52
53
  onEmojiSelected: (emoji: string) => void;
53
- theme?: EmojiSheetTheme | 'dark' | 'light';
54
+ theme?: EmojiSheetTheme | 'dark' | 'light' | 'system';
54
55
  translations?: EmojiSheetTranslations;
55
56
  categoryBarPosition?: 'top' | 'bottom';
56
57
  columns?: number;
@@ -59,6 +60,7 @@ export type EmojiSheetViewProps = ViewProps & {
59
60
  showSearch?: boolean;
60
61
  showRecents?: boolean;
61
62
  enableSkinTones?: boolean;
63
+ enableHaptics?: boolean;
62
64
  excludeEmojis?: string[];
63
65
  };
64
66
  export type EmojiSheetNativeViewProps = ViewProps & {
@@ -71,6 +73,7 @@ export type EmojiSheetNativeViewProps = ViewProps & {
71
73
  showSearch?: boolean;
72
74
  showRecents?: boolean;
73
75
  enableSkinTones?: boolean;
76
+ enableHaptics?: boolean;
74
77
  searchPlaceholder?: string;
75
78
  noResultsText?: string;
76
79
  categoryNames?: Partial<Record<EmojiCategory, 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,CAAC;IAC3C,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,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,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,KAAK,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,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,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG;IAClD,eAAe,EAAE,sBAAsB,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,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,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, theme, translations, categoryBarPosition, columns, emojiSize, recentLimit, showSearch, showRecents, enableSkinTones, excludeEmojis, ...rest }: EmojiSheetViewProps): import("react/jsx-runtime").JSX.Element;
2
+ export default function EmojiSheetView({ onEmojiSelected, theme, translations, categoryBarPosition, columns, emojiSize, recentLimit, showSearch, showRecents, enableSkinTones, enableHaptics, 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,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,eAAe,EACf,aAAa,EACb,GAAG,IAAI,EACR,EAAE,mBAAmB,2CA2BrB"}
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,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,eAAe,EACf,aAAa,EACb,aAAa,EACb,GAAG,IAAI,EACR,EAAE,mBAAmB,2CA4BrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-native-sheet-emojis",
3
- "version": "1.2.1",
3
+ "version": "1.4.0",
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",
@@ -46,6 +46,7 @@ function flattenOptions(options: EmojiSheetPresentOptions): NativeOptions {
46
46
  if (options.showSearch != null) flat.showSearch = options.showSearch;
47
47
  if (options.showRecents != null) flat.showRecents = options.showRecents;
48
48
  if (options.enableSkinTones != null) flat.enableSkinTones = options.enableSkinTones;
49
+ if (options.enableHaptics != null) flat.enableHaptics = options.enableHaptics;
49
50
  if (options.gestureEnabled != null) flat.gestureEnabled = options.gestureEnabled;
50
51
  if (options.backdropOpacity != null) flat.backdropOpacity = options.backdropOpacity;
51
52
  if (options.excludeEmojis) flat.excludeEmojis = options.excludeEmojis;
@@ -56,6 +57,8 @@ function flattenOptions(options: EmojiSheetPresentOptions): NativeOptions {
56
57
  declare class EmojiSheetModuleType extends NativeModule {
57
58
  present(options: NativeOptions): Promise<EmojiSheetResult>;
58
59
  dismiss(): Promise<void>;
60
+ clearRecents(): Promise<void>;
61
+ clearSkinTonePreferences(): Promise<void>;
59
62
  }
60
63
 
61
64
  const NativeEmojiSheet = requireNativeModule<EmojiSheetModuleType>('EmojiSheet');
@@ -69,4 +72,10 @@ export default {
69
72
  dismiss(): Promise<void> {
70
73
  return NativeEmojiSheet.dismiss();
71
74
  },
75
+ clearRecents(): Promise<void> {
76
+ return NativeEmojiSheet.clearRecents();
77
+ },
78
+ clearSkinTonePreferences(): Promise<void> {
79
+ return NativeEmojiSheet.clearSkinTonePreferences();
80
+ },
72
81
  };
@@ -36,7 +36,7 @@ export type EmojiSheetTranslations = {
36
36
  };
37
37
 
38
38
  export type EmojiSheetPresentOptions = {
39
- theme?: EmojiSheetTheme | 'dark' | 'light';
39
+ theme?: EmojiSheetTheme | 'dark' | 'light' | 'system';
40
40
  translations?: EmojiSheetTranslations;
41
41
  snapPoints?: [number, number];
42
42
  categoryBarPosition?: 'top' | 'bottom';
@@ -46,6 +46,7 @@ export type EmojiSheetPresentOptions = {
46
46
  showSearch?: boolean;
47
47
  showRecents?: boolean;
48
48
  enableSkinTones?: boolean;
49
+ enableHaptics?: boolean;
49
50
  gestureEnabled?: boolean;
50
51
  backdropOpacity?: number;
51
52
  excludeEmojis?: string[];
@@ -59,7 +60,7 @@ export type EmojiSelectionListener = (event: { nativeEvent: { emoji: string } })
59
60
 
60
61
  export type EmojiSheetViewProps = ViewProps & {
61
62
  onEmojiSelected: (emoji: string) => void;
62
- theme?: EmojiSheetTheme | 'dark' | 'light';
63
+ theme?: EmojiSheetTheme | 'dark' | 'light' | 'system';
63
64
  translations?: EmojiSheetTranslations;
64
65
  categoryBarPosition?: 'top' | 'bottom';
65
66
  columns?: number;
@@ -68,6 +69,7 @@ export type EmojiSheetViewProps = ViewProps & {
68
69
  showSearch?: boolean;
69
70
  showRecents?: boolean;
70
71
  enableSkinTones?: boolean;
72
+ enableHaptics?: boolean;
71
73
  excludeEmojis?: string[];
72
74
  };
73
75
 
@@ -81,6 +83,7 @@ export type EmojiSheetNativeViewProps = ViewProps & {
81
83
  showSearch?: boolean;
82
84
  showRecents?: boolean;
83
85
  enableSkinTones?: boolean;
86
+ enableHaptics?: boolean;
84
87
  searchPlaceholder?: string;
85
88
  noResultsText?: string;
86
89
  categoryNames?: Partial<Record<EmojiCategory, string>>;
@@ -19,6 +19,7 @@ export default function EmojiSheetView({
19
19
  showSearch,
20
20
  showRecents,
21
21
  enableSkinTones,
22
+ enableHaptics,
22
23
  excludeEmojis,
23
24
  ...rest
24
25
  }: EmojiSheetViewProps) {
@@ -39,6 +40,7 @@ export default function EmojiSheetView({
39
40
  showSearch={showSearch}
40
41
  showRecents={showRecents}
41
42
  enableSkinTones={enableSkinTones}
43
+ enableHaptics={enableHaptics}
42
44
  excludeEmojis={excludeEmojis}
43
45
  searchPlaceholder={translations?.searchPlaceholder}
44
46
  noResultsText={translations?.noResultsText}