vendor expo-ized emoji popup

This commit is contained in:
Samuel Newman
2025-04-26 23:59:58 +03:00
parent 544565e567
commit dc6029ac01
20 changed files with 293 additions and 24 deletions
@@ -0,0 +1,30 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json')))
Pod::Spec.new do |s|
s.name = 'EmojiPickerModule'
s.version = package['version']
s.summary = package['description']
s.description = package['description']
s.license = package['license']
s.author = package['author']
s.homepage = package['homepage']
s.platforms = {
:ios => '15.1',
:tvos => '15.1'
}
s.swift_version = '5.4'
s.source = { git: 'https://github.com/alanjhughes/expo-emoji-picker' }
s.static_framework = true
s.dependency 'ExpoModulesCore'
s.dependency 'MCEmojiPicker'
# Swift/Objective-C compatibility
s.pod_target_xcconfig = {
'DEFINES_MODULE' => 'YES',
}
s.source_files = "**/*.{h,m,mm,swift,hpp,cpp}"
end
@@ -0,0 +1,11 @@
import ExpoModulesCore
public class EmojiPickerModule: Module {
public func definition() -> ModuleDefinition {
Name("EmojiPicker")
View(EmojiPickerView.self) {
Events("onEmojiSelected")
}
}
}
@@ -0,0 +1,30 @@
import ExpoModulesCore
import WebKit
import MCEmojiPicker
class EmojiPickerView: ExpoView, MCEmojiPickerDelegate {
let onEmojiSelected = EventDispatcher()
override func layoutSubviews() {
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
self.addGestureRecognizer(tapGesture)
}
@objc func handleTap(_ gesture: UITapGestureRecognizer) {
presentEmojiPicker()
}
func presentEmojiPicker() {
let emojiPicker = MCEmojiPickerViewController()
let reactRootVC = reactViewController()
emojiPicker.sourceView = self
emojiPicker.delegate = self
reactRootVC?.present(emojiPicker, animated: true)
}
func didGetEmoji(emoji: String) {
onEmojiSelected([
"emoji": emoji
])
}
}